summaryrefslogtreecommitdiff
path: root/indra/newview/llsidetray.cpp
diff options
context:
space:
mode:
authorOz Linden <oz@lindenlab.com>2010-10-08 10:47:25 -0400
committerOz Linden <oz@lindenlab.com>2010-10-08 10:47:25 -0400
commitbb74487c859acccb8f88002630606419761136e4 (patch)
treeeadeabd044a9fa06c789b957d9b2c823c47617dd /indra/newview/llsidetray.cpp
parent970ce1e1626c205302c4085610819571c1ce79f4 (diff)
parentd25a30e55b7e6a20173c3a53891489adc5610d72 (diff)
Merge fixes for VWR-23047, VWR-20911, and SNOW-748
Diffstat (limited to 'indra/newview/llsidetray.cpp')
-rw-r--r--indra/newview/llsidetray.cpp37
1 files changed, 27 insertions, 10 deletions
diff --git a/indra/newview/llsidetray.cpp b/indra/newview/llsidetray.cpp
index b0914eee69..71f3b0e491 100644
--- a/indra/newview/llsidetray.cpp
+++ b/indra/newview/llsidetray.cpp
@@ -32,6 +32,8 @@
#include "llappviewer.h"
#include "llbottomtray.h"
#include "llfloaterreg.h"
+#include "llfirstuse.h"
+#include "llhints.h"
#include "llsidetray.h"
#include "llviewerwindow.h"
#include "llaccordionctrl.h"
@@ -57,6 +59,8 @@ using namespace LLNotificationsUI;
static LLRootViewRegistry::Register<LLSideTray> t1("side_tray");
static LLDefaultChildRegistry::Register<LLSideTrayTab> t2("sidetray_tab");
+static const S32 BOTTOM_BAR_PAD = 5;
+
static const std::string COLLAPSED_NAME = "<<";
static const std::string EXPANDED_NAME = ">>";
@@ -111,7 +115,7 @@ public:
};
protected:
LLSideTrayTab(const Params& params);
-
+
void dock();
void undock(LLFloater* floater_tab);
@@ -132,7 +136,7 @@ public:
const std::string& getTabTitle() const { return mTabTitle;}
void onOpen (const LLSD& key);
-
+
void toggleTabDocked();
LLPanel *getPanel();
@@ -316,6 +320,9 @@ void LLSideTrayTab::undock(LLFloater* floater_tab)
floater_tab->setTitle(mTabTitle);
floater_tab->setName(getName());
+ // Resize handles get obscured by added panel so move them to front.
+ floater_tab->moveResizeHandlesToFront();
+
// Reshape the floater if needed.
LLRect floater_rect;
if (floater_tab->hasSavedRect())
@@ -327,13 +334,18 @@ void LLSideTrayTab::undock(LLFloater* floater_tab)
{
// Detaching for the first time. Reshape the floater.
floater_rect = side_tray->getLocalRect();
+
+ // Reduce detached floater height by small BOTTOM_BAR_PAD not to make it flush with the bottom bar.
+ floater_rect.mBottom += LLBottomTray::getInstance()->getRect().getHeight() + BOTTOM_BAR_PAD;
+ floater_rect.makeValid();
floater_tab->reshape(floater_rect.getWidth(), floater_rect.getHeight());
}
// Reshape the panel.
{
- LLRect panel_rect = floater_rect;
+ LLRect panel_rect = floater_tab->getLocalRect();
panel_rect.mTop -= floater_tab->getHeaderHeight();
+ panel_rect.makeValid();
setRect(panel_rect);
reshape(panel_rect.getWidth(), panel_rect.getHeight());
}
@@ -569,7 +581,8 @@ void LLSideTray::toggleTabButton(LLSideTrayTab* tab)
LLButton* btn = it->second;
bool new_state = !btn->getToggleState();
btn->setToggleState(new_state);
- btn->setImageOverlay( new_state ? tab->mImageSelected : tab->mImage );
+ // Only highlight the tab if side tray is expanded (STORM-157).
+ btn->setImageOverlay( new_state && !getCollapsed() ? tab->mImageSelected : tab->mImage );
}
}
@@ -645,7 +658,7 @@ bool LLSideTray::selectTabByName(const std::string& name, bool keep_prev_visible
{
// Keep previously active tab visible if requested.
if (keep_prev_visible) tab_to_keep_visible = mActiveTab;
- toggleTabButton(mActiveTab);
+ toggleTabButton(mActiveTab);
}
//select new tab
@@ -653,9 +666,9 @@ bool LLSideTray::selectTabByName(const std::string& name, bool keep_prev_visible
if (mActiveTab)
{
- toggleTabButton(mActiveTab);
- LLSD key;//empty
- mActiveTab->onOpen(key);
+ toggleTabButton(mActiveTab);
+ LLSD key;//empty
+ mActiveTab->onOpen(key);
}
//arrange();
@@ -867,6 +880,7 @@ void LLSideTray::createButtons ()
{
mCollapseButton = createButton(name,sidebar_tab->mImage,sidebar_tab->getTabTitle(),
boost::bind(&LLSideTray::onToggleCollapse, this));
+ LLHints::registerHintTarget("side_panel_btn", mCollapseButton->getHandle());
}
else
{
@@ -875,6 +889,8 @@ void LLSideTray::createButtons ()
mTabButtons[name] = button;
}
}
+ LLHints::registerHintTarget("inventory_btn", mTabButtons["sidebar_inventory"]->getHandle());
+ LLHints::registerHintTarget("dest_guide_btn", mTabButtons["sidebar_places"]->getHandle());
}
void LLSideTray::processTriState ()
@@ -913,6 +929,7 @@ void LLSideTray::onTabButtonClick(string name)
void LLSideTray::onToggleCollapse()
{
+ LLFirstUse::notUsingSidePanel(false);
if(mCollapsed)
{
expandSideBar();
@@ -1117,11 +1134,11 @@ LLPanel* LLSideTray::showPanel (const std::string& panel_name, const LLSD& para
{
LLPanel* panel = openChildPanel(*child_it, panel_name, params);
if (panel) return panel;
- }
+ }
// Look up the tab in the list of attached tabs.
for ( child_it = mTabs.begin(); child_it != mTabs.end(); ++child_it)
- {
+ {
LLPanel* panel = openChildPanel(*child_it, panel_name, params);
if (panel) return panel;
}