summaryrefslogtreecommitdiff
path: root/indra/newview
diff options
context:
space:
mode:
authorVadim ProductEngine <vsavchuk@productengine.com>2011-04-12 00:20:18 +0300
committerVadim ProductEngine <vsavchuk@productengine.com>2011-04-12 00:20:18 +0300
commite5aaf90bffa7005c0aa872c2084b6d57659d0fee (patch)
treea371abc18e8a956fc642e24b84f49284310f61fd /indra/newview
parentf9698c264442bb0db068e4dc9d4d1ab0ba5c210a (diff)
STORM-1028 WIP Fixing bottom bar buttons reshaping, tier 10
Fixing a regression introduced in tier 1: not displaying the bottom tray buttons added when bottom tray was not wide enough display them, even after increasing the width to show all visible buttons. The fix is to mark such buttons as auto-hidden so that they appear as soon as we have enough free space.
Diffstat (limited to 'indra/newview')
-rw-r--r--indra/newview/llbottomtray.cpp35
-rw-r--r--indra/newview/llbottomtray.h10
2 files changed, 38 insertions, 7 deletions
diff --git a/indra/newview/llbottomtray.cpp b/indra/newview/llbottomtray.cpp
index ca901766d7..d5d8a27d85 100644
--- a/indra/newview/llbottomtray.cpp
+++ b/indra/newview/llbottomtray.cpp
@@ -1223,7 +1223,7 @@ S32 LLBottomTray::processShowButtons(S32& available_width)
bool LLBottomTray::processShowButton(EResizeState shown_object_type, S32& available_width)
{
// Check if the button was previously auto-hidden (due to lack of space).
- if ((mResizeState & shown_object_type) == 0)
+ if (!isAutoHidden(shown_object_type))
{
return false;
}
@@ -1268,7 +1268,7 @@ void LLBottomTray::processHideButton(EResizeState processed_object_type, S32& re
setTrayButtonVisible(processed_object_type, false);
- mResizeState |= processed_object_type;
+ setAutoHidden(processed_object_type, true);
lldebugs << "processing object type: " << processed_object_type
<< ", buttons_freed_width: " << buttons_freed_width
@@ -1377,7 +1377,7 @@ void LLBottomTray::processShrinkButton(EResizeState processed_object_type, S32&
void LLBottomTray::processExtendButtons(S32& available_width)
{
// do not allow extending any buttons if we have some buttons hidden via resize
- if (mResizeState & RS_BUTTONS_CAN_BE_HIDDEN) return;
+ if (isAutoHidden(RS_BUTTONS_CAN_BE_HIDDEN)) return;
lldebugs << "Distributing " << available_width << " px" << llendl;
@@ -1500,7 +1500,7 @@ bool LLBottomTray::canButtonBeShown(EResizeState processed_object_type) const
buttons_before_mask |= button_type;
}
- return !(buttons_before_mask & mResizeState);
+ return !isAutoHidden(buttons_before_mask);
}
void LLBottomTray::initResizeStateContainers()
@@ -1632,7 +1632,7 @@ bool LLBottomTray::showButton(EResizeState button_type, S32& available_width)
lldebugs << "Showing button " << resizeStateToString(button_type)
<< ", remaining available width: " << available_width
<< llendl;
- mResizeState &= ~button_type;
+ setAutoHidden(button_type, false);
return true;
}
@@ -1730,7 +1730,11 @@ bool LLBottomTray::setVisibleAndFitWidths(EResizeState object_type, bool visible
}
else
{
- // Nothing can be done, give up...
+ lldebugs << "Need " << (minimal_width - available_width - possible_shrunk_width)
+ << " more px to show " << resizeStateToString(object_type) << llendl;
+
+ // Make the button uppear when we have more available space.
+ setAutoHidden(object_type, true);
return false;
}
}
@@ -1757,7 +1761,7 @@ bool LLBottomTray::setVisibleAndFitWidths(EResizeState object_type, bool visible
// Mark button NOT to show while future bottom tray extending
lldebugs << "Removing " << resizeStateToString(object_type) << " from mResizeState" << llendl;
- mResizeState &= ~object_type;
+ setAutoHidden(object_type, false);
// Extend other buttons if need
if (delta_width)
@@ -1908,4 +1912,21 @@ std::string LLBottomTray::resizeStateMaskToString(MASK mask)
return res;
}
+bool LLBottomTray::isAutoHidden(MASK button_types) const
+{
+ return (mResizeState & button_types) != 0;
+}
+
+void LLBottomTray::setAutoHidden(MASK button_types, bool hide)
+{
+ if (hide)
+ {
+ mResizeState |= button_types;
+ }
+ else
+ {
+ mResizeState &= ~button_types;
+ }
+}
+
//EOF
diff --git a/indra/newview/llbottomtray.h b/indra/newview/llbottomtray.h
index db7f5bc308..52bcd2ddac 100644
--- a/indra/newview/llbottomtray.h
+++ b/indra/newview/llbottomtray.h
@@ -449,6 +449,16 @@ private:
/// Dump a mask for debugging
static std::string resizeStateMaskToString(MASK mask);
+ /// @return true if any of the the passed buttons have been auto-hidden due to lack of available space.
+ bool isAutoHidden(MASK button_types) const;
+
+ /**
+ * (Un)Mark the buttons as hidden.
+ *
+ * Auto-hidden buttons are those that re-appear as soon as we have enough available space.
+ */
+ void setAutoHidden(MASK button_types, bool hide);
+
/// Buttons automatically hidden due to lack of space.
MASK mResizeState;