CHUI-855 FIXED Text entry bar auto expand does not resize
parent
3a31b47028
commit
da8f2ffb16
|
|
@ -25,6 +25,7 @@
|
|||
*/
|
||||
|
||||
#include "linden_common.h"
|
||||
#include "llscrollcontainer.h"
|
||||
|
||||
#include "llchatentry.h"
|
||||
|
||||
|
|
@ -42,7 +43,9 @@ LLChatEntry::LLChatEntry(const Params& p)
|
|||
mHasHistory(p.has_history),
|
||||
mIsExpandable(p.is_expandable),
|
||||
mExpandLinesCount(p.expand_lines_count),
|
||||
mPrevLinesCount(0)
|
||||
mPrevLinesCount(0),
|
||||
mSingleLineMode(false),
|
||||
mPrevExpandedLineCount(S32_MAX)
|
||||
{
|
||||
// Initialize current history line iterator
|
||||
mCurrentHistoryLine = mLineHistory.begin();
|
||||
|
|
@ -82,20 +85,23 @@ boost::signals2::connection LLChatEntry::setTextExpandedCallback(const commit_si
|
|||
|
||||
void LLChatEntry::expandText()
|
||||
{
|
||||
S32 line_count = mSingleLineMode ? 1 : mExpandLinesCount;
|
||||
|
||||
int visible_lines_count = llabs(getVisibleLines(true).first - getVisibleLines(true).second);
|
||||
bool can_expand = getLineCount() <= mExpandLinesCount;
|
||||
bool can_changed = getLineCount() <= line_count || line_count < mPrevExpandedLineCount ;
|
||||
mPrevExpandedLineCount = line_count;
|
||||
|
||||
// true if pasted text has more lines than expand height limit and expand limit is not reached yet
|
||||
bool text_pasted = (getLineCount() > mExpandLinesCount) && (visible_lines_count < mExpandLinesCount);
|
||||
bool text_pasted = (getLineCount() > line_count) && (visible_lines_count < line_count);
|
||||
|
||||
if (mIsExpandable && (can_expand || text_pasted) && getLineCount() != mPrevLinesCount)
|
||||
if (mIsExpandable && (can_changed || text_pasted || mSingleLineMode) && getLineCount() != mPrevLinesCount)
|
||||
{
|
||||
int lines_height = 0;
|
||||
if (text_pasted)
|
||||
{
|
||||
// text is pasted and now mLineInfoList.size() > mExpandLineCounts and mLineInfoList is not empty,
|
||||
// so lines_height is the sum of the last 'mExpandLinesCount' lines height
|
||||
lines_height = (mLineInfoList.end() - mExpandLinesCount)->mRect.mTop - mLineInfoList.back().mRect.mBottom;
|
||||
// so lines_height is the sum of the last 'expanded_line_count' lines height
|
||||
lines_height = (mLineInfoList.end() - line_count)->mRect.mTop - mLineInfoList.back().mRect.mBottom;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -114,6 +120,8 @@ void LLChatEntry::expandText()
|
|||
{
|
||||
(*mTextExpandedSignal)(this, LLSD() );
|
||||
}
|
||||
|
||||
needsReflow();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -235,3 +243,15 @@ BOOL LLChatEntry::handleSpecialKey(const KEY key, const MASK mask)
|
|||
|
||||
return handled;
|
||||
}
|
||||
|
||||
void LLChatEntry::enableSingleLineMode(bool single_line_mode)
|
||||
{
|
||||
if (mScroller)
|
||||
{
|
||||
mScroller->setSize(single_line_mode ? 0 : -1);
|
||||
}
|
||||
|
||||
mSingleLineMode = single_line_mode;
|
||||
mPrevLinesCount = -1;
|
||||
setWordWrap(!single_line_mode);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -65,6 +65,7 @@ public:
|
|||
/*virtual*/ void onFocusReceived();
|
||||
/*virtual*/ void onFocusLost();
|
||||
|
||||
void enableSingleLineMode(bool single_line_mode);
|
||||
boost::signals2::connection setTextExpandedCallback(const commit_signal_t::slot_type& cb);
|
||||
|
||||
private:
|
||||
|
|
@ -95,9 +96,11 @@ private:
|
|||
line_history_t mLineHistory; // line history storage
|
||||
bool mHasHistory; // flag for enabled/disabled line history
|
||||
bool mIsExpandable;
|
||||
bool mSingleLineMode;
|
||||
|
||||
int mExpandLinesCount;
|
||||
int mPrevLinesCount;
|
||||
S32 mExpandLinesCount;
|
||||
S32 mPrevLinesCount;
|
||||
S32 mPrevExpandedLineCount;
|
||||
};
|
||||
|
||||
#endif /* LLCHATENTRY_H_ */
|
||||
|
|
|
|||
|
|
@ -642,3 +642,8 @@ void LLScrollbar::onLineDownBtnPressed( const LLSD& data )
|
|||
{
|
||||
changeLine( mStepSize, TRUE );
|
||||
}
|
||||
|
||||
void LLScrollbar::setThickness(S32 thickness)
|
||||
{
|
||||
mThickness = thickness < 0 ? LLUI::sSettingGroups["config"]->getS32("UIScrollbarSize") : thickness;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -124,6 +124,9 @@ public:
|
|||
|
||||
void onLineUpBtnPressed(const LLSD& data);
|
||||
void onLineDownBtnPressed(const LLSD& data);
|
||||
|
||||
S32 getThickness() const { return mThickness; }
|
||||
void setThickness(S32 thickness);
|
||||
|
||||
private:
|
||||
void updateThumbRect();
|
||||
|
|
|
|||
|
|
@ -73,7 +73,8 @@ LLScrollContainer::Params::Params()
|
|||
hide_scrollbar("hide_scrollbar"),
|
||||
min_auto_scroll_rate("min_auto_scroll_rate", 100),
|
||||
max_auto_scroll_rate("max_auto_scroll_rate", 1000),
|
||||
reserve_scroll_corner("reserve_scroll_corner", false)
|
||||
reserve_scroll_corner("reserve_scroll_corner", false),
|
||||
size("size", -1)
|
||||
{}
|
||||
|
||||
|
||||
|
|
@ -88,9 +89,12 @@ LLScrollContainer::LLScrollContainer(const LLScrollContainer::Params& p)
|
|||
mReserveScrollCorner(p.reserve_scroll_corner),
|
||||
mMinAutoScrollRate(p.min_auto_scroll_rate),
|
||||
mMaxAutoScrollRate(p.max_auto_scroll_rate),
|
||||
mScrolledView(NULL)
|
||||
mScrolledView(NULL),
|
||||
mSize(p.size)
|
||||
{
|
||||
static LLUICachedControl<S32> scrollbar_size ("UIScrollbarSize", 0);
|
||||
static LLUICachedControl<S32> scrollbar_size_control ("UIScrollbarSize", 0);
|
||||
S32 scrollbar_size = (mSize == -1 ? scrollbar_size_control : mSize);
|
||||
|
||||
LLRect border_rect( 0, getRect().getHeight(), getRect().getWidth(), 0 );
|
||||
LLViewBorder::Params params;
|
||||
params.name("scroll border");
|
||||
|
|
@ -276,7 +280,6 @@ BOOL LLScrollContainer::handleDragAndDrop(S32 x, S32 y, MASK mask,
|
|||
EAcceptance* accept,
|
||||
std::string& tooltip_msg)
|
||||
{
|
||||
static LLUICachedControl<S32> scrollbar_size ("UIScrollbarSize", 0);
|
||||
// Scroll folder view if needed. Never accepts a drag or drop.
|
||||
*accept = ACCEPT_NO;
|
||||
BOOL handled = autoScroll(x, y);
|
||||
|
|
@ -292,7 +295,8 @@ BOOL LLScrollContainer::handleDragAndDrop(S32 x, S32 y, MASK mask,
|
|||
|
||||
bool LLScrollContainer::autoScroll(S32 x, S32 y)
|
||||
{
|
||||
static LLUICachedControl<S32> scrollbar_size ("UIScrollbarSize", 0);
|
||||
static LLUICachedControl<S32> scrollbar_size_control ("UIScrollbarSize", 0);
|
||||
S32 scrollbar_size = (mSize == -1 ? scrollbar_size_control : mSize);
|
||||
|
||||
bool scrolling = false;
|
||||
if( mScrollbar[HORIZONTAL]->getVisible() || mScrollbar[VERTICAL]->getVisible() )
|
||||
|
|
@ -365,7 +369,9 @@ bool LLScrollContainer::autoScroll(S32 x, S32 y)
|
|||
void LLScrollContainer::calcVisibleSize( S32 *visible_width, S32 *visible_height, BOOL* show_h_scrollbar, BOOL* show_v_scrollbar ) const
|
||||
{
|
||||
const LLRect& doc_rect = getScrolledViewRect();
|
||||
static LLUICachedControl<S32> scrollbar_size ("UIScrollbarSize", 0);
|
||||
static LLUICachedControl<S32> scrollbar_size_control ("UIScrollbarSize", 0);
|
||||
S32 scrollbar_size = (mSize == -1 ? scrollbar_size_control : mSize);
|
||||
|
||||
S32 doc_width = doc_rect.getWidth();
|
||||
S32 doc_height = doc_rect.getHeight();
|
||||
|
||||
|
|
@ -406,7 +412,9 @@ void LLScrollContainer::calcVisibleSize( S32 *visible_width, S32 *visible_height
|
|||
|
||||
void LLScrollContainer::draw()
|
||||
{
|
||||
static LLUICachedControl<S32> scrollbar_size ("UIScrollbarSize", 0);
|
||||
static LLUICachedControl<S32> scrollbar_size_control ("UIScrollbarSize", 0);
|
||||
S32 scrollbar_size = (mSize == -1 ? scrollbar_size_control : mSize);
|
||||
|
||||
if (mAutoScrolling)
|
||||
{
|
||||
// add acceleration to autoscroll
|
||||
|
|
@ -515,7 +523,9 @@ void LLScrollContainer::updateScroll()
|
|||
{
|
||||
return;
|
||||
}
|
||||
static LLUICachedControl<S32> scrollbar_size ("UIScrollbarSize", 0);
|
||||
static LLUICachedControl<S32> scrollbar_size_control ("UIScrollbarSize", 0);
|
||||
S32 scrollbar_size = (mSize == -1 ? scrollbar_size_control : mSize);
|
||||
|
||||
LLRect doc_rect = mScrolledView->getRect();
|
||||
S32 doc_width = doc_rect.getWidth();
|
||||
S32 doc_height = doc_rect.getHeight();
|
||||
|
|
@ -716,3 +726,9 @@ S32 LLScrollContainer::getBorderWidth() const
|
|||
return 0;
|
||||
}
|
||||
|
||||
void LLScrollContainer::setSize(S32 size)
|
||||
{
|
||||
mSize = size;
|
||||
mScrollbar[VERTICAL]->setThickness(size);
|
||||
mScrollbar[HORIZONTAL]->setThickness(size);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -68,6 +68,7 @@ public:
|
|||
max_auto_scroll_rate;
|
||||
Optional<LLUIColor> bg_color;
|
||||
Optional<LLScrollbar::callback_t> scroll_callback;
|
||||
Optional<S32> size;
|
||||
|
||||
Params();
|
||||
};
|
||||
|
|
@ -116,6 +117,9 @@ public:
|
|||
|
||||
bool autoScroll(S32 x, S32 y);
|
||||
|
||||
S32 getSize() const { return mSize; }
|
||||
void setSize(S32 thickness);
|
||||
|
||||
protected:
|
||||
LLView* mScrolledView;
|
||||
|
||||
|
|
|
|||
|
|
@ -3490,3 +3490,7 @@ F32 LLImageTextSegment::draw(S32 start, S32 end, S32 selection_start, S32 select
|
|||
return 0.0;
|
||||
}
|
||||
|
||||
void LLTextBase::setWordWrap(bool wrap)
|
||||
{
|
||||
mWordWrap = wrap;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -41,6 +41,7 @@
|
|||
|
||||
#include <boost/signals2.hpp>
|
||||
|
||||
class LLScrollContainer;
|
||||
class LLContextMenu;
|
||||
class LLUrlMatch;
|
||||
|
||||
|
|
@ -434,6 +435,9 @@ public:
|
|||
virtual void appendWidget(const LLInlineViewSegment::Params& params, const std::string& text, bool allow_undo);
|
||||
boost::signals2::connection setURLClickedCallback(const commit_signal_t::slot_type& cb);
|
||||
|
||||
void setWordWrap(bool wrap);
|
||||
LLScrollContainer* getScrollContainer() const { return mScroller; }
|
||||
|
||||
protected:
|
||||
// helper structs
|
||||
struct compare_bottom;
|
||||
|
|
@ -634,7 +638,7 @@ protected:
|
|||
// support widgets
|
||||
LLContextMenu* mPopupMenu;
|
||||
LLView* mDocumentView;
|
||||
class LLScrollContainer* mScroller;
|
||||
LLScrollContainer* mScroller;
|
||||
|
||||
// transient state
|
||||
S32 mReflowIndex; // index at which to start reflow. S32_MAX indicates no reflow needed.
|
||||
|
|
|
|||
|
|
@ -64,6 +64,8 @@ LLFloaterIMSessionTab::LLFloaterIMSessionTab(const LLSD& session_id)
|
|||
, mHasVisibleBeenInitialized(false)
|
||||
, mIsParticipantListExpanded(true)
|
||||
, mChatLayoutPanel(NULL)
|
||||
, mInputPanels(NULL)
|
||||
, mChatLayoutPanelHeight(0)
|
||||
{
|
||||
setAutoFocus(FALSE);
|
||||
mSession = LLIMModel::getInstance()->findIMSession(mSessionID);
|
||||
|
|
@ -265,13 +267,15 @@ BOOL LLFloaterIMSessionTab::postBuild()
|
|||
mInputEditor = getChild<LLChatEntry>("chat_editor");
|
||||
|
||||
mChatLayoutPanel = getChild<LLLayoutPanel>("chat_layout_panel");
|
||||
mInputPanels = getChild<LLLayoutStack>("input_panels");
|
||||
|
||||
mInputEditor->setTextExpandedCallback(boost::bind(&LLFloaterIMSessionTab::reshapeChatLayoutPanel, this));
|
||||
mInputEditor->setCommitOnFocusLost( FALSE );
|
||||
mInputEditor->setPassDelete(TRUE);
|
||||
mInputEditor->setFont(LLViewerChat::getChatFont());
|
||||
|
||||
mInputEditorPad = mChatLayoutPanel->getRect().getHeight() - mInputEditor->getRect().getHeight();
|
||||
mChatLayoutPanelHeight = mChatLayoutPanel->getRect().getHeight();
|
||||
mInputEditorPad = mChatLayoutPanelHeight - mInputEditor->getRect().getHeight();
|
||||
|
||||
setOpenPositioning(LLFloaterEnums::POSITIONING_RELATIVE);
|
||||
|
||||
|
|
@ -749,9 +753,7 @@ void LLFloaterIMSessionTab::forceReshape()
|
|||
|
||||
void LLFloaterIMSessionTab::reshapeChatLayoutPanel()
|
||||
{
|
||||
LLRect chat_layout_panel_rect = mChatLayoutPanel->getRect();
|
||||
LLRect input_rect = mInputEditor->getRect();
|
||||
mChatLayoutPanel->reshape(chat_layout_panel_rect.getWidth(), input_rect.getHeight() + mInputEditorPad, FALSE);
|
||||
mChatLayoutPanel->reshape(mChatLayoutPanel->getRect().getWidth(), mInputEditor->getRect().getHeight() + mInputEditorPad, FALSE);
|
||||
}
|
||||
|
||||
void LLFloaterIMSessionTab::showTranslationCheckbox(BOOL show)
|
||||
|
|
@ -850,6 +852,7 @@ void LLFloaterIMSessionTab::onCollapseToLine(LLFloaterIMSessionTab* self)
|
|||
self->mExpandCollapseLineBtn->setImageOverlay(self->getString(expand ? "collapseline_icon" : "expandline_icon"));
|
||||
self->mContentPanel->setVisible(!expand);
|
||||
self->mToolbarPanel->setVisible(!expand);
|
||||
self->mInputEditor->enableSingleLineMode(expand);
|
||||
self->reshapeFloater(expand);
|
||||
self->setMessagePaneExpanded(!expand);
|
||||
}
|
||||
|
|
@ -862,20 +865,20 @@ void LLFloaterIMSessionTab::reshapeFloater(bool collapse)
|
|||
if(collapse)
|
||||
{
|
||||
mFloaterHeight = floater_rect.getHeight();
|
||||
S32 height = mContentPanel->getRect().getHeight() + mToolbarPanel->getRect().getHeight();
|
||||
S32 height = mContentPanel->getRect().getHeight() + mToolbarPanel->getRect().getHeight()
|
||||
+ mChatLayoutPanel->getRect().getHeight() - mChatLayoutPanelHeight + 2;
|
||||
floater_rect.mTop -= height;
|
||||
enableResizeCtrls(true, true, false);
|
||||
}
|
||||
else
|
||||
{
|
||||
floater_rect.mTop = floater_rect.mBottom + mFloaterHeight;
|
||||
enableResizeCtrls(true, true, true);
|
||||
|
||||
}
|
||||
|
||||
enableResizeCtrls(true, true, !collapse);
|
||||
|
||||
saveCollapsedState();
|
||||
setShape(floater_rect, true);
|
||||
mBodyStack->updateLayout();
|
||||
|
||||
}
|
||||
|
||||
void LLFloaterIMSessionTab::restoreFloater()
|
||||
|
|
|
|||
|
|
@ -175,17 +175,14 @@ protected:
|
|||
LLChatHistory* mChatHistory;
|
||||
LLChatEntry* mInputEditor;
|
||||
LLLayoutPanel * mChatLayoutPanel;
|
||||
int mInputEditorPad; // padding between input field and chat history
|
||||
|
||||
LLLayoutStack * mInputPanels;
|
||||
|
||||
LLButton* mExpandCollapseLineBtn;
|
||||
LLButton* mExpandCollapseBtn;
|
||||
LLButton* mTearOffBtn;
|
||||
LLButton* mCloseBtn;
|
||||
LLButton* mGearBtn;
|
||||
|
||||
S32 mFloaterHeight;
|
||||
|
||||
|
||||
private:
|
||||
// Handling selection and contextual menu
|
||||
void doToSelected(const LLSD& userdata);
|
||||
|
|
@ -209,6 +206,10 @@ private:
|
|||
bool mHasVisibleBeenInitialized;
|
||||
|
||||
LLTimer* mRefreshTimer; ///< Defines the rate at which refresh() is called.
|
||||
|
||||
S32 mInputEditorPad;
|
||||
S32 mChatLayoutPanelHeight;
|
||||
S32 mFloaterHeight;
|
||||
};
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -42,58 +42,52 @@
|
|||
<floater.string
|
||||
name="multiple_participants_added"
|
||||
value="[NAME] were invited to the conversation."/>
|
||||
<floater.string
|
||||
<floater.string
|
||||
name="tooltip_to_separate_window"
|
||||
value="Move this conversation to a separate window"/>
|
||||
<floater.string
|
||||
<floater.string
|
||||
name="tooltip_to_main_window"
|
||||
value="Move this conversation back to main window"/>
|
||||
<floater.string
|
||||
<floater.string
|
||||
name="start_call_button_tooltip"
|
||||
value="Open voice connection"/>
|
||||
<floater.string
|
||||
<floater.string
|
||||
name="end_call_button_tooltip"
|
||||
value="Close voice connection"/>
|
||||
<floater.string
|
||||
<floater.string
|
||||
name="expcol_button_not_tearoff_tooltip"
|
||||
value="Collapse this pane"/>
|
||||
<floater.string
|
||||
<floater.string
|
||||
name="expcol_button_tearoff_and_expanded_tooltip"
|
||||
value="Collapse participant list"/>
|
||||
<floater.string
|
||||
<floater.string
|
||||
name="expcol_button_tearoff_and_collapsed_tooltip"
|
||||
value="Expand participant list"/>
|
||||
<view
|
||||
follows="all"
|
||||
layout="topleft"
|
||||
name="contents_view"
|
||||
top="0"
|
||||
left="0"
|
||||
height="355"
|
||||
width="394">
|
||||
<layout_stack
|
||||
animate="false"
|
||||
default_tab_group="2"
|
||||
follows="all"
|
||||
height="355"
|
||||
width="394"
|
||||
layout="topleft"
|
||||
orientation="vertical"
|
||||
name="main_stack"
|
||||
tab_group="1"
|
||||
top="0"
|
||||
left="0">
|
||||
|
||||
<layout_panel
|
||||
follows="left|top|right"
|
||||
follows="all"
|
||||
layout="topleft"
|
||||
name="contents_view"
|
||||
top="0"
|
||||
left="0"
|
||||
right="-1"
|
||||
bottom="-1">
|
||||
<layout_stack
|
||||
animate="false"
|
||||
default_tab_group="2"
|
||||
follows="all"
|
||||
right="-5"
|
||||
bottom="-1"
|
||||
layout="topleft"
|
||||
name="toolbar_panel"
|
||||
orientation="vertical"
|
||||
name="main_stack"
|
||||
tab_group="1"
|
||||
top="0"
|
||||
left="0"
|
||||
height="35"
|
||||
min_height="35"
|
||||
width="394">
|
||||
<menu_button
|
||||
left="5">
|
||||
<layout_panel
|
||||
auto_resize="false"
|
||||
name="toolbar_panel"
|
||||
height="35">
|
||||
<menu_button
|
||||
menu_filename="menu_im_session_showmodes.xml"
|
||||
follows="top|left"
|
||||
height="25"
|
||||
|
|
@ -107,22 +101,22 @@
|
|||
tool_tip="View/sort options"
|
||||
top="5"
|
||||
width="31" />
|
||||
<menu_button
|
||||
menu_filename="menu_im_conversation.xml"
|
||||
follows="top|left"
|
||||
height="25"
|
||||
image_hover_unselected="Toolbar_Middle_Over"
|
||||
image_overlay="OptionsMenu_Off"
|
||||
image_selected="Toolbar_Middle_Selected"
|
||||
image_unselected="Toolbar_Middle_Off"
|
||||
layout="topleft"
|
||||
top="5"
|
||||
left_pad="2"
|
||||
name="gear_btn"
|
||||
visible="false"
|
||||
tool_tip="Actions on selected person"
|
||||
width="31"/>
|
||||
<button
|
||||
<menu_button
|
||||
menu_filename="menu_im_conversation.xml"
|
||||
follows="top|left"
|
||||
height="25"
|
||||
image_hover_unselected="Toolbar_Middle_Over"
|
||||
image_overlay="OptionsMenu_Off"
|
||||
image_selected="Toolbar_Middle_Selected"
|
||||
image_unselected="Toolbar_Middle_Off"
|
||||
layout="topleft"
|
||||
top="5"
|
||||
left_pad="2"
|
||||
name="gear_btn"
|
||||
visible="false"
|
||||
tool_tip="Actions on selected person"
|
||||
width="31"/>
|
||||
<button
|
||||
enabled="false"
|
||||
follows="top|left"
|
||||
height="25"
|
||||
|
|
@ -136,7 +130,7 @@
|
|||
name="add_btn"
|
||||
tool_tip="Add someone to this conversation"
|
||||
width="31"/>
|
||||
<button
|
||||
<button
|
||||
follows="top|left"
|
||||
height="25"
|
||||
image_hover_unselected="Toolbar_Middle_Over"
|
||||
|
|
@ -149,19 +143,19 @@
|
|||
name="voice_call_btn"
|
||||
tool_tip="Open voice connection"
|
||||
width="31"/>
|
||||
<output_monitor
|
||||
auto_update="true"
|
||||
follows="top|left"
|
||||
draw_border="false"
|
||||
height="16"
|
||||
layout="topleft"
|
||||
top="10"
|
||||
left_pad="10"
|
||||
mouse_opaque="true"
|
||||
name="speaking_indicator"
|
||||
visible="false"
|
||||
width="20" />
|
||||
<button
|
||||
<output_monitor
|
||||
auto_update="true"
|
||||
follows="top|left"
|
||||
draw_border="false"
|
||||
height="16"
|
||||
layout="topleft"
|
||||
top="10"
|
||||
left_pad="10"
|
||||
mouse_opaque="true"
|
||||
name="speaking_indicator"
|
||||
visible="false"
|
||||
width="20" />
|
||||
<button
|
||||
follows="right|top"
|
||||
height="25"
|
||||
image_hover_unselected="Toolbar_Middle_Over"
|
||||
|
|
@ -170,232 +164,155 @@
|
|||
image_unselected="Toolbar_Middle_Off"
|
||||
layout="topleft"
|
||||
top="5"
|
||||
left="292"
|
||||
right="-70"
|
||||
name="close_btn"
|
||||
tool_tip="End this conversation"
|
||||
width="31" />
|
||||
<button
|
||||
<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"
|
||||
image_unselected="Toolbar_Middle_Off"
|
||||
layout="topleft"
|
||||
top="5"
|
||||
left_pad="2"
|
||||
name="expand_collapse_btn"
|
||||
tool_tip="Collapse/Expand this pane"
|
||||
width="31" />
|
||||
<button
|
||||
<button
|
||||
follows="right|top"
|
||||
height="25"
|
||||
image_hover_unselected="Toolbar_Middle_Over"
|
||||
image_overlay="Conv_toolbar_arrow_ne"
|
||||
image_selected="Toolbar_Middle_Selected"
|
||||
image_unselected="Toolbar_Middle_Off"
|
||||
layout="topleft"
|
||||
top="5"
|
||||
left_pad="2"
|
||||
name="tear_off_btn"
|
||||
width="31" />
|
||||
</layout_panel>
|
||||
<layout_panel
|
||||
name="body_panel"
|
||||
follows="all"
|
||||
width="394"
|
||||
height="235"
|
||||
user_resize="false"
|
||||
auto_resize="true">
|
||||
<layout_stack
|
||||
animate="true"
|
||||
default_tab_group="2"
|
||||
follows="all"
|
||||
height="275"
|
||||
width="394"
|
||||
layout="topleft"
|
||||
orientation="horizontal"
|
||||
name="im_panels"
|
||||
tab_group="1"
|
||||
top_pad="0"
|
||||
left="0">
|
||||
<layout_panel
|
||||
name="speakers_list_panel"
|
||||
follows="all"
|
||||
expanded_min_dim="115"
|
||||
min_dim="0"
|
||||
width="150"
|
||||
height="275"
|
||||
user_resize="true"
|
||||
auto_resize="false">
|
||||
</layout_panel>
|
||||
<layout_panel
|
||||
default_tab_group="3"
|
||||
left="0"
|
||||
tab_group="2"
|
||||
follows="all"
|
||||
top="0"
|
||||
height="275"
|
||||
width="244"
|
||||
layout="topleft"
|
||||
user_resize="true"
|
||||
auto_resize="true"
|
||||
visible="true"
|
||||
name="right_part_holder"
|
||||
min_width="221">
|
||||
<panel
|
||||
name="trnsAndChat_panel"
|
||||
follows="all"
|
||||
layout="topleft"
|
||||
visible="true"
|
||||
height="240"
|
||||
width="244">
|
||||
<layout_stack
|
||||
animate="true"
|
||||
default_tab_group="2"
|
||||
follows="all"
|
||||
height="240"
|
||||
width="244"
|
||||
layout="topleft"
|
||||
visible="true"
|
||||
orientation="vertical"
|
||||
name="translate_and_chat_stack"
|
||||
tab_group="1"
|
||||
left_pad="0"
|
||||
top="0"
|
||||
left="0">
|
||||
<layout_panel
|
||||
auto_resize="false"
|
||||
user_resize="false"
|
||||
height="26"
|
||||
layout="topleft"
|
||||
left_delta="0"
|
||||
name="translate_chat_checkbox_lp"
|
||||
top_delta="0"
|
||||
visible="true"
|
||||
width="210">
|
||||
<check_box
|
||||
top="10"
|
||||
control_name="TranslateChat"
|
||||
enabled="true"
|
||||
height="16"
|
||||
label="Translate chat"
|
||||
layout="topleft"
|
||||
left="5"
|
||||
name="translate_chat_checkbox"
|
||||
width="230" />
|
||||
</layout_panel>
|
||||
<layout_panel
|
||||
width="210"
|
||||
layout="topleft"
|
||||
follows="all"
|
||||
left_delta="0"
|
||||
top_delta="0"
|
||||
bottom="0"
|
||||
visible="true"
|
||||
user_resize="false"
|
||||
auto_resize="true"
|
||||
name="chat_holder">
|
||||
<chat_history
|
||||
font="SansSerifSmall"
|
||||
follows="all"
|
||||
visible="true"
|
||||
name="chat_history"
|
||||
parse_highlights="true"
|
||||
parse_urls="true"
|
||||
layout="topleft"
|
||||
right="-5"
|
||||
left="5"
|
||||
top="0"
|
||||
bottom="1">
|
||||
</chat_history>
|
||||
</layout_panel>
|
||||
</layout_stack>
|
||||
</panel>
|
||||
</layout_panel>
|
||||
</layout_stack>
|
||||
</layout_panel>
|
||||
<layout_panel
|
||||
height="35"
|
||||
layout="topleft"
|
||||
follows="left|right|bottom"
|
||||
left_delta="0"
|
||||
right="0"
|
||||
top_delta="0"
|
||||
bottom="0"
|
||||
visible="true"
|
||||
user_resize="false"
|
||||
auto_resize="false"
|
||||
name="chat_layout_panel">
|
||||
<layout_stack
|
||||
animate="true"
|
||||
default_tab_group="2"
|
||||
follows="all"
|
||||
height="35"
|
||||
right="0"
|
||||
layout="topleft"
|
||||
orientation="horizontal"
|
||||
name="input_panels"
|
||||
top_pad="0"
|
||||
left="0">
|
||||
<layout_panel
|
||||
height="35"
|
||||
layout="topleft"
|
||||
follows="left|right|bottom"
|
||||
left_delta="0"
|
||||
top_delta="0"
|
||||
bottom="0"
|
||||
visible="true"
|
||||
user_resize="false"
|
||||
auto_resize="true"
|
||||
name="input_editor_layout_panel">
|
||||
<chat_editor
|
||||
expand_lines_count="5"
|
||||
follows="left|right|bottom"
|
||||
font="SansSerifSmall"
|
||||
visible="true"
|
||||
height="20"
|
||||
is_expandable="true"
|
||||
label="To"
|
||||
text_tentative_color="TextFgTentativeColor"
|
||||
layout="topleft"
|
||||
name="chat_editor"
|
||||
max_length="1023"
|
||||
spellcheck="true"
|
||||
tab_group="3"
|
||||
width="160"
|
||||
top="6"
|
||||
left="5"
|
||||
right="-5"
|
||||
wrap="true">
|
||||
</chat_editor>
|
||||
</layout_panel>
|
||||
<layout_panel
|
||||
height="35"
|
||||
layout="topleft"
|
||||
follows="left|right|bottom"
|
||||
left_delta="0"
|
||||
top_delta="0"
|
||||
bottom="0"
|
||||
width="35"
|
||||
visible="true"
|
||||
user_resize="false"
|
||||
auto_resize="false"
|
||||
name="input_button_layout_panel">
|
||||
<button
|
||||
follows="left|right|bottom"
|
||||
height="25"
|
||||
image_hover_unselected="Toolbar_Middle_Over"
|
||||
image_overlay="Conv_expand_one_line"
|
||||
image_selected="Toolbar_Middle_Selected"
|
||||
image_unselected="Toolbar_Middle_Off"
|
||||
layout="topleft"
|
||||
name="minz_btn"
|
||||
tool_tip="Shows/hides message panel"
|
||||
width="28"/>
|
||||
</layout_panel>
|
||||
</layout_stack>
|
||||
</layout_panel>
|
||||
</layout_stack>
|
||||
left_pad="2"
|
||||
name="tear_off_btn"
|
||||
top="5"
|
||||
width="31" />
|
||||
</layout_panel>
|
||||
<layout_panel
|
||||
name="body_panel"
|
||||
height="235">
|
||||
<layout_stack
|
||||
default_tab_group="2"
|
||||
follows="all"
|
||||
orientation="horizontal"
|
||||
name="im_panels"
|
||||
tab_group="1"
|
||||
top="0"
|
||||
right="-1"
|
||||
bottom="-1"
|
||||
left="0">
|
||||
<layout_panel
|
||||
name="speakers_list_panel"
|
||||
expanded_min_dim="115"
|
||||
min_dim="0"
|
||||
width="150"
|
||||
user_resize="true"
|
||||
auto_resize="false" />
|
||||
<layout_panel
|
||||
default_tab_group="3"
|
||||
tab_group="2"
|
||||
name="right_part_holder"
|
||||
min_width="221">
|
||||
<layout_stack
|
||||
animate="true"
|
||||
default_tab_group="2"
|
||||
follows="all"
|
||||
orientation="vertical"
|
||||
name="translate_and_chat_stack"
|
||||
tab_group="1"
|
||||
top="0"
|
||||
left="0"
|
||||
right="-1"
|
||||
bottom="-1">
|
||||
<layout_panel
|
||||
auto_resize="false"
|
||||
height="26"
|
||||
name="translate_chat_checkbox_lp">
|
||||
<check_box
|
||||
top="10"
|
||||
control_name="TranslateChat"
|
||||
enabled="true"
|
||||
height="16"
|
||||
label="Translate chat"
|
||||
left="5"
|
||||
name="translate_chat_checkbox"
|
||||
width="230" />
|
||||
</layout_panel>
|
||||
<layout_panel
|
||||
name="chat_holder">
|
||||
<chat_history
|
||||
font="SansSerifSmall"
|
||||
follows="all"
|
||||
name="chat_history"
|
||||
parse_highlights="true"
|
||||
parse_urls="true"
|
||||
right="-1"
|
||||
left="5"
|
||||
top="0"
|
||||
bottom="-1" />
|
||||
</layout_panel>
|
||||
</layout_stack>
|
||||
</layout_panel>
|
||||
</layout_stack>
|
||||
</layout_panel>
|
||||
<layout_panel
|
||||
height="35"
|
||||
auto_resize="false"
|
||||
name="chat_layout_panel">
|
||||
<layout_stack
|
||||
animate="false"
|
||||
default_tab_group="2"
|
||||
follows="all"
|
||||
right="-1"
|
||||
orientation="horizontal"
|
||||
name="input_panels"
|
||||
top="0"
|
||||
bottom="-1"
|
||||
left="0">
|
||||
<layout_panel
|
||||
name="input_editor_layout_panel">
|
||||
<chat_editor
|
||||
layout="topleft"
|
||||
expand_lines_count="5"
|
||||
follows="left|right|bottom"
|
||||
font="SansSerifSmall"
|
||||
height="20"
|
||||
is_expandable="true"
|
||||
text_tentative_color="TextFgTentativeColor"
|
||||
name="chat_editor"
|
||||
max_length="1023"
|
||||
spellcheck="true"
|
||||
tab_group="3"
|
||||
bottom="-8"
|
||||
left="5"
|
||||
right="-5"
|
||||
wrap="true" />
|
||||
</layout_panel>
|
||||
<layout_panel
|
||||
auto_resize="false"
|
||||
name="input_button_layout_panel"
|
||||
width="32">
|
||||
<button
|
||||
left="1"
|
||||
top="4"
|
||||
follows="left|right|top"
|
||||
height="25"
|
||||
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"
|
||||
width="28" />
|
||||
</layout_panel>
|
||||
</layout_stack>
|
||||
</layout_panel>
|
||||
</layout_stack>
|
||||
</view>
|
||||
</floater>
|
||||
|
|
|
|||
Loading…
Reference in New Issue