diff options
| author | richard <none@none> | 2009-11-09 15:29:47 -0800 | 
|---|---|---|
| committer | richard <none@none> | 2009-11-09 15:29:47 -0800 | 
| commit | 4eb72a12a2280d3be6ac556ad80eb953d249e8eb (patch) | |
| tree | 9316784e58adc830d5cd893694698e38786af561 /indra/newview | |
| parent | fac0b6836a59681443fb2bbd13e6b5eb9c07cef5 (diff) | |
data driven layout of top-level UI elements
EXT-1219 Side tray slide-out animation
cleaned up some layout of bottom tray contents
reviewed by James
Diffstat (limited to 'indra/newview')
| -rw-r--r-- | indra/newview/llfasttimerview.cpp | 3 | ||||
| -rw-r--r-- | indra/newview/llfloatersnapshot.cpp | 8 | ||||
| -rw-r--r-- | indra/newview/llmoveview.cpp | 2 | ||||
| -rw-r--r-- | indra/newview/llnavigationbar.cpp | 16 | ||||
| -rw-r--r-- | indra/newview/llpanelpeople.cpp | 3 | ||||
| -rw-r--r-- | indra/newview/llpanelpeoplemenus.cpp | 1 | ||||
| -rw-r--r-- | indra/newview/llpanelprimmediacontrols.cpp | 1 | ||||
| -rw-r--r-- | indra/newview/llpanelteleporthistory.cpp | 2 | ||||
| -rw-r--r-- | indra/newview/llsidetray.cpp | 200 | ||||
| -rw-r--r-- | indra/newview/llsidetray.h | 10 | ||||
| -rw-r--r-- | indra/newview/llviewerwindow.cpp | 79 | ||||
| -rw-r--r-- | indra/newview/llviewerwindow.h | 3 | ||||
| -rw-r--r-- | indra/newview/pipeline.cpp | 2 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/main_view.xml | 203 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/panel_bottomtray.xml | 51 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/panel_status_bar.xml | 2 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/widgets/context_menu.xml | 2 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/widgets/side_tray.xml | 9 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/widgets/toggleable_menu.xml | 2 | 
19 files changed, 246 insertions, 353 deletions
| diff --git a/indra/newview/llfasttimerview.cpp b/indra/newview/llfasttimerview.cpp index 2ab17d6220..71265fdd2f 100644 --- a/indra/newview/llfasttimerview.cpp +++ b/indra/newview/llfasttimerview.cpp @@ -256,7 +256,8 @@ BOOL LLFastTimerView::handleToolTip(S32 x, S32 y, MASK mask)  			LLToolTipMgr::instance().show(LLToolTip::Params()  				.message(mHoverTimer->getToolTip(LLFastTimer::NamedTimer::HISTORY_NUM - mScrollIndex - mHoverBarIndex)) -				.sticky_rect(screen_rect)); +				.sticky_rect(screen_rect) +				.delay_time(0.f));  			return TRUE;  		} diff --git a/indra/newview/llfloatersnapshot.cpp b/indra/newview/llfloatersnapshot.cpp index 347cc3a58e..e570072803 100644 --- a/indra/newview/llfloatersnapshot.cpp +++ b/indra/newview/llfloatersnapshot.cpp @@ -2044,10 +2044,12 @@ BOOL LLFloaterSnapshot::postBuild()  	LLSnapshotLivePreview::Params p;  	p.rect(full_screen_rect);  	LLSnapshotLivePreview* previewp = new LLSnapshotLivePreview(p); -	getRootView()->removeChild(gSnapshotFloaterView); +	LLView* parent_view = gSnapshotFloaterView->getParent(); +	 +	parent_view->removeChild(gSnapshotFloaterView);  	// make sure preview is below snapshot floater -	getRootView()->addChild(previewp); -	getRootView()->addChild(gSnapshotFloaterView); +	parent_view->addChild(previewp); +	parent_view->addChild(gSnapshotFloaterView);  	//move snapshot floater to special purpose snapshotfloaterview  	gFloaterView->removeChild(this); diff --git a/indra/newview/llmoveview.cpp b/indra/newview/llmoveview.cpp index b052087475..e3ba1b8e4a 100644 --- a/indra/newview/llmoveview.cpp +++ b/indra/newview/llmoveview.cpp @@ -677,7 +677,7 @@ void LLPanelStandStopFlying::updatePosition()  	//align centers of a button and a floater  	S32 x = movement_btn->calcScreenRect().getCenterX() - getRect().getWidth()/2; -	S32 y = tray->getRect().getHeight(); +	S32 y = 0;  	LLFloater *move_floater = LLFloaterReg::findInstance("moveview");  	if (move_floater) diff --git a/indra/newview/llnavigationbar.cpp b/indra/newview/llnavigationbar.cpp index 4f145891ea..d37236aadf 100644 --- a/indra/newview/llnavigationbar.cpp +++ b/indra/newview/llnavigationbar.cpp @@ -587,6 +587,8 @@ void LLNavigationBar::showNavigationPanel(BOOL visible)  			// this is duplicated in 'else' section because it should be called BEFORE fb->reshape  			reshape(nbRect.getWidth(), nbRect.getHeight());  			setRect(nbRect); +			// propagate size to parent container +			getParent()->reshape(nbRect.getWidth(), nbRect.getHeight());  			fb->reshape(fbRect.getWidth(), fbRect.getHeight());  			fb->setRect(fbRect); @@ -600,6 +602,7 @@ void LLNavigationBar::showNavigationPanel(BOOL visible)  			reshape(nbRect.getWidth(), nbRect.getHeight());  			setRect(nbRect); +			getParent()->reshape(nbRect.getWidth(), nbRect.getHeight());  		}  	}  	else @@ -614,6 +617,7 @@ void LLNavigationBar::showNavigationPanel(BOOL visible)  			// this is duplicated in 'else' section because it should be called BEFORE fb->reshape  			reshape(nbRect.getWidth(), nbRect.getHeight());  			setRect(nbRect); +			getParent()->reshape(nbRect.getWidth(), nbRect.getHeight());  			fb->reshape(fbRect.getWidth(), fbRect.getHeight());  			fb->setRect(fbRect); @@ -626,16 +630,12 @@ void LLNavigationBar::showNavigationPanel(BOOL visible)  			reshape(nbRect.getWidth(), nbRect.getHeight());  			setRect(nbRect); +			getParent()->reshape(nbRect.getWidth(), nbRect.getHeight());  		}  	}  	childSetVisible("bg_icon", fpVisible);  	childSetVisible("bg_icon_no_fav", !fpVisible); - -	if(LLSideTray::instanceCreated()) -	{ -		LLSideTray::getInstance()->resetPanelRect(); -	}  }  void LLNavigationBar::showFavoritesPanel(BOOL visible) @@ -670,6 +670,7 @@ void LLNavigationBar::showFavoritesPanel(BOOL visible)  		reshape(nbRect.getWidth(), nbRect.getHeight());  		setRect(nbRect); +		getParent()->reshape(nbRect.getWidth(), nbRect.getHeight());  		fb->reshape(fbRect.getWidth(), fbRect.getHeight());  		fb->setRect(fbRect); @@ -694,14 +695,11 @@ void LLNavigationBar::showFavoritesPanel(BOOL visible)  		reshape(nbRect.getWidth(), nbRect.getHeight());  		setRect(nbRect); +		getParent()->reshape(nbRect.getWidth(), nbRect.getHeight());  	}  	childSetVisible("bg_icon", visible);  	childSetVisible("bg_icon_no_fav", !visible);  	fb->setVisible(visible); -	if(LLSideTray::instanceCreated()) -	{ -		LLSideTray::getInstance()->resetPanelRect(); -	}  } diff --git a/indra/newview/llpanelpeople.cpp b/indra/newview/llpanelpeople.cpp index 65a7b5322b..e0b0b0f1e2 100644 --- a/indra/newview/llpanelpeople.cpp +++ b/indra/newview/llpanelpeople.cpp @@ -198,7 +198,8 @@ public:  	~LLFriendListUpdater()  	{ -		delete mInvObserver; +		// will be deleted by ~LLInventoryModel +		//delete mInvObserver;  		LLVoiceClient::getInstance()->removeObserver(this);  		LLAvatarTracker::instance().removeObserver(this);  	} diff --git a/indra/newview/llpanelpeoplemenus.cpp b/indra/newview/llpanelpeoplemenus.cpp index aaf6849fe9..7dea5eaf67 100644 --- a/indra/newview/llpanelpeoplemenus.cpp +++ b/indra/newview/llpanelpeoplemenus.cpp @@ -64,7 +64,6 @@ void ContextMenu::show(LLView* spawning_view, const std::vector<LLUUID>& uuids,  		if (parent)  		{  			parent->removeChild(mMenu); -			mMenu->setParent(NULL);  		}  		delete mMenu;  		mMenu = NULL; diff --git a/indra/newview/llpanelprimmediacontrols.cpp b/indra/newview/llpanelprimmediacontrols.cpp index 0b2a7e8756..f82593822d 100644 --- a/indra/newview/llpanelprimmediacontrols.cpp +++ b/indra/newview/llpanelprimmediacontrols.cpp @@ -694,6 +694,7 @@ bool LLPanelPrimMediaControls::isMouseOver()  		LLView* controls_view = NULL;  		controls_view = getChild<LLView>("media_controls"); +		//FIXME: rewrite as LLViewQuery or get hover set from LLViewerWindow?  		if(controls_view && controls_view->getVisible())  		{  			controls_view->screenPointToLocal(cursor_pos_gl.mX, cursor_pos_gl.mY, &x, &y); diff --git a/indra/newview/llpanelteleporthistory.cpp b/indra/newview/llpanelteleporthistory.cpp index a34f029095..d094f22ae1 100644 --- a/indra/newview/llpanelteleporthistory.cpp +++ b/indra/newview/llpanelteleporthistory.cpp @@ -163,7 +163,6 @@ void LLTeleportHistoryPanel::ContextMenu::show(LLView* spawning_view, S32 index,  		if (parent)  		{  			parent->removeChild(mMenu); -			mMenu->setParent(NULL);  		}  		delete mMenu;  	} @@ -645,7 +644,6 @@ void LLTeleportHistoryPanel::onAccordionTabRightClick(LLView *view, S32 x, S32 y  		if (parent)  		{  			parent->removeChild(mAccordionTabMenu); -			mAccordionTabMenu->setParent(NULL);  		}  		delete mAccordionTabMenu;  	} diff --git a/indra/newview/llsidetray.cpp b/indra/newview/llsidetray.cpp index a11ee05532..f0e782d44d 100644 --- a/indra/newview/llsidetray.cpp +++ b/indra/newview/llsidetray.cpp @@ -100,7 +100,7 @@ LLSideTray* LLSideTray::getInstance()  {  	if (!sInstance)  	{ -		sInstance = LLUICtrlFactory::createFromFile<LLSideTray>("panel_side_tray.xml",gViewerWindow->getRootView(), LLRootView::child_registry_t::instance()); +		sInstance = LLUICtrlFactory::createFromFile<LLSideTray>("panel_side_tray.xml",NULL, LLRootView::child_registry_t::instance());  	}  	return sInstance; @@ -148,7 +148,6 @@ public:  	/*virtual*/ bool	addChild	(LLView* view, S32 tab_group); -	void			arrange		(S32 width, S32 height);  	void			reshape		(S32 width, S32 height, BOOL called_from_parent = TRUE);  	static LLSideTrayTab*  createInstance	(); @@ -156,8 +155,6 @@ public:  	const std::string& getDescription () const { return mDescription;}  	const std::string& getTabTitle() const { return mTabTitle;} -	void draw(); -	  	void			onOpen		(const LLSD& key);  private: @@ -209,60 +206,24 @@ BOOL LLSideTrayTab::postBuild()  static const S32 splitter_margin = 1; -//virtual  -void	LLSideTrayTab::arrange(S32 width, S32 height ) -{ -	if(!mMainPanel) -		return; -	 -	S32 offset = 0; - -	LLView* title_panel = findChildView(TAB_PANEL_CAPTION_NAME, true); - -	if(title_panel) -	{ -		title_panel->setOrigin( 0, height - title_panel->getRect().getHeight() ); -		offset = title_panel->getRect().getHeight(); -	} - -	LLRect sRect = mMainPanel->getRect(); -	sRect.setLeftTopAndSize( splitter_margin, height - offset - splitter_margin, width - 2*splitter_margin, height - offset - 2*splitter_margin); -	mMainPanel->reshape(sRect.getWidth(),sRect.getHeight()); -	mMainPanel->setRect(sRect); -	 - -	 -} -  void LLSideTrayTab::reshape		(S32 width, S32 height, BOOL called_from_parent )  { -	if(!mMainPanel) -		return; -	S32 offset = 0; - +	LLPanel::reshape(width, height, called_from_parent);  	LLView* title_panel = findChildView(TAB_PANEL_CAPTION_NAME, true); - -	if(title_panel) +	if (!title_panel)  	{ -		title_panel->setOrigin( 0, height - title_panel->getRect().getHeight() ); -		title_panel->reshape(width,title_panel->getRect().getHeight()); -		offset = title_panel->getRect().getHeight(); +		// not fully constructed yet +		return;  	} -	 - -	LLRect sRect = mMainPanel->getRect(); -	sRect.setLeftTopAndSize( splitter_margin, height - offset - splitter_margin, width - 2*splitter_margin, height - offset - 2*splitter_margin); -	//mMainPanel->setMaxWidth(sRect.getWidth()); -	mMainPanel->reshape(sRect.getWidth(), sRect.getHeight()); -	 -	mMainPanel->setRect(sRect); - -} +	S32 title_height = title_panel->getRect().getHeight(); +	title_panel->setOrigin( 0, height - title_height ); +	title_panel->reshape(width,title_height); -void LLSideTrayTab::draw() -{ -	LLPanel::draw(); +	LLRect sRect; +	sRect.setLeftTopAndSize( splitter_margin, height - title_height - splitter_margin,  +							width - 2*splitter_margin, height - title_height - 2*splitter_margin); +	mMainPanel->setShape(sRect);  }  void	LLSideTrayTab::onOpen		(const LLSD& key) @@ -300,17 +261,20 @@ LLSideTray::LLSideTray(Params& params)  	    ,mActiveTab(0)  		,mCollapsed(false)  		,mCollapseButton(0) -	    ,mMaxBarWidth(params.rect.width)  {  	mCollapsed=params.collapsed; -  	LLUICtrl::CommitCallbackRegistry::Registrar& commit = LLUICtrl::CommitCallbackRegistry::currentRegistrar();  	// register handler function to process data from the xml.   	// panel_name should be specified via "parameter" attribute.  	commit.add("SideTray.ShowPanel", boost::bind(&LLSideTray::showPanel, this, _2, LLUUID::null));  	LLTransientFloaterMgr::getInstance()->addControlView(this); + +	LLPanel::Params p; +	p.name = "buttons_panel"; +	p.mouse_opaque = false; +	mButtonsPanel = LLUICtrlFactory::create<LLPanel>(p);  } @@ -399,7 +363,7 @@ LLButton* LLSideTray::createButton	(const std::string& name,const std::string& i  	rect.setOriginAndSize(0, 0, sidetray_params.default_button_width, sidetray_params.default_button_height);   	bparams.name(name); -	bparams.follows.flags (FOLLOWS_LEFT | FOLLOWS_BOTTOM); +	bparams.follows.flags (FOLLOWS_LEFT | FOLLOWS_TOP);  	bparams.rect (rect);  	bparams.tab_stop(false);  	bparams.image_unselected.name(sidetray_params.tab_btn_image_normal); @@ -416,7 +380,7 @@ LLButton* LLSideTray::createButton	(const std::string& name,const std::string& i  		button->setImageOverlay(image);  	} -	addChildInBack(button); +	mButtonsPanel->addChildInBack(button);  	return button;  } @@ -500,23 +464,24 @@ void LLSideTray::reflectCollapseChange()  	}  	else  	{ -		gFloaterView->setSnapOffsetRight(mMaxBarWidth); +		gFloaterView->setSnapOffsetRight(getRect().getWidth());  		setFocus(TRUE);  	}  	gFloaterView->refresh();  } -void LLSideTray::arrange			() +void LLSideTray::arrange()  {  	static LLSideTray::Params sidetray_params(LLUICtrlFactory::getDefaultParams<LLSideTray>());	  	setPanelRect();  	LLRect ctrl_rect; -	ctrl_rect.setLeftTopAndSize(0,getRect().getHeight()-sidetray_params.default_button_width -							,sidetray_params.default_button_width -							,sidetray_params.default_button_height); +	ctrl_rect.setLeftTopAndSize(0, +								mButtonsPanel->getRect().getHeight() - sidetray_params.default_button_width, +								sidetray_params.default_button_width, +								sidetray_params.default_button_height);  	mCollapseButton->setRect(ctrl_rect); @@ -528,9 +493,10 @@ void LLSideTray::arrange			()  	{  		LLSideTrayTab* sidebar_tab = *child_it; -		ctrl_rect.setLeftTopAndSize(0,getRect().getHeight()-offset -								,sidetray_params.default_button_width -								,sidetray_params.default_button_height); +		ctrl_rect.setLeftTopAndSize(0, +									mButtonsPanel->getRect().getHeight()-offset, +									sidetray_params.default_button_width, +									sidetray_params.default_button_height);  		if(mTabButtons.find(sidebar_tab->getName()) == mTabButtons.end())  			continue; @@ -544,14 +510,11 @@ void LLSideTray::arrange			()  		btn->setVisible(ctrl_rect.mBottom > 0);  	} -	ctrl_rect.setLeftTopAndSize(sidetray_params.default_button_width,getRect().getHeight(),mMaxBarWidth,getRect().getHeight()); -  	//arrange tabs -	for ( child_it = mTabs.begin(); child_it != mTabs.end(); ++child_it) +	for ( child_vector_t::iterator child_it = mTabs.begin(); child_it != mTabs.end(); ++child_it)  	{  		LLSideTrayTab* sidebar_tab = *child_it; -		sidebar_tab->setRect(ctrl_rect); -		sidebar_tab->arrange(mMaxBarWidth,getRect().getHeight()); +		sidebar_tab->setShape(getLocalRect());  	}  } @@ -580,7 +543,7 @@ void LLSideTray::collapseSideBar()  	{  		mCollapseButton->setImageOverlay( home_tab->mImage );  	} -	mActiveTab->setVisible(FALSE); +	//mActiveTab->setVisible(FALSE);  	reflectCollapseChange();  	setFocus( FALSE ); @@ -596,7 +559,6 @@ void LLSideTray::expandSideBar()  	}  	LLSD key;//empty  	mActiveTab->onOpen(key); -	mActiveTab->setVisible(TRUE);  	reflectCollapseChange();  } @@ -612,15 +574,6 @@ void LLSideTray::highlightFocused()  	*/  } -BOOL	LLSideTray::handleScrollWheel(S32 x, S32 y, S32 mask) -{ -	BOOL ret = LLPanel::handleScrollWheel(x,y,mask); - -	if(!ret && childFromPoint(x,y) != 0 ) -		return TRUE;//mouse wheel over sidetray buttons, eat mouse wheel -	return ret; -} -  //virtual  BOOL		LLSideTray::handleMouseDown	(S32 x, S32 y, MASK mask)  { @@ -630,58 +583,13 @@ BOOL		LLSideTray::handleMouseDown	(S32 x, S32 y, MASK mask)  	return ret;  } -void LLSideTray::reshape			(S32 width, S32 height, BOOL called_from_parent) +void LLSideTray::reshape(S32 width, S32 height, BOOL called_from_parent)  { -	  	LLPanel::reshape(width, height, called_from_parent);  	if(!mActiveTab)  		return; -	static LLSideTray::Params sidetray_params(LLUICtrlFactory::getDefaultParams<LLSideTray>());	 - -	setPanelRect(); - -	LLRect ctrl_rect; -	ctrl_rect.setLeftTopAndSize(0 -							,getRect().getHeight()-sidetray_params.default_button_width -							,sidetray_params.default_button_width -							,sidetray_params.default_button_height); -	 -	mCollapseButton->setRect(ctrl_rect); - -	//arrange tab buttons -	child_vector_const_iter_t child_it; -	int offset = (sidetray_params.default_button_height+sidetray_params.default_button_margin)*2; -	for ( child_it = mTabs.begin(); child_it != mTabs.end(); ++child_it)	 -	{ -		LLSideTrayTab* sidebar_tab = *child_it; -		 -		ctrl_rect.setLeftTopAndSize(0,getRect().getHeight()-offset -								,sidetray_params.default_button_width -								,sidetray_params.default_button_height); - -		if(mTabButtons.find(sidebar_tab->getName()) == mTabButtons.end()) -			continue; - -		LLButton* btn = mTabButtons[sidebar_tab->getName()]; - -		btn->setRect(ctrl_rect); -		offset+=sidetray_params.default_button_height; -		offset+=sidetray_params.default_button_margin; - -		btn->setVisible(ctrl_rect.mBottom > 0); -	} - -	//arrange tabs -	 -	for ( child_it = mTabs.begin(); child_it != mTabs.end(); ++child_it) -	{ -		LLSideTrayTab* sidebar_tab = *child_it; -		sidebar_tab->reshape(mMaxBarWidth,getRect().getHeight()); -		ctrl_rect.setLeftTopAndSize(sidetray_params.default_button_width,getRect().getHeight(),mMaxBarWidth,getRect().getHeight()); -		sidebar_tab->setRect(ctrl_rect); -		 -	} +	arrange();  }  /** @@ -729,42 +637,12 @@ LLPanel*	LLSideTray::showPanel		(const std::string& panel_name, const LLSD& para  static const S32	fake_offset = 132;  static const S32	fake_top_offset = 18; -void LLSideTray::resetPanelRect	() -{ -	const LLRect& parent_rect = gViewerWindow->getRootView()->getRect(); - -	static LLSideTray::Params sidetray_params(LLUICtrlFactory::getDefaultParams<LLSideTray>());	 - -	S32 panel_width = sidetray_params.default_button_width; -	panel_width += mCollapsed ? 0 : mMaxBarWidth; - -	S32 panel_height = parent_rect.getHeight()-fake_top_offset; - -	reshape(panel_width,panel_height); -} -  void	LLSideTray::setPanelRect	()  { -	LLNavigationBar* nav_bar = LLNavigationBar::getInstance(); -	LLRect nav_rect = nav_bar->getRect(); -	 -	static LLSideTray::Params sidetray_params(LLUICtrlFactory::getDefaultParams<LLSideTray>());	 - -	const LLRect& parent_rect = gViewerWindow->getRootView()->getRect(); - -	S32 panel_width = sidetray_params.default_button_width; -	panel_width += mCollapsed ? 0 : mMaxBarWidth; - -	S32 panel_height = parent_rect.getHeight()-fake_top_offset - nav_rect.getHeight(); -	S32 panel_top = parent_rect.mTop-fake_top_offset - nav_rect.getHeight(); - -	LLRect panel_rect; -	panel_rect.setLeftTopAndSize( parent_rect.mRight-panel_width, panel_top, panel_width, panel_height); -	setRect(panel_rect); +	// set visibility of parent container based on collapsed state +	if (getParent()) +	{ +		getParent()->setVisible(!mCollapsed); +	}  } -S32	LLSideTray::getTrayWidth() -{ -	static LLSideTray::Params sidetray_params(LLUICtrlFactory::getDefaultParams<LLSideTray>());	 -	return getRect().getWidth() - (sidetray_params.default_button_width + sidetray_params.default_button_margin); -} diff --git a/indra/newview/llsidetray.h b/indra/newview/llsidetray.h index b49251ec79..72a9465baa 100644 --- a/indra/newview/llsidetray.h +++ b/indra/newview/llsidetray.h @@ -118,6 +118,8 @@ public:  		LLPanel::setVisible(visible);  	} +	LLPanel*	getButtonsPanel() { return mButtonsPanel; } +  public:  	virtual ~LLSideTray(){}; @@ -129,10 +131,8 @@ public:  	bool		addChild		(LLView* view, S32 tab_group);  	BOOL		handleMouseDown	(S32 x, S32 y, MASK mask); -	BOOL		handleScrollWheel(S32 x, S32 y, S32 mask);  	void		reshape			(S32 width, S32 height, BOOL called_from_parent = TRUE); -	S32			getTrayWidth();  	void		resetPanelRect	(); @@ -163,15 +163,15 @@ private:  private: -	std::map<std::string,LLButton*>	mTabButtons; +	LLPanel*						mButtonsPanel; +	typedef std::map<std::string,LLButton*> button_map_t; +	button_map_t					mTabButtons;  	child_vector_t					mTabs;  	LLSideTrayTab*					mActiveTab;	  	LLButton*						mCollapseButton;  	bool							mCollapsed; -	S32								mMaxBarWidth; -  	static LLSideTray*				sInstance;  }; diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index 8630369971..b15019f830 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -1405,6 +1405,9 @@ void LLViewerWindow::initBase()  	main_view->setShape(full_window);  	getRootView()->addChild(main_view); +	// placeholder widget that controls where "world" is rendered +	mWorldViewPlaceholder = main_view->getChildView("world_view_rect"); +  	// Constrain floaters to inside the menu and status bar regions.  	gFloaterView = getRootView()->getChild<LLFloaterView>("Floater View");  	gSnapshotFloaterView = getRootView()->getChild<LLSnapshotFloaterView>("Snapshot Floater View"); @@ -1458,9 +1461,6 @@ void LLViewerWindow::initWorldUI()  	gIMMgr = LLIMMgr::getInstance(); -	// side tray -	//getRootView()->addChild(LLSideTray::getInstance()); -  	getRootView()->sendChildToFront(gFloaterView);  	getRootView()->sendChildToFront(gSnapshotFloaterView); @@ -1468,7 +1468,7 @@ void LLViewerWindow::initWorldUI()  	LLPanel* bottom_tray_container = getRootView()->getChild<LLPanel>("bottom_tray_container");  	LLBottomTray* bottom_tray = LLBottomTray::getInstance();  	bottom_tray->setShape(bottom_tray_container->getLocalRect()); -	bottom_tray->setFollows(FOLLOWS_ALL); +	bottom_tray->setFollowsAll();  	bottom_tray_container->addChild(bottom_tray);  	bottom_tray_container->setVisible(TRUE); @@ -1498,7 +1498,8 @@ void LLViewerWindow::initWorldUI()  	// Status bar  	LLPanel* status_bar_container = getRootView()->getChild<LLPanel>("status_bar_container");  	gStatusBar = new LLStatusBar(status_bar_container->getLocalRect()); -	gStatusBar->setFollows(FOLLOWS_ALL); +	gStatusBar->setFollowsAll(); +	gStatusBar->setShape(status_bar_container->getLocalRect());  	// sync bg color with menu bar  	gStatusBar->setBackgroundColor( gMenuBarView->getBackgroundColor().get() );  	status_bar_container->addChild(gStatusBar); @@ -1559,10 +1560,24 @@ void LLViewerWindow::initWorldUI()  	LLPanel* panel_ssf_container = getRootView()->getChild<LLPanel>("stand_stop_flying_container");  	LLPanelStandStopFlying* panel_stand_stop_flying	= LLPanelStandStopFlying::getInstance();  	panel_stand_stop_flying->setShape(panel_ssf_container->getLocalRect()); -	panel_stand_stop_flying->setFollows(FOLLOWS_ALL); +	panel_stand_stop_flying->setFollowsAll();  	panel_ssf_container->addChild(panel_stand_stop_flying);  	panel_ssf_container->setVisible(TRUE); +	// put sidetray in container +	LLPanel* side_tray_container = getRootView()->getChild<LLPanel>("side_tray_container"); +	LLSideTray* sidetrayp = LLSideTray::getInstance(); +	sidetrayp->setShape(side_tray_container->getLocalRect()); +	sidetrayp->setFollowsAll(); +	side_tray_container->addChild(sidetrayp); +	side_tray_container->setVisible(FALSE); +	 +	// put sidetray buttons in their own panel +	LLPanel* buttons_panel = sidetrayp->getButtonsPanel(); +	LLPanel* buttons_panel_container = getRootView()->getChild<LLPanel>("side_bar_tabs"); +	buttons_panel->setShape(buttons_panel_container->getLocalRect()); +	buttons_panel->setFollowsAll(); +	buttons_panel_container->addChild(buttons_panel);  }  // Destroy the UI @@ -2272,29 +2287,6 @@ void LLViewerWindow::moveCursorToCenter()  	LLUI::setMousePositionScreen(x, y);	  } -void LLViewerWindow::updateBottomTrayRect() -{ -	//if(LLBottomTray::instanceExists() && LLSideTray::instanceCreated()) -	//{ -	//	S32 side_tray_width = 0; -	//	if(LLSideTray::getInstance()->getVisible()) -	//	{ -	//		side_tray_width = LLSideTray::getInstance()->getTrayWidth(); -	//	} - -	//	LLBottomTray* bottom_tray = LLBottomTray::getInstance(); -	//	S32 right = llround((F32)mWindowRect.mRight / mDisplayScale.mV[VX]) - side_tray_width; - -	//	LLRect rc = bottom_tray->getRect(); -	//	if (right != rc.mRight) -	//	{ -	//		rc.mRight = right; -	//		bottom_tray->reshape(rc.getWidth(), rc.getHeight(), FALSE); -	//		bottom_tray->setRect(rc); -	//		mOnBottomTrayWidthChanged(); -	//	} -	//} -}  //////////////////////////////////////////////////////////////////////  // @@ -2336,9 +2328,10 @@ void LLViewerWindow::updateUI()  {  	static std::string last_handle_msg; -	updateWorldViewRect(); +	// animate layout stacks so we have up to date rect for world view +	LLLayoutStack::idle(); -	updateBottomTrayRect(); +	updateWorldViewRect();  	LLView::sMouseHandlerMessage.clear(); @@ -2838,32 +2831,20 @@ void LLViewerWindow::updateKeyboardFocus()  		LLSideTray::getInstance()->highlightFocused();  } +static LLFastTimer::DeclareTimer FTM_UPDATE_WORLD_VIEW("Update World View");  void LLViewerWindow::updateWorldViewRect(bool use_full_window)  { -	if (!LLSideTray::instanceCreated()) return; +	LLFastTimer ft(FTM_UPDATE_WORLD_VIEW);  	// start off using whole window to render world  	LLRect new_world_rect = mWindowRect;  	if (use_full_window == false)  	{ -		// pull in right side of world view based on sidetray -		LLSideTray* sidetray = LLSideTray::getInstance(); -		if (sidetray->getVisible()) -		{ -			new_world_rect.mRight -= llround((F32)sidetray->getTrayWidth() * mDisplayScale.mV[VX]); -		} - -		// push top of world view below nav bar -		if (LLNavigationBar::getInstance()->getVisible()) -		{ -			LLNavigationBar* barp = LLNavigationBar::getInstance(); -			LLRect nav_bar_rect; -			if(barp->localRectToOtherView(barp->getLocalRect(), &nav_bar_rect, mRootView)) -			{ -				new_world_rect.mTop = llround((F32)LLNavigationBar::getInstance()->getRect().mBottom * mDisplayScale.mV[VY]); -			} -		} +		new_world_rect = mWorldViewPlaceholder->calcScreenRect(); +		// clamp to at least a 1x1 rect so we don't try to allocate zero width gl buffers +		new_world_rect.mTop = llmax(new_world_rect.mTop, new_world_rect.mBottom + 1); +		new_world_rect.mRight = llmax(new_world_rect.mRight, new_world_rect.mLeft + 1);  	}  	if (mWorldViewRect != new_world_rect) diff --git a/indra/newview/llviewerwindow.h b/indra/newview/llviewerwindow.h index d7c403739e..31a458a15b 100644 --- a/indra/newview/llviewerwindow.h +++ b/indra/newview/llviewerwindow.h @@ -294,7 +294,6 @@ public:  	void				updateKeyboardFocus();		  	void			updateWorldViewRect(bool use_full_window=false); -	void			updateBottomTrayRect();  	BOOL			handleKey(KEY key, MASK mask);  	void			handleScrollWheel	(S32 clicks); @@ -451,6 +450,8 @@ protected:  	BOOL			mIgnoreActivate;  	std::string		mInitAlert;			// Window / GL initialization requires an alert + +	LLView*			mWorldViewPlaceholder;	// widget that spans the portion of screen dedicated to rendering the 3d world  	class LLDebugText* mDebugText; // Internal class for debug text diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index 0dc1a88ee8..eac83c0bdc 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -506,8 +506,10 @@ void LLPipeline::destroyGL()  	}  } +static LLFastTimer::DeclareTimer FTM_RESIZE_SCREEN_TEXTURE("Resize Screen Texture");  void LLPipeline::resizeScreenTexture()  { +	LLFastTimer ft(FTM_RESIZE_SCREEN_TEXTURE);  	if (gPipeline.canUseVertexShaders() && assertInitialized())  	{  		GLuint resX = gViewerWindow->getWorldViewWidth(); diff --git a/indra/newview/skins/default/xui/en/main_view.xml b/indra/newview/skins/default/xui/en/main_view.xml index 2d69465b58..08f7ee456e 100644 --- a/indra/newview/skins/default/xui/en/main_view.xml +++ b/indra/newview/skins/default/xui/en/main_view.xml @@ -1,119 +1,130 @@  <?xml version="1.0" encoding="utf-8" standalone="yes" ?>  <panel   follows="left|right|top|bottom" - height="768"  + height="768"   layout="topleft"   left="0"   mouse_opaque="false" - name="screen" + name="main_view"   width="1024">    <layout_stack border_size="0"                  follows="all" -                height="768"  -                mouse_opaque="false"  +                mouse_opaque="false" +                height="772"                  name="menu_stack" -                orientation="vertical"> -    <!-- filename="panel_status_bar.xml"--> +                orientation="vertical" +                top="0">      <layout_panel auto_resize="false" +                  min_height="19"                    mouse_opaque="false"                    name="status_bar_container" +                  height="19"                    width="1024"                    visible="false"/> -    <!--filename="panel_navigation_bar.xml"-->      <layout_panel auto_resize="false" -                  height="65"  -                  mouse_opaque="false"  +                  height="65" +                  mouse_opaque="false"                    name="nav_bar_container"                    width="1024"                    visible="false"/> -    <layout_stack auto_resize="true"  -                  border_size="0"  -                  follows="all"  -                  height="500"  +    <panel        auto_resize="true" +                  follows="all" +                  height="500" +                  layout="topleft"                    mouse_opaque="false" -                  name="hud_stack"  -                  orientation="horizontal"  +                  name="hud"                    width="1024"> -      <panel auto_resize="true"  -             follows="all"  -             height="500"  -             layout="topleft"  -             mouse_opaque="false" -             name="main_view"  -             user_resize="true"  -             width="500"> -        <layout_stack bottom="500"  -                      follows="all"  -                      height="500" -                      mouse_opaque="false" -                      name="hud_stack"  -                      orientation="vertical"> -          <panel auto_resize="true"  -                 follows="all"  -                 height="500"  -                 layout="topleft"  -                 mouse_opaque="false" -                 name="hud container"  -                 width="500"> -            <debug_view follows="all" -                        left="0"  -                        top="0" -                        mouse_opaque="false"  +      <layout_stack border_size="0" +                    follows="all" +                    height="500" +                    left="0" +                    mouse_opaque="false" +                    name="hud_stack" +                    orientation="horizontal" +                    top="0" +                    width="1024"> +        <panel auto_resize="true" +               follows="all" +               height="500" +               layout="topleft" +               mouse_opaque="false" +               name="main_view" +               user_resize="true" +               width="500"> +          <layout_stack border_size="0" +                        bottom="500" +                        follows="all"                          height="500" -                        name="DebugView" -                        width="500"/> - -              <panel follows="right|top|bottom"  -                     height="500"  +                        left="0" +                        mouse_opaque="false" +                        name="world_stack" +                        orientation="vertical"> +            <panel auto_resize="true" +                   follows="all" +                   height="500" +                   layout="topleft" +                   mouse_opaque="false" +                   name="hud container" +                   width="500"> +              <view bottom="500" +                    follows="all" +                    height="500" +                    left="0" +                    mouse_opaque="false" +                    name="world_view_rect" +                    width="500"/> +              <panel follows="right|top|bottom" +                     height="500"                       mouse_opaque="false" -                     name="side_bar_tabs"  -                     right="500"  -                     top="0"  +                     name="side_bar_tabs" +                     right="500" +                     top="0"                       width="32"/> -          </panel> -          <!--filename="panel_stand_stop_flying.xml"--> -          <layout_panel auto_resize="false" -                 follows="all" -                 min_height="25" -                 mouse_opaque="false" -                 name="stand_stop_flying_container" -                 visible="false"/> -          <!--filename="panel_bottomtray.xml"--> -          <layout_panel auto_resize="false"  -                 follows="all"  -                 min_height="33"  -                 mouse_opaque="false" -                 name="bottom_tray_container" -                 visible="false"/> -        </layout_stack> -        <floater_view follows="all"  -                      height="500"  -                      mouse_opaque="false"  -                      name="Floater View" -                      tab_group="-1"  -                      tab_stop="false" -                      top="0"/> -        <snapshot_floater_view enabled="false" -                               follows="all" -                               height="500" -                               left="0"  -                               mouse_opaque="false" -                               name="Snapshot Floater View" -                               tab_stop="false" -                               top="0" -                               visible="false"/> -      </panel> -      <!-- side tray --> -      <layout_panel auto_resize="false"  -                    follows="all"  -                    height="500"  -                    min_width="333"  +              <panel bottom="500" +                     follows="left|right|bottom" +                     height="25" +                     left="0" +                     mouse_opaque="false" +                     name="stand_stop_flying_container" +                     visible="false" +                     width="500"/> +            </panel> +            <layout_panel auto_resize="false" +                   follows="all" +                   min_height="33" +                   mouse_opaque="false" +                   name="bottom_tray_container" +                   visible="false"/> +          </layout_stack> +        </panel> +        <!-- side tray --> +        <layout_panel auto_resize="false" +                      follows="all" +                      height="500" +                      min_width="333" +                      mouse_opaque="false" +                      name="side_tray_container" +                      user_resize="true" +                      visible="false" +                      width="333"/> +      </layout_stack> +      <floater_view follows="all" +                    height="500" +                    left="0"                      mouse_opaque="false" -                    name="side_tray_container"  -                    user_resize="true" -                    visible="false"  -                    width="333"/> -    </layout_stack> +                    name="Floater View" +                    tab_group="-1" +                    tab_stop="false" +                    top="0" +                    width="1024"/> +      <debug_view follows="all" +                  left="0" +                  top="0" +                  mouse_opaque="false" +                  height="500" +                  name="DebugView" +                  width="1024"/> +  </panel>    </layout_stack>    <notify_box_view top="0"                     follows="all" @@ -128,6 +139,16 @@                 mouse_opaque="false"                 name="Menu Holder"                 width="1024"/> +  <snapshot_floater_view enabled="false" +                         follows="all" +                         height="768" +                         left="0" +                         mouse_opaque="false" +                         name="Snapshot Floater View" +                         tab_stop="false" +                         top="0" +                         visible="false" +                         width="1024"/>    <tooltip_view top="0"                  follows="all"                  height="768" diff --git a/indra/newview/skins/default/xui/en/panel_bottomtray.xml b/indra/newview/skins/default/xui/en/panel_bottomtray.xml index f833e0a1cb..faa38084f1 100644 --- a/indra/newview/skins/default/xui/en/panel_bottomtray.xml +++ b/indra/newview/skins/default/xui/en/panel_bottomtray.xml @@ -31,6 +31,7 @@           height="10"           image_name="spacer24.tga"           layout="topleft" +         min_width="4"           left="0"           top="0"           width="4" /> @@ -44,7 +45,7 @@           min_height="23"           width="310"           top="0" -         min_width="300" +         min_width="310"           name="chat_bar"           user_resize="false"           filename="panel_nearby_chat_bar.xml" /> @@ -57,30 +58,31 @@           min_height="28"           width="100"           top_delta="0" -         min_width="96" +         min_width="100"           name="speak_panel"           user_resize="false"> -         <talk_button -          follows="right" -          height="23" -          speak_button.tab_stop="true" -          show_button.tab_stop="true" -          layout="topleft" -          left="0" -          name="talk" -          top="3" -          width="100" /> +          <talk_button +           follows="right" +           height="23" +           speak_button.tab_stop="true" +           show_button.tab_stop="true" +           layout="topleft" +           left="0" +           name="talk" +           top="3" +           width="100" />          </layout_panel> -		 <icon -         auto_resize="false" -         follows="left|right" -         height="10" -         image_name="spacer24.tga" -         layout="topleft" -         left="0" -         name="DUMMY" -         top="0" -         width="4"/> +        <icon +            auto_resize="false" +            follows="left|right" +            height="10" +            image_name="spacer24.tga" +            layout="topleft" +            left="0" +            name="DUMMY" +            min_width="4" +            top="0" +            width="4"/>          <layout_panel           mouse_opaque="false"           auto_resize="false" @@ -112,6 +114,7 @@           image_name="spacer24.tga"           layout="topleft"           left="0" +         min_width="4"            name="DUMMY"           top="0"           width="4"/> @@ -149,6 +152,7 @@           image_name="spacer24.tga"           layout="topleft"           left="0" +         min_width="4"            name="DUMMY"           top="0"           width="4"/> @@ -188,6 +192,7 @@           image_name="spacer24.tga"           layout="topleft"           left="0" +         min_width="4"            name="DUMMY"           top="0"           width="4"/> @@ -243,6 +248,7 @@           image_name="spacer24.tga"           layout="topleft"           left="0" +         min_width="4"            top="0"           width="5"/>          <layout_panel @@ -288,6 +294,7 @@           height="10"           image_name="spacer24.tga"           layout="topleft" +         min_width="4"            right="-1"           top="0"           width="26"/> diff --git a/indra/newview/skins/default/xui/en/panel_status_bar.xml b/indra/newview/skins/default/xui/en/panel_status_bar.xml index 7b9c9f47a2..1171a8f0b5 100644 --- a/indra/newview/skins/default/xui/en/panel_status_bar.xml +++ b/indra/newview/skins/default/xui/en/panel_status_bar.xml @@ -3,7 +3,7 @@   background_opaque="true"   background_visible="true"   bg_opaque_color="MouseGray" - follows="top|left|right" + follows="all"   height="19"   layout="topleft"   left="0" diff --git a/indra/newview/skins/default/xui/en/widgets/context_menu.xml b/indra/newview/skins/default/xui/en/widgets/context_menu.xml new file mode 100644 index 0000000000..459706c689 --- /dev/null +++ b/indra/newview/skins/default/xui/en/widgets/context_menu.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<context_menu visible="false"/> diff --git a/indra/newview/skins/default/xui/en/widgets/side_tray.xml b/indra/newview/skins/default/xui/en/widgets/side_tray.xml index 8b4a5afbe9..022564c12f 100644 --- a/indra/newview/skins/default/xui/en/widgets/side_tray.xml +++ b/indra/newview/skins/default/xui/en/widgets/side_tray.xml @@ -1,8 +1,7 @@  <?xml version="1.0" encoding="utf-8" standalone="yes" ?>  <side_tray tab_btn_image="TaskPanel_Tab_Off" -        tab_btn_image_selected="TaskPanel_Tab_Selected" -		tab_btn_width="32" -		tab_btn_height="40" -		tab_btn_margin="1" -        > +           tab_btn_image_selected="TaskPanel_Tab_Selected" +           tab_btn_width="32" +           tab_btn_height="40" +           tab_btn_margin="1">  </side_tray> diff --git a/indra/newview/skins/default/xui/en/widgets/toggleable_menu.xml b/indra/newview/skins/default/xui/en/widgets/toggleable_menu.xml new file mode 100644 index 0000000000..48950a98ad --- /dev/null +++ b/indra/newview/skins/default/xui/en/widgets/toggleable_menu.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<toggleable_menu visible="false"/> | 
