diff options
| -rw-r--r-- | indra/newview/llpanellandmarkinfo.cpp | 6 | ||||
| -rw-r--r-- | indra/newview/llpanelpicks.cpp | 2 | ||||
| -rw-r--r-- | indra/newview/llpanelprofile.cpp | 16 | 
3 files changed, 23 insertions, 1 deletions
| diff --git a/indra/newview/llpanellandmarkinfo.cpp b/indra/newview/llpanellandmarkinfo.cpp index 87acd83b23..c57746ec00 100644 --- a/indra/newview/llpanellandmarkinfo.cpp +++ b/indra/newview/llpanellandmarkinfo.cpp @@ -180,6 +180,9 @@ void LLPanelLandmarkInfo::setInfoType(EInfoType type)  	populateFoldersList(); +	// Prevent the floater from losing focus (if the sidepanel is undocked). +	setFocus(TRUE); +  	LLPanelPlaceInfo::setInfoType(type);  } @@ -330,6 +333,9 @@ void LLPanelLandmarkInfo::toggleLandmarkEditMode(BOOL enabled)  		// when it was enabled/disabled we set the text once again.  		mNotesEditor->setText(mNotesEditor->getText());  	} + +	// Prevent the floater from losing focus (if the sidepanel is undocked). +	setFocus(TRUE);  }  const std::string& LLPanelLandmarkInfo::getLandmarkTitle() const diff --git a/indra/newview/llpanelpicks.cpp b/indra/newview/llpanelpicks.cpp index ccef563544..4f4b828cca 100644 --- a/indra/newview/llpanelpicks.cpp +++ b/indra/newview/llpanelpicks.cpp @@ -781,7 +781,7 @@ void LLPanelPicks::showAccordion(const std::string& name, bool show)  void LLPanelPicks::onPanelPickClose(LLPanel* panel)  { -	panel->setVisible(FALSE); +	getProfilePanel()->closePanel(panel);  }  void LLPanelPicks::onPanelPickSave(LLPanel* panel) diff --git a/indra/newview/llpanelprofile.cpp b/indra/newview/llpanelprofile.cpp index 4e63563979..6038ab20d8 100644 --- a/indra/newview/llpanelprofile.cpp +++ b/indra/newview/llpanelprofile.cpp @@ -217,6 +217,10 @@ void LLPanelProfile::setAllChildrenVisible(BOOL visible)  void LLPanelProfile::openPanel(LLPanel* panel, const LLSD& params)  { +	// Hide currently visible panel (STORM-690). +	setAllChildrenVisible(FALSE); + +	// Add the panel or bring it to front.  	if (panel->getParent() != this)  	{  		addChild(panel); @@ -243,6 +247,18 @@ void LLPanelProfile::closePanel(LLPanel* panel)  	if (panel->getParent() == this)   	{  		removeChild(panel); + +		// Make the underlying panel visible. +		const child_list_t* child_list = getChildList(); +		if (child_list->size() > 0) +		{ +			child_list->front()->setVisible(TRUE); +			child_list->front()->setFocus(TRUE); // prevent losing focus by the floater +		} +		else +		{ +			llwarns << "No underlying panel to make visible." << llendl; +		}  	}  } | 
