diff options
author | Vadim Savchuk <vsavchuk@productengine.com> | 2010-08-27 23:21:25 +0300 |
---|---|---|
committer | Vadim Savchuk <vsavchuk@productengine.com> | 2010-08-27 23:21:25 +0300 |
commit | d872325eb081d8433ecb0c92fb7cff7ffe91d51d (patch) | |
tree | 3d327291fcaacc8486701e050269ccb190b5d21e /indra | |
parent | 24d1900ceb7e8978ba39e6e69e671c4521a270a4 (diff) |
VWR-20926 FIXED Fixed displaying the fake "Sidebar Toggle" tab when you detach all sidebar tabs.
Reviewed by Sergey Litovchuk at https://codereview.productengine.com/secondlife/r/880/
Diffstat (limited to 'indra')
-rw-r--r-- | indra/newview/llsidetray.cpp | 20 | ||||
-rw-r--r-- | indra/newview/llsidetray.h | 1 |
2 files changed, 14 insertions, 7 deletions
diff --git a/indra/newview/llsidetray.cpp b/indra/newview/llsidetray.cpp index d57d414ff8..a70e23cfd3 100644 --- a/indra/newview/llsidetray.cpp +++ b/indra/newview/llsidetray.cpp @@ -65,6 +65,7 @@ static const std::string TAB_PANEL_CAPTION_TITLE_BOX = "sidetray_tab_title"; LLSideTray* LLSideTray::sInstance = 0; +// static LLSideTray* LLSideTray::getInstance() { if (!sInstance) @@ -76,6 +77,7 @@ LLSideTray* LLSideTray::getInstance() return sInstance; } +// static bool LLSideTray::instanceCreated () { return sInstance!=0; @@ -369,6 +371,11 @@ LLSideTrayTab* LLSideTray::getTab(const std::string& name) return getChild<LLSideTrayTab>(name,false); } +bool LLSideTray::hasTabs() +{ + // The open/close tab doesn't count. + return mTabs.size() > 1; +} void LLSideTray::toggleTabButton(LLSideTrayTab* tab) { @@ -406,10 +413,6 @@ bool LLSideTray::selectTabByName (const std::string& name) if (mActiveTab) { toggleTabButton(mActiveTab); - if(mActiveTab) - { - mActiveTab->setVisible(false); - } } //select new tab @@ -420,8 +423,6 @@ bool LLSideTray::selectTabByName (const std::string& name) toggleTabButton(mActiveTab); LLSD key;//empty mActiveTab->onOpen(key); - - mActiveTab->setVisible(true); } //arrange(); @@ -431,7 +432,9 @@ bool LLSideTray::selectTabByName (const std::string& name) for ( child_it = mTabs.begin(); child_it != mTabs.end(); ++child_it) { LLSideTrayTab* sidebar_tab = *child_it; - sidebar_tab->setVisible(sidebar_tab == mActiveTab); + // When the last tab gets detached, for a short moment the "Toggle Sidebar" pseudo-tab + // is shown. So, to avoid the flicker we make sure it never gets visible. + sidebar_tab->setVisible(sidebar_tab == mActiveTab && (*child_it)->getName() != "sidebar_openclose"); } return true; } @@ -716,6 +719,9 @@ void LLSideTray::arrange() LLSideTrayTab* sidebar_tab = *child_it; sidebar_tab->setShape(getLocalRect()); } + + // The tab buttons should be shown only if there is at least one non-detached tab. + mButtonsPanel->setVisible(hasTabs()); } void LLSideTray::collapseSideBar() diff --git a/indra/newview/llsidetray.h b/indra/newview/llsidetray.h index 081f382478..382a849814 100644 --- a/indra/newview/llsidetray.h +++ b/indra/newview/llsidetray.h @@ -163,6 +163,7 @@ public: protected: LLSideTrayTab* getTab (const std::string& name); + bool hasTabs (); void createButtons (); LLButton* createButton (const std::string& name,const std::string& image,const std::string& tooltip, |