Skip to content
Snippets Groups Projects
Commit cff807df authored by Mike Antipov's avatar Mike Antipov
Browse files

Work on major sub-task EXT-991 (Update bottom bar behavior on resize)

 - refactored logic increasing of width
 - fixed bug with incorrect work in some cases

--HG--
branch : product-engine
parent eb05116e
No related branches found
No related tags found
No related merge requests found
......@@ -393,10 +393,10 @@ void LLBottomTray::updateResizeState(S32 width, S32 height)
static MASK prev_resize_state = mResizeState;
MASK compensative_view_item_mask = RS_CHATBAR_INPUT;
LLPanel* compansative_view = mNearbyChatBar;
S32 compensative_delta_width = 0;
S32 delta_width = width - height;
// if (delta_width == 0) return;
bool shrink = width < height;
const S32 chiclet_panel_width = mChicletPanel->getParent()->getRect().getWidth();
const S32 chiclet_panel_min_width = mChicletPanel->getMinWidth();
......@@ -414,8 +414,9 @@ void LLBottomTray::updateResizeState(S32 width, S32 height)
bool still_should_be_processed = true;
// bottom tray is narrowed
if (width < height)
if (shrink)
{
S32 compensative_delta_width = 0;
if (chiclet_panel_width > chiclet_panel_min_width)
{
// we have some space to decrease chiclet panel
......@@ -549,17 +550,17 @@ void LLBottomTray::updateResizeState(S32 width, S32 height)
// bottom tray is widen
else
{
S32 available_width_chat = chatbar_panel_width - chatbar_panel_min_width;
S32 chatbar_available_shrink_width = chatbar_panel_width - chatbar_panel_min_width;
S32 available_width_chiclet = chiclet_panel_width - chiclet_panel_min_width;
S32 available_width = delta_width + available_width_chat + available_width_chiclet;
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))
{
mResizeState |= RS_BUTTON_GESTURES | compensative_view_item_mask;
delta_width -= mGesturePanel->getRect().getWidth();
compensative_delta_width -= mGesturePanel->getRect().getWidth();
buttons_required_width += mGesturePanel->getRect().getWidth();
lldebugs << "RS_BUTTON_GESTURES"
<< ", compensative_delta_width: " << compensative_delta_width
<< ", buttons_required_width: " << buttons_required_width
<< ", delta_width: " << delta_width
<< llendl;
showGestureButton(true);
......@@ -569,10 +570,10 @@ void LLBottomTray::updateResizeState(S32 width, S32 height)
{
mResizeState |= RS_BUTTON_MOVEMENT | compensative_view_item_mask;
delta_width -= mMovementPanel->getRect().getWidth();
compensative_delta_width -= mMovementPanel->getRect().getWidth();
buttons_required_width += mMovementPanel->getRect().getWidth();
lldebugs << "RS_BUTTON_MOVEMENT"
<< ", compensative_delta_width: " << compensative_delta_width
<< ", buttons_required_width: " << buttons_required_width
<< ", delta_width: " << delta_width
<< llendl;
showMoveButton(true);
......@@ -582,10 +583,10 @@ void LLBottomTray::updateResizeState(S32 width, S32 height)
{
mResizeState |= RS_BUTTON_CAMERA | compensative_view_item_mask;
delta_width -= mCamPanel->getRect().getWidth();
compensative_delta_width -= mCamPanel->getRect().getWidth();
buttons_required_width += mCamPanel->getRect().getWidth();
lldebugs << "RS_BUTTON_CAMERA "
<< ", compensative_delta_width: " << compensative_delta_width
<< ", buttons_required_width: " << buttons_required_width
<< ", delta_width: " << delta_width
<< llendl;
showCameraButton(true);
......@@ -595,51 +596,55 @@ void LLBottomTray::updateResizeState(S32 width, S32 height)
{
mResizeState |= RS_BUTTON_SNAPSHOT | compensative_view_item_mask;
delta_width -= mSnapshotPanel->getRect().getWidth();
compensative_delta_width -= mSnapshotPanel->getRect().getWidth();
buttons_required_width += mSnapshotPanel->getRect().getWidth();
lldebugs << "RS_BUTTON_SNAPSHOT"
<< ", compensative_delta_width: " << compensative_delta_width
<< ", buttons_required_width: " << buttons_required_width
<< ", delta_width: " << delta_width
<< llendl;
showSnapshotButton(true);
}
if (compensative_delta_width != 0)
S32 total_delta_width = width - height;
// if we have to show some buttons but whidth increasing is not enough...
if (buttons_required_width > 0 && total_delta_width < buttons_required_width)
{
S32 required_to_process_width = -compensative_delta_width;
S32 total_delta_width = width - height;
// ... let's shrink nearby chat & chiclet panels
S32 required_to_process_width = buttons_required_width;
// 1. use delta width of resizing
required_to_process_width -= total_delta_width;
// 2. use delta width of chatbar
S32 chatbar_compensative_delta_width = required_to_process_width;
if (available_width_chat < chatbar_compensative_delta_width)
// 2. use delta width available via decreasing of nearby chat panel
S32 chatbar_shrink_width = required_to_process_width;
if (chatbar_available_shrink_width < chatbar_shrink_width)
{
chatbar_compensative_delta_width = available_width_chat;
chatbar_shrink_width = chatbar_available_shrink_width;
}
log(compansative_view, "increase width: before applying compensative width: ");
compansative_view->reshape(compansative_view->getRect().getWidth() - chatbar_compensative_delta_width, compansative_view->getRect().getHeight() );
compansative_view->reshape(compansative_view->getRect().getWidth() - chatbar_shrink_width, compansative_view->getRect().getHeight() );
if (compansative_view) log(compansative_view, "after applying compensative width: ");
lldebugs << chatbar_compensative_delta_width << llendl;
lldebugs << chatbar_shrink_width << llendl;
// 3. use delta width of chiclet panel
required_to_process_width -= chatbar_compensative_delta_width;
// 3. use delta width available via decreasing of chiclet panel
required_to_process_width -= chatbar_shrink_width;
mChicletPanel->getParent()->reshape(mChicletPanel->getParent()->getRect().getWidth() - required_to_process_width, mChicletPanel->getParent()->getRect().getHeight());
log(mChicletPanel, "after applying compensative width for chiclets: ");
lldebugs << required_to_process_width << llendl;
if (required_to_process_width > 0)
{
mChicletPanel->getParent()->reshape(mChicletPanel->getParent()->getRect().getWidth() - required_to_process_width, mChicletPanel->getParent()->getRect().getHeight());
log(mChicletPanel, "after applying compensative width for chiclets: ");
lldebugs << required_to_process_width << llendl;
}
}
if (delta_width > 0 && chatbar_panel_width < chatbar_panel_max_width)
// TODO: mantipov: probably need delta_width -= buttons_required_width & remove calculating from the buttons processing
// how many space can nearby chat take?
S32 chatbar_panel_width_ = mNearbyChatBar->getRect().getWidth();
if (delta_width > 0 && chatbar_panel_width_ < chatbar_panel_max_width)
{
mResizeState |= RS_CHATBAR_INPUT;
// how many space can nearby chat take?
S32 chatbar_panel_width_ = mNearbyChatBar->getRect().getWidth();
S32 delta_panel_max = chatbar_panel_max_width - chatbar_panel_width_;
S32 delta_panel = llmin(delta_width, delta_panel_max);
delta_width -= delta_panel_max;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment