diff options
-rw-r--r-- | indra/newview/llbottomtray.cpp | 61 | ||||
-rw-r--r-- | indra/newview/llbottomtray.h | 4 |
2 files changed, 23 insertions, 42 deletions
diff --git a/indra/newview/llbottomtray.cpp b/indra/newview/llbottomtray.cpp index 908fe15be6..0ebf9947e3 100644 --- a/indra/newview/llbottomtray.cpp +++ b/indra/newview/llbottomtray.cpp @@ -348,15 +348,14 @@ void LLBottomTray::verifyChildControlsSizes() #define __FEATURE_EXT_991 void LLBottomTray::reshape(S32 width, S32 height, BOOL called_from_parent) { - static S32 depth = 0; -if (0 == depth) lldebugs << "****************************************" << llendl; + lldebugs << "****************************************" << llendl; - S32 prev_width = getRect().getWidth(); - lldebugs << "Reshaping: depth: " << ++depth + S32 current_width = getRect().getWidth(); + lldebugs << "Reshaping: " << ", width: " << width << ", height: " << height << ", called_from_parent: " << called_from_parent - << ", cur width: " << prev_width + << ", cur width: " << current_width << ", cur height: " << getRect().getHeight() << llendl; @@ -365,17 +364,9 @@ if (0 == depth) lldebugs << "****************************************" << llendl if (mChicletPanel && mToolbarStack && mNearbyChatBar) { - verifyChildControlsSizes(); - updateResizeState(width, prev_width); - - if (RS_NORESIZE != mResizeState) - { - -// mToolbarStack->updatePanelAutoResize(PANEL_CHICLET_NAME, mResizeState & RS_CHICLET_PANEL); mToolbarStack->updatePanelAutoResize(PANEL_CHICLET_NAME, TRUE); - -// mToolbarStack->updatePanelAutoResize(PANEL_CHATBAR_NAME, mResizeState & RS_CHATBAR_INPUT); - } + verifyChildControlsSizes(); + updateResizeState(width, current_width); } LLPanel::reshape(width, height, called_from_parent); @@ -383,20 +374,18 @@ if (0 == depth) lldebugs << "****************************************" << llendl if (mNearbyChatBar) log(mNearbyChatBar, "after"); if (mChicletPanel) log(mChicletPanel, "after"); - - --depth; } -void LLBottomTray::updateResizeState(S32 width, S32 height) +void LLBottomTray::updateResizeState(S32 new_width, S32 cur_width) { mResizeState = RS_NORESIZE; static MASK prev_resize_state = mResizeState; MASK compensative_view_item_mask = RS_CHATBAR_INPUT; LLPanel* compansative_view = mNearbyChatBar; - S32 delta_width = width - height; + S32 delta_width = new_width - cur_width; // if (delta_width == 0) return; - bool shrink = width < height; + bool shrink = new_width < cur_width; const S32 chiclet_panel_width = mChicletPanel->getParent()->getRect().getWidth(); const S32 chiclet_panel_min_width = mChicletPanel->getMinWidth(); @@ -554,58 +543,46 @@ void LLBottomTray::updateResizeState(S32 width, S32 height) S32 available_width_chiclet = chiclet_panel_width - chiclet_panel_min_width; S32 available_width = delta_width + chatbar_available_shrink_width + available_width_chiclet; S32 buttons_required_width = 0; //How many room will take shown buttons - if (available_width > 0 && processShowButton(mGesturePanel, &available_width)) + if (available_width > 0 && processShowButton(mGesturePanel, &available_width, &buttons_required_width)) { mResizeState |= RS_BUTTON_GESTURES | compensative_view_item_mask; - delta_width -= mGesturePanel->getRect().getWidth(); - buttons_required_width += mGesturePanel->getRect().getWidth(); lldebugs << "RS_BUTTON_GESTURES" << ", buttons_required_width: " << buttons_required_width - << ", delta_width: " << delta_width << llendl; showGestureButton(true); } - if (available_width > 0 && processShowButton(mMovementPanel, &available_width)) + if (available_width > 0 && processShowButton(mMovementPanel, &available_width, &buttons_required_width)) { mResizeState |= RS_BUTTON_MOVEMENT | compensative_view_item_mask; - delta_width -= mMovementPanel->getRect().getWidth(); - buttons_required_width += mMovementPanel->getRect().getWidth(); lldebugs << "RS_BUTTON_MOVEMENT" << ", buttons_required_width: " << buttons_required_width - << ", delta_width: " << delta_width << llendl; showMoveButton(true); } - if (available_width > 0 && processShowButton(mCamPanel, &available_width)) + if (available_width > 0 && processShowButton(mCamPanel, &available_width, &buttons_required_width)) { mResizeState |= RS_BUTTON_CAMERA | compensative_view_item_mask; - delta_width -= mCamPanel->getRect().getWidth(); - buttons_required_width += mCamPanel->getRect().getWidth(); lldebugs << "RS_BUTTON_CAMERA " << ", buttons_required_width: " << buttons_required_width - << ", delta_width: " << delta_width << llendl; showCameraButton(true); } - if (available_width > 0 && processShowButton(mSnapshotPanel, &available_width)) + if (available_width > 0 && processShowButton(mSnapshotPanel, &available_width, &buttons_required_width)) { mResizeState |= RS_BUTTON_SNAPSHOT | compensative_view_item_mask; - delta_width -= mSnapshotPanel->getRect().getWidth(); - buttons_required_width += mSnapshotPanel->getRect().getWidth(); lldebugs << "RS_BUTTON_SNAPSHOT" << ", buttons_required_width: " << buttons_required_width - << ", delta_width: " << delta_width << llendl; showSnapshotButton(true); } - S32 total_delta_width = width - height; + S32 total_delta_width = new_width - cur_width; // if we have to show some buttons but whidth increasing is not enough... if (buttons_required_width > 0 && total_delta_width < buttons_required_width) @@ -639,8 +616,11 @@ void LLBottomTray::updateResizeState(S32 width, S32 height) } } -// TODO: mantipov: probably need delta_width -= buttons_required_width & remove calculating from the buttons processing - // how many space can nearby chat take? + + // shown buttons take some space, rest should be processed by nearby chatbar & chiclet panels + delta_width -= buttons_required_width; + + // how many space can nearby chatbar take? S32 chatbar_panel_width_ = mNearbyChatBar->getRect().getWidth(); if (delta_width > 0 && chatbar_panel_width_ < chatbar_panel_max_width) { @@ -661,7 +641,7 @@ void LLBottomTray::updateResizeState(S32 width, S32 height) lldebugs << "New resize state: " << mResizeState << llendl; } -bool LLBottomTray::processShowButton(LLPanel* panel, S32* available_width) +bool LLBottomTray::processShowButton(LLPanel* panel, S32* available_width, S32* buttons_required_width) { bool can_be_shown = canButtonBeShown(panel); if (can_be_shown) @@ -672,6 +652,7 @@ bool LLBottomTray::processShowButton(LLPanel* panel, S32* available_width) if (can_be_shown) { *available_width -= required_width; + *buttons_required_width += required_width; } } diff --git a/indra/newview/llbottomtray.h b/indra/newview/llbottomtray.h index 4a763e6c7c..509f8b1e41 100644 --- a/indra/newview/llbottomtray.h +++ b/indra/newview/llbottomtray.h @@ -84,10 +84,10 @@ public: private: - void updateResizeState(S32 width, S32 height); + void updateResizeState(S32 new_width, S32 cur_width); void verifyChildControlsSizes(); void log(LLView* panel, const std::string& descr); - bool processShowButton(LLPanel* panel, S32* available_width); + bool processShowButton(LLPanel* panel, S32* available_width, S32* buttons_required_width); bool canButtonBeShown(LLPanel* panel) const; MASK mResizeState; |