diff options
Diffstat (limited to 'indra')
| -rw-r--r-- | indra/llui/llfloater.cpp | 11 | ||||
| -rw-r--r-- | indra/llui/llfloater.h | 1 | 
2 files changed, 11 insertions, 1 deletions
diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp index fb90cebd39..de3de53569 100644 --- a/indra/llui/llfloater.cpp +++ b/indra/llui/llfloater.cpp @@ -506,6 +506,7 @@ void LLFloater::enableResizeCtrls(bool enable, bool width, bool height)  void LLFloater::destroy()  { +	gFloaterView->onDestroyFloater(this);  	// LLFloaterReg should be synchronized with "dead" floater to avoid returning dead instance before  	// it was deleted via LLMortician::updateClass(). See EXT-8458.  	LLFloaterReg::removeInstance(mInstanceName, mKey); @@ -2572,7 +2573,7 @@ void LLFloaterView::bringToFront(LLFloater* child, BOOL give_focus, BOOL restore  		return;  	} -	if (mFrontChild && !mFrontChild->isDead() && mFrontChild->getVisible()) +	if (mFrontChild)  	{  		mFrontChild->goneFromFront();  	} @@ -3234,6 +3235,14 @@ void LLFloaterView::setToolbarRect(LLToolBarEnums::EToolBarLocation tb, const LL  	}  } +void LLFloaterView::onDestroyFloater(LLFloater* floater) +{ +    if (mFrontChild == floater) +    { +        mFrontChild = nullptr; +    } +} +  void LLFloater::setInstanceName(const std::string& name)  {  	if (name != mInstanceName) diff --git a/indra/llui/llfloater.h b/indra/llui/llfloater.h index 5f4e1a2cad..88f9e77777 100644 --- a/indra/llui/llfloater.h +++ b/indra/llui/llfloater.h @@ -607,6 +607,7 @@ public:  	LLFloater* getFrontmostClosableFloater();   	void setToolbarRect(LLToolBarEnums::EToolBarLocation tb, const LLRect& toolbar_rect); +	void onDestroyFloater(LLFloater* floater);  private:  	void hiddenFloaterClosed(LLFloater* floater);  | 
