diff options
| -rw-r--r-- | indra/newview/lltransientdockablefloater.cpp | 24 | ||||
| -rw-r--r-- | indra/newview/lltransientfloatermgr.cpp | 4 | ||||
| -rw-r--r-- | indra/newview/lltransientfloatermgr.h | 2 | 
3 files changed, 20 insertions, 10 deletions
| diff --git a/indra/newview/lltransientdockablefloater.cpp b/indra/newview/lltransientdockablefloater.cpp index c9bfe178ce..9d39aa5182 100644 --- a/indra/newview/lltransientdockablefloater.cpp +++ b/indra/newview/lltransientdockablefloater.cpp @@ -48,6 +48,14 @@ LLTransientDockableFloater::LLTransientDockableFloater(LLDockControl* dockContro  LLTransientDockableFloater::~LLTransientDockableFloater()  {  	LLTransientFloaterMgr::getInstance()->unregisterTransientFloater(this); +	LLView* dock = getDockWidget(); +	LLTransientFloaterMgr::getInstance()->removeControlView( +			LLTransientFloaterMgr::DOCKED, this); +	if (dock != NULL) +	{ +		LLTransientFloaterMgr::getInstance()->removeControlView( +				LLTransientFloaterMgr::DOCKED, dock); +	}  }  void LLTransientDockableFloater::setVisible(BOOL visible) @@ -55,18 +63,18 @@ void LLTransientDockableFloater::setVisible(BOOL visible)  	LLView* dock = getDockWidget();  	if(visible && isDocked())  	{ -		LLTransientFloaterMgr::getInstance()->addControlView(this); +		LLTransientFloaterMgr::getInstance()->addControlView(LLTransientFloaterMgr::DOCKED, this);  		if (dock != NULL)  		{ -			LLTransientFloaterMgr::getInstance()->addControlView(dock); +			LLTransientFloaterMgr::getInstance()->addControlView(LLTransientFloaterMgr::DOCKED, dock);  		}  	}  	else  	{ -		LLTransientFloaterMgr::getInstance()->removeControlView(this); +		LLTransientFloaterMgr::getInstance()->removeControlView(LLTransientFloaterMgr::DOCKED, this);  		if (dock != NULL)  		{ -			LLTransientFloaterMgr::getInstance()->removeControlView(dock); +			LLTransientFloaterMgr::getInstance()->removeControlView(LLTransientFloaterMgr::DOCKED, dock);  		}  	} @@ -78,18 +86,18 @@ void LLTransientDockableFloater::setDocked(bool docked, bool pop_on_undock)  	LLView* dock = getDockWidget();  	if(docked)  	{ -		LLTransientFloaterMgr::getInstance()->addControlView(this); +		LLTransientFloaterMgr::getInstance()->addControlView(LLTransientFloaterMgr::DOCKED, this);  		if (dock != NULL)  		{ -			LLTransientFloaterMgr::getInstance()->addControlView(dock); +			LLTransientFloaterMgr::getInstance()->addControlView(LLTransientFloaterMgr::DOCKED, dock);  		}  	}  	else  	{ -		LLTransientFloaterMgr::getInstance()->removeControlView(this); +		LLTransientFloaterMgr::getInstance()->removeControlView(LLTransientFloaterMgr::DOCKED, this);  		if (dock != NULL)  		{ -			LLTransientFloaterMgr::getInstance()->removeControlView(dock); +			LLTransientFloaterMgr::getInstance()->removeControlView(LLTransientFloaterMgr::DOCKED, dock);  		}  	} diff --git a/indra/newview/lltransientfloatermgr.cpp b/indra/newview/lltransientfloatermgr.cpp index 8f1a738453..d82403070b 100644 --- a/indra/newview/lltransientfloatermgr.cpp +++ b/indra/newview/lltransientfloatermgr.cpp @@ -46,6 +46,7 @@ LLTransientFloaterMgr::LLTransientFloaterMgr()  			&LLTransientFloaterMgr::leftMouseClickCallback, this, _1, _2, _3));  	mGroupControls.insert(std::pair<ETransientGroup, std::set<LLView*> >(GLOBAL, std::set<LLView*>())); +	mGroupControls.insert(std::pair<ETransientGroup, std::set<LLView*> >(DOCKED, std::set<LLView*>()));  	mGroupControls.insert(std::pair<ETransientGroup, std::set<LLView*> >(IM, std::set<LLView*>()));  } @@ -132,7 +133,8 @@ void LLTransientFloaterMgr::leftMouseClickCallback(S32 x, S32 y,  		return;  	} -	bool hide = isControlClicked(mGroupControls.find(GLOBAL)->second, x, y); +	bool hide = isControlClicked(mGroupControls.find(DOCKED)->second, x, y) +			&& isControlClicked(mGroupControls.find(GLOBAL)->second, x, y);  	if (hide)  	{  		hideTransientFloaters(x, y); diff --git a/indra/newview/lltransientfloatermgr.h b/indra/newview/lltransientfloatermgr.h index 1f99325a7f..9c5ae295f2 100644 --- a/indra/newview/lltransientfloatermgr.h +++ b/indra/newview/lltransientfloatermgr.h @@ -51,7 +51,7 @@ protected:  public:  	enum ETransientGroup  	{ -		GLOBAL, IM +		GLOBAL, DOCKED, IM  	};  	void registerTransientFloater(LLTransientFloater* floater); | 
