diff options
Diffstat (limited to 'indra')
| -rw-r--r-- | indra/newview/llimfloater.cpp | 39 | ||||
| -rw-r--r-- | indra/newview/llimfloater.h | 4 | ||||
| -rw-r--r-- | indra/newview/llsidetray.cpp | 3 | ||||
| -rw-r--r-- | indra/newview/llsidetray.h | 4 | 
4 files changed, 46 insertions, 4 deletions
diff --git a/indra/newview/llimfloater.cpp b/indra/newview/llimfloater.cpp index 3aa9d75bc0..967f38bfd2 100644 --- a/indra/newview/llimfloater.cpp +++ b/indra/newview/llimfloater.cpp @@ -60,8 +60,14 @@  #include "llinventorymodel.h"  #include "llrootview.h"  #include "llspeakers.h" +#include "llsidetray.h" +static const S32 RECT_PADDING_NOT_INIT = -1; +static const S32 RECT_PADDING_NEED_RECALC = -2; + +S32 LLIMFloater::sAllowedRectRightPadding = RECT_PADDING_NOT_INIT; +  LLIMFloater::LLIMFloater(const LLUUID& session_id)    : LLTransientDockableFloater(NULL, true, session_id),  	mControlPanel(NULL), @@ -444,19 +450,44 @@ LLIMFloater* LLIMFloater::show(const LLUUID& session_id)  	return floater;  } +//static +bool LLIMFloater::resetAllowedRectPadding(const LLSD& newvalue) +{ +	//reset allowed rect right padding if "SidebarCameraMovement" option  +	//or sidebar state changed +	sAllowedRectRightPadding = RECT_PADDING_NEED_RECALC ; +	return true; +} +  void LLIMFloater::getAllowedRect(LLRect& rect)  { +	if (sAllowedRectRightPadding == RECT_PADDING_NOT_INIT) //wasn't initialized +	{ +		gSavedSettings.getControl("SidebarCameraMovement")->getSignal()->connect(boost::bind(&LLIMFloater::resetAllowedRectPadding, _2)); + +		LLSideTray*	side_bar = LLSideTray::getInstance(); +		side_bar->getCollapseSignal().connect(boost::bind(&LLIMFloater::resetAllowedRectPadding, _2)); +		sAllowedRectRightPadding = RECT_PADDING_NEED_RECALC; +	} +  	rect = gViewerWindow->getWorldViewRectScaled(); -	static S32 right_padding = 0; -	if (right_padding == 0) +	if (sAllowedRectRightPadding == RECT_PADDING_NEED_RECALC) //recalc allowed rect right padding  	{  		LLPanel* side_bar_tabs =  				gViewerWindow->getRootView()->getChild<LLPanel> (  						"side_bar_tabs"); -		right_padding = side_bar_tabs->getRect().getWidth(); +		sAllowedRectRightPadding = side_bar_tabs->getRect().getWidth();  		LLTransientFloaterMgr::getInstance()->addControlView(side_bar_tabs); + +		if (gSavedSettings.getBOOL("SidebarCameraMovement") == FALSE) +		{ +			LLSideTray*	side_bar = LLSideTray::getInstance(); + +			if (side_bar->getVisible() && !side_bar->getCollapsed()) +				sAllowedRectRightPadding += side_bar->getRect().getWidth(); +		}  	} -	rect.mRight -= right_padding; +	rect.mRight -= sAllowedRectRightPadding;  }  void LLIMFloater::setDocked(bool docked, bool pop_on_undock) diff --git a/indra/newview/llimfloater.h b/indra/newview/llimfloater.h index fef178e3a2..f1e68a2b3d 100644 --- a/indra/newview/llimfloater.h +++ b/indra/newview/llimfloater.h @@ -155,6 +155,10 @@ private:  	static void closeHiddenIMToasts(); +	static bool resetAllowedRectPadding(const LLSD& newvalue); +	//need to keep this static for performance issues +	static S32 sAllowedRectRightPadding; +  	static void confirmLeaveCallCallback(const LLSD& notification, const LLSD& response);  	LLPanelChatControlPanel* mControlPanel; diff --git a/indra/newview/llsidetray.cpp b/indra/newview/llsidetray.cpp index 3c97f01887..9406f80b75 100644 --- a/indra/newview/llsidetray.cpp +++ b/indra/newview/llsidetray.cpp @@ -469,6 +469,9 @@ void LLSideTray::reflectCollapseChange()  	}  	gFloaterView->refresh(); +	 +	LLSD new_value = mCollapsed; +	mCollapseSignal(this,new_value);  }  void LLSideTray::arrange() diff --git a/indra/newview/llsidetray.h b/indra/newview/llsidetray.h index e8fdee9430..e176ff5aff 100644 --- a/indra/newview/llsidetray.h +++ b/indra/newview/llsidetray.h @@ -159,6 +159,8 @@ public:  	void		updateSidetrayVisibility(); +	commit_signal_t& getCollapseSignal() { return mCollapseSignal; } +  protected:  	LLSideTrayTab* getTab		(const std::string& name); @@ -187,6 +189,8 @@ private:  	child_vector_t					mTabs;  	LLSideTrayTab*					mActiveTab;	 +	commit_signal_t					mCollapseSignal; +  	LLButton*						mCollapseButton;  	bool							mCollapsed;  | 
