diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp index 9a498841d6..eccb72524c 100644 --- a/indra/newview/llfloaterpreference.cpp +++ b/indra/newview/llfloaterpreference.cpp @@ -2748,6 +2748,15 @@ void LLPanelPreferenceGrids::onClickDefault() } } +void LLPanelPreferenceGrids::onAddDoneCallback(std::string gridlabel) +{ + loadCurGrid(); + if(!gridlabel.empty()) { + m_GridCombo->setSelectedByValue(gridlabel,TRUE); + onSelectGrid(); + } +} + void LLPanelPreferenceGrids::onClickAdd() { std::string loginuri = getChild("loginuri",true)->getText(); @@ -2760,7 +2769,7 @@ void LLPanelPreferenceGrids::onClickAdd() grid_entry->grid = LLSD::emptyMap(); grid_entry->grid[GRID_VALUE] = loginuri; grid_entry->set_current = false; - grid_entry->mOnDoneCallback = boost::bind(&LLPanelPreferenceGrids::loadCurGrid, this); + grid_entry->mOnDoneCallback = boost::bind(&LLPanelPreferenceGrids::onAddDoneCallback, this, _1); LLGridManager::getInstance()->addGrid(grid_entry, LLGridManager::FETCH); } else { @@ -2836,6 +2845,7 @@ void LLPanelPreferenceGrids::loadCurGrid() LLGridManager::getInstance()->getGridData(mCurGrid, grid_info); if (mState != ADD_NEW) { + getChild("gridname", true)->setText(grid_info[GRID_LABEL_VALUE].asString()); getChild("loginuri",true)->setText(grid_info[GRID_LOGIN_URI_VALUE][0].asString()); getChild("loginpage",true)->setText(grid_info[GRID_LOGIN_PAGE_VALUE].asString()); @@ -2924,7 +2934,7 @@ void LLPanelPreferenceGrids::refresh() getChild("btn_delete", true)->setEnabled((selectIndex >= 0)); //getChild("btn_copy", true)->setEnabled((mState == NORMAL) && (selectIndex >= 0)); getChild("btn_default", true)->setEnabled((mState == NORMAL) && (selectIndex > 0)); - getChild("gridname", true)->setEnabled((mState == ADD_NEW) || (mState == ADD_COPY)); + getChild("gridname", true)->setEnabled((mState == ADD_NEW) || (mState == ADD_COPY)); /* old, todo if (LLGridManager::getInstance()->isInSLMain() || LLGridManager::getInstance()->isInSLBeta()) { diff --git a/indra/newview/llfloaterpreference.h b/indra/newview/llfloaterpreference.h index ed6a4a1893..1f079c9f2a 100644 --- a/indra/newview/llfloaterpreference.h +++ b/indra/newview/llfloaterpreference.h @@ -346,6 +346,7 @@ protected: void onClickAdvanced(); void onSelectGrid(); void onSelectPlatform(); + void onAddDoneCallback(std::string gridlabel); protected: LLComboBox* m_GridCombo; diff --git a/indra/newview/llviewernetwork.cpp b/indra/newview/llviewernetwork.cpp index e32468f83d..c476a2cad8 100644 --- a/indra/newview/llviewernetwork.cpp +++ b/indra/newview/llviewernetwork.cpp @@ -815,8 +815,12 @@ void LLGridManager::addGrid(GridEntry* grid_entry, AddState state) if (grid_entry) { + std::string gridlabel; + if(grid_entry->grid.has(GRID_LABEL_VALUE)) { + gridlabel = grid_entry->grid[GRID_LABEL_VALUE].asString(); + } if(!grid_entry->mOnDoneCallback.empty()) { - grid_entry->mOnDoneCallback(); + grid_entry->mOnDoneCallback(gridlabel); } delete grid_entry; grid_entry = NULL; diff --git a/indra/newview/llviewernetwork.h b/indra/newview/llviewernetwork.h index 0d6e0a6a07..2b59edc709 100644 --- a/indra/newview/llviewernetwork.h +++ b/indra/newview/llviewernetwork.h @@ -76,7 +76,7 @@ struct GridEntry LLXMLNodePtr info_root; bool set_current; std::string last_http_error; - boost::function mOnDoneCallback; + boost::function mOnDoneCallback; }; class LLInvalidGridName