CHUI-808 FIXED Draggable separator between conversations and message pane is not discoverable:

- final solution;
meow-7.2.2
maksymsproductengine 2013-04-16 04:55:09 +03:00
parent 4106d203e0
commit 0193a7b74c
12 changed files with 339 additions and 159 deletions

View File

@ -214,8 +214,15 @@ LLLayoutStack::Params::Params()
open_time_constant("open_time_constant", 0.02f),
close_time_constant("close_time_constant", 0.03f),
resize_bar_overlap("resize_bar_overlap", 1),
border_size("border_size", LLCachedControl<S32>(*LLUI::sSettingGroups["config"], "UIResizeBarHeight", 0))
{}
border_size("border_size", LLCachedControl<S32>(*LLUI::sSettingGroups["config"], "UIResizeBarHeight", 0)),
show_drag_handle("show_drag_handle", false),
drag_handle_first_indent("drag_handle_first_indent", 0),
drag_handle_second_indent("drag_handle_second_indent", 0),
drag_handle_thickness("drag_handle_thickness", 5),
drag_handle_shift("drag_handle_shift", 2)
{
addSynonym(border_size, "drag_handle_gap");
}
LLLayoutStack::LLLayoutStack(const LLLayoutStack::Params& p)
: LLView(p),
@ -227,8 +234,14 @@ LLLayoutStack::LLLayoutStack(const LLLayoutStack::Params& p)
mClip(p.clip),
mOpenTimeConstant(p.open_time_constant),
mCloseTimeConstant(p.close_time_constant),
mResizeBarOverlap(p.resize_bar_overlap)
{}
mResizeBarOverlap(p.resize_bar_overlap),
mShowDragHandle(p.show_drag_handle),
mDragHandleFirstIndent(p.drag_handle_first_indent),
mDragHandleSecondIndent(p.drag_handle_second_indent),
mDragHandleThickness(p.drag_handle_thickness),
mDragHandleShift(p.drag_handle_shift)
{
}
LLLayoutStack::~LLLayoutStack()
{
@ -262,6 +275,26 @@ void LLLayoutStack::draw()
drawChild(panelp, 0, 0, !clip_rect.isEmpty());
}
}
const LLView::child_list_t * child_listp = getChildList();
BOOST_FOREACH(LLView * childp, * child_listp)
{
LLResizeBar * resize_barp = dynamic_cast<LLResizeBar*>(childp);
if (resize_barp && resize_barp->isShowDragHandle() && resize_barp->getVisible() && resize_barp->getRect().isValid())
{
LLRect screen_rect = resize_barp->calcScreenRect();
if (LLUI::getRootView()->getLocalRect().overlaps(screen_rect) && LLUI::sDirtyRect.overlaps(screen_rect))
{
LLUI::pushMatrix();
{
const LLRect& rb_rect(resize_barp->getRect());
LLUI::translate(rb_rect.mLeft, rb_rect.mBottom);
resize_barp->draw();
}
LLUI::popMatrix();
}
}
}
}
void LLLayoutStack::removeChild(LLView* view)
@ -390,7 +423,6 @@ void LLLayoutStack::updateLayout()
BOOST_FOREACH(LLLayoutPanel* panelp, mPanels)
{
F32 panel_dim = llmax(panelp->getExpandedMinDim(), panelp->mTargetDim);
F32 panel_visible_dim = panelp->getVisibleDim();
LLRect panel_rect;
if (mOrientation == HORIZONTAL)
@ -407,27 +439,61 @@ void LLLayoutStack::updateLayout()
getRect().getWidth(),
llround(panel_dim));
}
panelp->setIgnoreReshape(true);
panelp->setShape(panel_rect);
panelp->setIgnoreReshape(false);
LLRect resize_bar_rect(panel_rect);
LLResizeBar * resize_barp = panelp->getResizeBar();
bool show_drag_handle = resize_barp->isShowDragHandle();
F32 panel_spacing = (F32)mPanelSpacing * panelp->getVisibleAmount();
F32 panel_visible_dim = panelp->getVisibleDim();
S32 panel_spacing_round = (S32)(llround(panel_spacing));
if (mOrientation == HORIZONTAL)
{
resize_bar_rect.mLeft = panel_rect.mRight - mResizeBarOverlap;
resize_bar_rect.mRight = panel_rect.mRight + (S32)(llround(panel_spacing)) + mResizeBarOverlap;
cur_pos += panel_visible_dim + panel_spacing;
if (show_drag_handle && panel_spacing_round > mDragHandleThickness)
{
resize_bar_rect.mLeft = panel_rect.mRight + mDragHandleShift;
resize_bar_rect.mRight = resize_bar_rect.mLeft + mDragHandleThickness;
}
else
{
resize_bar_rect.mLeft = panel_rect.mRight - mResizeBarOverlap;
resize_bar_rect.mRight = panel_rect.mRight + panel_spacing_round + mResizeBarOverlap;
}
if (show_drag_handle)
{
resize_bar_rect.mBottom += mDragHandleSecondIndent;
resize_bar_rect.mTop -= mDragHandleFirstIndent;
}
}
else //VERTICAL
{
resize_bar_rect.mTop = panel_rect.mBottom + mResizeBarOverlap;
resize_bar_rect.mBottom = panel_rect.mBottom - (S32)(llround(panel_spacing)) - mResizeBarOverlap;
cur_pos -= panel_visible_dim + panel_spacing;
if (show_drag_handle && panel_spacing_round > mDragHandleThickness)
{
resize_bar_rect.mTop = panel_rect.mBottom - mDragHandleShift;
resize_bar_rect.mBottom = resize_bar_rect.mTop - mDragHandleThickness;
}
else
{
resize_bar_rect.mTop = panel_rect.mBottom + mResizeBarOverlap;
resize_bar_rect.mBottom = panel_rect.mBottom - panel_spacing_round - mResizeBarOverlap;
}
if (show_drag_handle)
{
resize_bar_rect.mLeft += mDragHandleFirstIndent;
resize_bar_rect.mRight -= mDragHandleSecondIndent;
}
}
panelp->setIgnoreReshape(true);
panelp->setShape(panel_rect);
panelp->setIgnoreReshape(false);
panelp->mResizeBar->setShape(resize_bar_rect);
}
@ -475,15 +541,13 @@ void LLLayoutStack::createResizeBar(LLLayoutPanel* panelp)
{
if (lp->mResizeBar == NULL)
{
LLResizeBar::Side side = (mOrientation == HORIZONTAL) ? LLResizeBar::RIGHT : LLResizeBar::BOTTOM;
LLRect resize_bar_rect = getRect();
LLResizeBar::Params resize_params;
resize_params.name("resize");
resize_params.resizing_view(lp);
resize_params.min_size(lp->getRelevantMinDim());
resize_params.side(side);
resize_params.side((mOrientation == HORIZONTAL) ? LLResizeBar::RIGHT : LLResizeBar::BOTTOM);
resize_params.snapping_enabled(false);
resize_params.show_drag_handle(mShowDragHandle);
LLResizeBar* resize_bar = LLUICtrlFactory::create<LLResizeBar>(resize_params);
lp->mResizeBar = resize_bar;
LLView::addChild(resize_bar, 0);
@ -865,3 +929,4 @@ void LLLayoutStack::updateResizeBarLimits()
previous_visible_panelp = visible_panelp;
}
}

View File

@ -62,6 +62,11 @@ public:
Optional<F32> open_time_constant,
close_time_constant;
Optional<S32> resize_bar_overlap;
Optional<bool> show_drag_handle;
Optional<S32> drag_handle_first_indent;
Optional<S32> drag_handle_second_indent;
Optional<S32> drag_handle_thickness;
Optional<S32> drag_handle_shift;
Params();
};
@ -126,6 +131,11 @@ private:
F32 mCloseTimeConstant;
bool mNeedsLayout;
S32 mResizeBarOverlap;
bool mShowDragHandle;
S32 mDragHandleFirstIndent;
S32 mDragHandleSecondIndent;
S32 mDragHandleThickness;
S32 mDragHandleShift;
}; // end class LLLayoutStack

View File

@ -28,14 +28,53 @@
#include "llresizebar.h"
#include "lllocalcliprect.h"
#include "llmath.h"
#include "llui.h"
#include "llmenugl.h"
#include "llfocusmgr.h"
#include "llwindow.h"
class LLImagePanel : public LLPanel
{
public:
struct Params : public LLInitParam::Block<Params, LLPanel::Params>
{
Optional<bool> horizontal;
Params() : horizontal("horizontal", false) {}
};
LLImagePanel(const Params& p) : LLPanel(p), mHorizontal(p.horizontal) {}
virtual ~LLImagePanel() {}
void draw()
{
const LLRect& parent_rect = getParent()->getRect();
const LLRect& rect = getRect();
LLRect clip_rect( -rect.mLeft, parent_rect.getHeight() - rect.mBottom - 2
, parent_rect.getWidth() - rect.mLeft - (mHorizontal ? 2 : 0), -rect.mBottom);
LLLocalClipRect clip(clip_rect);
LLPanel::draw();
}
private:
bool mHorizontal;
};
static LLDefaultChildRegistry::Register<LLImagePanel> t1("resize_bar_image_panel");
LLResizeBar::Params::Params()
: max_size("max_size", S32_MAX),
snapping_enabled("snapping_enabled", true),
resizing_view("resizing_view"),
side("side"),
allow_double_click_snapping("allow_double_click_snapping", true),
show_drag_handle("show_drag_handle", false)
{
name = "resize_bar";
}
LLResizeBar::LLResizeBar(const LLResizeBar::Params& p)
: LLView(p),
: LLPanel(p),
mDragLastScreenX( 0 ),
mDragLastScreenY( 0 ),
mLastMouseScreenX( 0 ),
@ -46,7 +85,9 @@ LLResizeBar::LLResizeBar(const LLResizeBar::Params& p)
mSnappingEnabled(p.snapping_enabled),
mAllowDoubleClickSnapping(p.allow_double_click_snapping),
mResizingView(p.resizing_view),
mResizeListener(NULL)
mResizeListener(NULL),
mShowDragHandle(p.show_drag_handle),
mImagePanel(NULL)
{
setFollowsNone();
// set up some generically good follow code.
@ -75,8 +116,37 @@ LLResizeBar::LLResizeBar(const LLResizeBar::Params& p)
default:
break;
}
if (mShowDragHandle)
{
LLViewBorder::Params border_params;
border_params.border_thickness = 1;
border_params.highlight_light_color = LLUIColorTable::instance().getColor("ResizebarBorderlight");
border_params.shadow_dark_color = LLUIColorTable::instance().getColor("ResizebarBorderDark");
addBorder(border_params);
setBorderVisible(TRUE);
LLImagePanel::Params image_panel;
mDragHandleImage = LLUI::getUIImage(LLResizeBar::RIGHT == mSide ? "Vertical Drag Handle" : "Horizontal Drag Handle");
image_panel.bg_alpha_image = mDragHandleImage;
image_panel.background_visible = true;
image_panel.horizontal = (LLResizeBar::BOTTOM == mSide);
mImagePanel = LLUICtrlFactory::create<LLImagePanel>(image_panel);
setImagePanel(mImagePanel);
}
}
BOOL LLResizeBar::postBuild()
{
if (mShowDragHandle)
{
setBackgroundVisible(TRUE);
setTransparentColor(LLUIColorTable::instance().getColor("ResizebarBody"));
}
return LLPanel::postBuild();
}
BOOL LLResizeBar::handleMouseDown(S32 x, S32 y, MASK mask)
{
@ -342,3 +412,39 @@ BOOL LLResizeBar::handleDoubleClick(S32 x, S32 y, MASK mask)
return TRUE;
}
void LLResizeBar::setImagePanel(LLPanel * panelp)
{
const LLView::child_list_t * children = getChildList();
if (getChildCount() == 2)
{
LLPanel * image_panelp = dynamic_cast<LLPanel*>(children->back());
if (image_panelp)
{
removeChild(image_panelp);
delete image_panelp;
}
}
addChild(panelp);
sendChildToBack(panelp);
}
LLPanel * LLResizeBar::getImagePanel() const
{
return getChildCount() > 0 ? (LLPanel *)getChildList()->back() : NULL;
}
void LLResizeBar::draw()
{
if (mShowDragHandle)
{
S32 image_width = mDragHandleImage->getTextureWidth();
S32 image_height = mDragHandleImage->getTextureHeight();
const LLRect& panel_rect = getRect();
S32 image_left = (panel_rect.getWidth() - image_width) / 2 - 1;
S32 image_bottom = (panel_rect.getHeight() - image_height) / 2;
mImagePanel->setRect(LLRect(image_left, image_bottom + image_height, image_left + image_width, image_bottom));
}
LLPanel::draw();
}

View File

@ -27,15 +27,14 @@
#ifndef LL_RESIZEBAR_H
#define LL_RESIZEBAR_H
#include "llview.h"
#include "llcoord.h"
#include "llpanel.h"
class LLResizeBar : public LLView
class LLResizeBar : public LLPanel
{
public:
enum Side { LEFT, TOP, RIGHT, BOTTOM };
struct Params : public LLInitParam::Block<Params, LLView::Params>
struct Params : public LLInitParam::Block<Params, LLPanel::Params>
{
Mandatory<LLView*> resizing_view;
Mandatory<Side> side;
@ -44,24 +43,19 @@ public:
Optional<S32> max_size;
Optional<bool> snapping_enabled;
Optional<bool> allow_double_click_snapping;
Optional<bool> show_drag_handle;
Params()
: max_size("max_size", S32_MAX),
snapping_enabled("snapping_enabled", true),
resizing_view("resizing_view"),
side("side"),
allow_double_click_snapping("allow_double_click_snapping", true)
{
name = "resize_bar";
}
Params();
};
protected:
LLResizeBar(const LLResizeBar::Params& p);
friend class LLUICtrlFactory;
/*virtual*/ BOOL postBuild();
public:
// virtual void draw(); No appearance
virtual void draw();
virtual BOOL handleHover(S32 x, S32 y, MASK mask);
virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask);
virtual BOOL handleMouseUp(S32 x, S32 y, MASK mask);
@ -72,20 +66,26 @@ public:
void setAllowDoubleClickSnapping(BOOL allow) { mAllowDoubleClickSnapping = allow; }
bool canResize() { return getEnabled() && mMaxSize > mMinSize; }
void setResizeListener(boost::function<void(void*)> listener) {mResizeListener = listener;}
BOOL isShowDragHandle() const { return mShowDragHandle; }
void setImagePanel(LLPanel * panelp);
LLPanel * getImagePanel() const;
private:
S32 mDragLastScreenX;
S32 mDragLastScreenY;
S32 mLastMouseScreenX;
S32 mLastMouseScreenY;
LLCoordGL mLastMouseDir;
S32 mMinSize;
S32 mMaxSize;
const Side mSide;
BOOL mSnappingEnabled;
BOOL mAllowDoubleClickSnapping;
LLView* mResizingView;
boost::function<void(void*)> mResizeListener;
S32 mDragLastScreenX;
S32 mDragLastScreenY;
S32 mLastMouseScreenX;
S32 mLastMouseScreenY;
LLCoordGL mLastMouseDir;
S32 mMinSize;
S32 mMaxSize;
const Side mSide;
BOOL mSnappingEnabled;
BOOL mAllowDoubleClickSnapping;
BOOL mShowDragHandle;
LLView* mResizingView;
boost::function<void(void*)> mResizeListener;
LLPointer<LLUIImage> mDragHandleImage;
LLPanel * mImagePanel;
};
#endif // LL_RESIZEBAR_H

View File

@ -817,15 +817,12 @@ void LLFloaterIMContainer::assignResizeLimits()
bool is_conv_pane_expanded = !mConversationsPane->isCollapsed();
bool is_msg_pane_expanded = !mMessagesPane->isCollapsed();
// With two panels visible number of borders is three, because the borders
// between the panels are merged into one
S32 number_of_visible_borders = llmin((is_conv_pane_expanded? 2 : 0) + (is_msg_pane_expanded? 2 : 0), 3);
S32 summary_width_of_visible_borders = number_of_visible_borders * LLPANEL_BORDER_WIDTH;
S32 conv_pane_target_width = is_conv_pane_expanded?
(is_msg_pane_expanded?
mConversationsPane->getRect().getWidth()
: mConversationsPane->getExpandedMinDim())
: mConversationsPane->getMinDim();
S32 summary_width_of_visible_borders = (is_msg_pane_expanded ? mConversationsStack->getPanelSpacing() : 0) + 1;
S32 conv_pane_target_width = is_conv_pane_expanded
? ( is_msg_pane_expanded?mConversationsPane->getRect().getWidth():mConversationsPane->getExpandedMinDim() )
: mConversationsPane->getMinDim();
S32 msg_pane_min_width = is_msg_pane_expanded ? mMessagesPane->getExpandedMinDim() : 0;
S32 new_min_width = conv_pane_target_width + msg_pane_min_width + summary_width_of_visible_borders;

View File

@ -212,7 +212,7 @@ void LLFloaterIMSessionTab::assignResizeLimits()
mRightPartPanel->setIgnoreReshape(is_participants_pane_collapsed);
S32 participants_pane_target_width = is_participants_pane_collapsed?
0 : (mParticipantListPanel->getRect().getWidth() + LLPANEL_BORDER_WIDTH);
0 : (mParticipantListPanel->getRect().getWidth() + mParticipantListAndHistoryStack->getPanelSpacing());
S32 new_min_width = participants_pane_target_width + mRightPartPanel->getExpandedMinDim() + mFloaterExtraWidth;

View File

@ -864,4 +864,19 @@
<color
name="blue"
value="0 0 1 1"/>
<!--Resize bar colors -->
<color
name="ResizebarBorderlight"
value="0.231 0.231 0.231 1"/>
<color
name="ResizebarBorderDark"
value="0.133 0.133 0.133 1"/>
<color
name="ResizebarBody"
value="0.208 0.208 0.208 1"/>
</colors>

View File

@ -776,4 +776,7 @@ with the same filename but different name
<texture name="Popup_Caution" file_name="icons/pop_up_caution.png"/>
<texture name="Camera_Drag_Dot" file_name="world/CameraDragDot.png"/>
<texture name="NavBar Separator" file_name="navbar/separator.png"/>
<texture name="Horizontal Drag Handle" file_name="widgets/horizontal_drag_handle.png"/>
<texture name="Vertical Drag Handle" file_name="widgets/vertical_drag_handle.png"/>
</textures>

Binary file not shown.

After

Width:  |  Height:  |  Size: 197 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 196 B

View File

@ -25,23 +25,27 @@
<layout_stack
animate="true"
bottom="-1"
drag_handle_gap="6"
drag_handle_first_indent="27"
drag_handle_second_indent="10"
follows="all"
layout="topleft"
left="0"
name="conversations_stack"
orientation="horizontal"
right="-1"
show_drag_handle="true"
top="0">
<layout_panel
auto_resize="false"
user_resize="true"
name="conversations_layout_panel"
min_dim="38"
expanded_min_dim="156">
expanded_min_dim="136">
<layout_stack
animate="false"
follows="left|top|right"
height="35"
height="27"
layout="topleft"
left="0"
name="conversations_pane_buttons_stack"
@ -50,7 +54,6 @@
top="0">
<layout_panel
auto_resize="true"
height="35"
name="conversations_pane_buttons_expanded">
<menu_button
follows="top|left"
@ -64,7 +67,7 @@
left="5"
name="sort_btn"
tool_tip="View/sort options"
top="5"
top="1"
width="31" />
<button
follows="top|left"
@ -74,7 +77,7 @@
image_selected="Toolbar_Middle_Selected"
image_unselected="Toolbar_Middle_Off"
layout="topleft"
top="5"
top="1"
left_pad="2"
name="add_btn"
tool_tip="Start a new conversation"
@ -87,7 +90,7 @@
image_selected="Toolbar_Middle_Selected"
image_unselected="Toolbar_Middle_Off"
layout="topleft"
top="5"
top="1"
left_pad="2"
name="speak_btn"
tool_tip="Speak with people using your microphone"
@ -95,9 +98,8 @@
</layout_panel>
<layout_panel
auto_resize="false"
height="35"
name="conversations_pane_buttons_collapsed"
width="41">
width="31">
<button
follows="right|top"
height="25"
@ -106,8 +108,8 @@
image_selected="Toolbar_Middle_Selected"
image_unselected="Toolbar_Middle_Off"
layout="topleft"
top="5"
left="1"
top="1"
left="0"
name="expand_collapse_btn"
tool_tip="Collapse/Expand this list"
width="31" />
@ -119,7 +121,7 @@
layout="topleft"
name="conversations_list_panel"
opaque="true"
top="35"
top_pad="0"
left="5"
right="-1"/>
</layout_panel>
@ -127,7 +129,7 @@
auto_resize="true"
user_resize="true"
name="messages_layout_panel"
expanded_min_dim="222">
expanded_min_dim="232">
<panel_container
bottom="-1"
follows="all"
@ -136,44 +138,44 @@
name="im_box_tab_container"
right="-1"
top="0">
<panel
bottom="-1"
follows="all"
layout="topleft"
name="stub_panel"
opaque="true"
top_pad="0"
left="0"
right="-1">
<button
follows="right|top"
height="25"
image_hover_unselected="Toolbar_Middle_Over"
image_overlay="Conv_toolbar_collapse"
image_selected="Toolbar_Middle_Selected"
image_unselected="Toolbar_Middle_Off"
<panel
bottom="-1"
follows="all"
layout="topleft"
top="5"
right="-10"
name="stub_collapse_btn"
tool_tip="Collapse this pane"
width="31" />
<text
type="string"
clip_partial="false"
follows="left|top|right"
layout="topleft"
left="15"
right="-15"
name="stub_textbox"
top="25"
height="40"
valign="center"
parse_urls="true"
wrap="true">
This conversation is in a separate window. [secondlife:/// Bring it back.]
</text>
</panel>
name="stub_panel"
opaque="true"
top_pad="0"
left="0"
right="-1">
<button
follows="right|top"
height="25"
image_hover_unselected="Toolbar_Middle_Over"
image_overlay="Conv_toolbar_collapse"
image_selected="Toolbar_Middle_Selected"
image_unselected="Toolbar_Middle_Off"
layout="topleft"
top="1"
right="-10"
name="stub_collapse_btn"
tool_tip="Collapse this pane"
width="31" />
<text
type="string"
clip_partial="false"
follows="left|top|right"
layout="topleft"
left="15"
right="-15"
name="stub_textbox"
top="25"
height="40"
valign="center"
parse_urls="true"
wrap="true">
This conversation is in a separate window. [secondlife:/// Bring it back.]
</text>
</panel>
</panel_container>
</layout_panel>
</layout_stack>

View File

@ -70,27 +70,23 @@
top="0"
left="0"
right="-1"
bottom="-3">
bottom="-1">
<layout_stack
animate="false"
bottom="-1"
default_tab_group="2"
follows="all"
right="-5"
bottom="-1"
top="0"
left="3"
border_size="0"
layout="topleft"
orientation="vertical"
name="main_stack"
tab_group="1">
right="-3"
orientation="vertical"
tab_group="1"
top="0">
<layout_panel
auto_resize="false"
user_resize="false"
name="toolbar_panel"
height="35"
right="-1"
left="1">
height="25">
<menu_button
menu_filename="menu_im_session_showmodes.xml"
follows="top|left"
@ -103,7 +99,7 @@
left="5"
name="view_options_btn"
tool_tip="View/sort options"
top="5"
top="1"
width="31" />
<menu_button
menu_filename="menu_im_conversation.xml"
@ -114,7 +110,7 @@
image_selected="Toolbar_Middle_Selected"
image_unselected="Toolbar_Middle_Off"
layout="topleft"
top="5"
top="1"
left_pad="2"
name="gear_btn"
visible="false"
@ -129,7 +125,7 @@
image_selected="Toolbar_Middle_Selected"
image_unselected="Toolbar_Middle_Off"
layout="topleft"
top="5"
top="1"
left_pad="2"
name="add_btn"
tool_tip="Add someone to this conversation"
@ -142,7 +138,7 @@
image_selected="Toolbar_Middle_Selected"
image_unselected="Toolbar_Middle_Off"
layout="topleft"
top="5"
top="1"
left_pad="2"
name="voice_call_btn"
tool_tip="Open voice connection"
@ -167,8 +163,8 @@
image_selected="Toolbar_Middle_Selected"
image_unselected="Toolbar_Middle_Off"
layout="topleft"
top="5"
right="-67"
top="1"
right="-70"
name="close_btn"
tool_tip="End this conversation"
width="31" />
@ -180,7 +176,7 @@
image_selected="Toolbar_Middle_Selected"
image_unselected="Toolbar_Middle_Off"
layout="topleft"
top="5"
top="1"
left_pad="2"
name="expand_collapse_btn"
tool_tip="Collapse/Expand this pane"
@ -195,20 +191,21 @@
layout="topleft"
left_pad="2"
name="tear_off_btn"
top="5"
top="1"
width="31" />
</layout_panel>
<layout_panel
name="body_panel"
top="1"
bottom="-1"
auto_resize="true"
user_resize="false">
height="235">
<layout_stack
default_tab_group="2"
drag_handle_gap="6"
drag_handle_first_indent="0"
drag_handle_second_indent="1"
follows="all"
orientation="horizontal"
name="im_panels"
show_drag_handle="true"
tab_group="1"
top="0"
right="-1"
@ -220,14 +217,12 @@
min_dim="0"
width="150"
user_resize="true"
auto_resize="false"
bottom="-1" />
auto_resize="false" />
<layout_panel
default_tab_group="3"
tab_group="2"
name="right_part_holder"
min_width="221"
bottom="-1">
min_width="221">
<layout_stack
animate="true"
default_tab_group="2"
@ -236,7 +231,7 @@
name="translate_and_chat_stack"
tab_group="1"
top="0"
left="0"
left="1"
right="-1"
bottom="-1">
<layout_panel
@ -262,7 +257,7 @@
parse_highlights="true"
parse_urls="true"
right="-1"
left="5"
left="0"
top="0"
bottom="-1" />
</layout_panel>
@ -271,12 +266,8 @@
</layout_stack>
</layout_panel>
<layout_panel
top_delta="0"
top="0"
height="30"
bottom="-1"
height="35"
auto_resize="false"
user_resize="false"
name="chat_layout_panel">
<layout_stack
animate="false"
@ -285,15 +276,11 @@
orientation="horizontal"
name="input_panels"
top="0"
bottom="-2"
bottom="-1"
left="0"
right="-1">
<layout_panel
name="input_editor_layout_panel"
auto_resize="true"
user_resize="false"
top="0"
bottom="-1">
name="input_editor_layout_panel">
<chat_editor
layout="topleft"
expand_lines_count="5"
@ -306,32 +293,27 @@
max_length="1023"
spellcheck="true"
tab_group="3"
top="1"
bottom="-2"
left="4"
right="-4"
bottom="-8"
left="5"
right="-5"
wrap="true" />
</layout_panel>
<layout_panel
auto_resize="false"
user_resize="false"
name="input_button_layout_panel"
width="30"
top="0"
bottom="-1">
width="32">
<button
layout="topleft"
left="1"
right="-1"
top="1"
height="22"
top="4"
height="25"
follows="left|right|top"
image_hover_unselected="Toolbar_Middle_Over"
image_overlay="Conv_expand_one_line"
image_selected="Toolbar_Middle_Selected"
image_unselected="Toolbar_Middle_Off"
name="minz_btn"
tool_tip="Shows/hides message panel" />
tool_tip="Shows/hides message panel"
width="28" />
</layout_panel>
</layout_stack>
</layout_panel>