diff options
Diffstat (limited to 'indra/newview')
| -rw-r--r-- | indra/newview/llpaneltopinfobar.cpp | 23 | ||||
| -rw-r--r-- | indra/newview/llpaneltopinfobar.h | 5 | 
2 files changed, 28 insertions, 0 deletions
| diff --git a/indra/newview/llpaneltopinfobar.cpp b/indra/newview/llpaneltopinfobar.cpp index 68dc1cdf71..e73d1fb7c2 100644 --- a/indra/newview/llpaneltopinfobar.cpp +++ b/indra/newview/llpaneltopinfobar.cpp @@ -161,6 +161,8 @@ BOOL LLPanelTopInfoBar::postBuild()  	mParcelMgrConnection = LLViewerParcelMgr::getInstance()->addAgentParcelChangedCallback(  			boost::bind(&LLPanelTopInfoBar::onAgentParcelChange, this)); +	setVisibleCallback(boost::bind(&LLPanelTopInfoBar::onVisibilityChange, this, _2)); +  	return TRUE;  } @@ -174,6 +176,27 @@ void LLPanelTopInfoBar::onNavBarShowParcelPropertiesCtrlChanged()  	setParcelInfoText(new_text);  } +// when panel is shown, all minimized floaters should be shifted downwards to prevent overlapping of +// PanelTopInfoBar. See EXT-7951. +void LLPanelTopInfoBar::onVisibilityChange(const LLSD& show) +{ +	// this height is used as a vertical offset for ALREADY MINIMIZED floaters +	// when PanelTopInfoBar visibility changes +	S32 height = getRect().getHeight(); + +	// this vertical offset is used for a start minimize position of floaters that +	// are NOT MIMIMIZED YET +	S32 minimize_pos_offset = 0; + +	if (show.asBoolean()) +	{ +		height = minimize_pos_offset = -height; +	} + +	gFloaterView->shiftFloaters(0, height); +	gFloaterView->setMinimizePositionVerticalOffset(minimize_pos_offset); +} +  void LLPanelTopInfoBar::draw()  {  	updateParcelInfoText(); diff --git a/indra/newview/llpaneltopinfobar.h b/indra/newview/llpaneltopinfobar.h index 6e6fbc08ab..0603ee744f 100644 --- a/indra/newview/llpaneltopinfobar.h +++ b/indra/newview/llpaneltopinfobar.h @@ -58,6 +58,11 @@ public:  	 */  	void handleLoginComplete(); +	/** +	 * Called when the top info bar gets shown or hidden +	 */ +	void onVisibilityChange(const LLSD& show); +  private:  	class LLParcelChangeObserver; | 
