From b7eb465cdc692210c55b5acb5bb2c4606bd613db Mon Sep 17 00:00:00 2001 From: Ansariel Date: Sun, 1 Nov 2015 16:33:04 +0100 Subject: [PATCH] FIRE-5317: Fixed size buttons in bottom toolbar are too big --- indra/llui/lltoolbar.cpp | 17 ++++++++++++++--- indra/llui/lltoolbar.h | 4 ++++ .../ansastorm/xui/en/panel_toolbar_view.xml | 1 + .../skins/default/xui/en/panel_toolbar_view.xml | 1 + .../metaharper/xui/en/panel_toolbar_view.xml | 1 + .../starlight/xui/en/panel_toolbar_view.xml | 1 + .../starlightcui/xui/en/panel_toolbar_view.xml | 1 + 7 files changed, 23 insertions(+), 3 deletions(-) diff --git a/indra/llui/lltoolbar.cpp b/indra/llui/lltoolbar.cpp index dbbdb228a6..b7eb747947 100755 --- a/indra/llui/lltoolbar.cpp +++ b/indra/llui/lltoolbar.cpp @@ -36,6 +36,8 @@ #include "llinventory.h" #include "lliconctrl.h" +#include "lllayoutstack.h" + // uncomment this and remove the one in llui.cpp when there is an external reference to this translation unit // thanks, MSVC! //static LLDefaultChildRegistry::Register r1("toolbar"); @@ -115,7 +117,8 @@ LLToolBar::Params::Params() button_panel("button_panel"), button("button"), layout_style("layout_style",LLToolBarEnums::LAYOUT_STYLE_NONE), - alignment("alignment",LLToolBarEnums::ALIGN_CENTER) + alignment("alignment",LLToolBarEnums::ALIGN_CENTER), + max_rows("max_rows", 0) // {} @@ -150,7 +153,8 @@ LLToolBar::LLToolBar(const LLToolBar::Params& p) //mCenterPanel(NULL) mCenterPanel(NULL), mLayoutStyle(p.layout_style), - mAlignment(p.alignment) + mAlignment(p.alignment), + mMaxRows(p.max_rows) // { mButtonParams[LLToolBarEnums::BTNTYPE_ICONS_WITH_TEXT] = p.button_icon_and_text; @@ -779,9 +783,16 @@ void LLToolBar::updateLayoutAsNeeded() S32 width = button->getInitialWidth(); if (width > equalized_width) { - equalized_width=width; + equalized_width = width; } } + + S32 total_button_width = mButtons.size() * equalized_width + (mButtons.size() + 1) * mPadBetween; + if (mMaxRows > 0 && orientation == LLLayoutStack::HORIZONTAL && total_button_width > full_screen_width) + { + S32 buttons_per_row = (S32)ceilf((F32)mButtons.size() / (F32)mMaxRows); + equalized_width = (full_screen_width - mPadBetween * (buttons_per_row + 1)) / buttons_per_row; + } } // diff --git a/indra/llui/lltoolbar.h b/indra/llui/lltoolbar.h index dfa675edcd..aa336ac8a6 100755 --- a/indra/llui/lltoolbar.h +++ b/indra/llui/lltoolbar.h @@ -260,6 +260,8 @@ public: Optional layout_style; // Add layout style parameter to XUI Optional alignment; // Add alignment parameter to XUI + Optional max_rows; // FIRE-5137: Fix fixed size button layout + Params(); }; @@ -345,6 +347,8 @@ private: mPadBottom, mPadBetween, mMinGirth; + // FIRE-5137: Fix fixed size button layout + const S32 mMaxRows; // drag and drop state tool_startdrag_callback_t mStartDragItemCallback; diff --git a/indra/newview/skins/ansastorm/xui/en/panel_toolbar_view.xml b/indra/newview/skins/ansastorm/xui/en/panel_toolbar_view.xml index 72fe9b1e8b..a87f701276 100644 --- a/indra/newview/skins/ansastorm/xui/en/panel_toolbar_view.xml +++ b/indra/newview/skins/ansastorm/xui/en/panel_toolbar_view.xml @@ -268,6 +268,7 @@ side="bottom" follows="left|right|bottom" button_display_mode="icons_with_text" + max_rows="2" visible="true">