diff options
| -rw-r--r-- | .hgtags | 2 | ||||
| -rw-r--r-- | indra/llui/llchatentry.cpp | 32 | ||||
| -rw-r--r-- | indra/llui/llchatentry.h | 7 | ||||
| -rw-r--r-- | indra/llui/llscrollbar.cpp | 5 | ||||
| -rw-r--r-- | indra/llui/llscrollbar.h | 3 | ||||
| -rw-r--r-- | indra/llui/llscrollcontainer.cpp | 32 | ||||
| -rw-r--r-- | indra/llui/llscrollcontainer.h | 4 | ||||
| -rw-r--r-- | indra/llui/lltextbase.cpp | 4 | ||||
| -rw-r--r-- | indra/llui/lltextbase.h | 6 | ||||
| -rw-r--r-- | indra/llui/lltexteditor.cpp | 8 | ||||
| -rwxr-xr-x | indra/newview/llconversationview.cpp | 2 | ||||
| -rw-r--r-- | indra/newview/llfloaterimnearbychathandler.cpp | 10 | ||||
| -rw-r--r-- | indra/newview/llfloaterimsessiontab.cpp | 21 | ||||
| -rw-r--r-- | indra/newview/llfloaterimsessiontab.h | 11 | ||||
| -rwxr-xr-x | indra/newview/llfloaterpreference.cpp | 22 | ||||
| -rw-r--r-- | indra/newview/llimview.cpp | 21 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/floater_im_session.xml | 441 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/notifications.xml | 2 | 
18 files changed, 315 insertions, 318 deletions
| @@ -431,3 +431,5 @@ f6ca5bb75bca975ff0bc77e71e615f6478c4559c 3.5.0-beta3  dd058a6093c493120d67c8e02c812c0f7b2d3db0 3.5.0-beta5  fd6b510e83f56830e45670c428653134899d3e25 DRTVWR-305  55339537d99afc394d1bb7fdb7d074bf321ca62f 3.5.0-beta6 +902caf2b9fdbdbc5c399c4d5ebcecaf9cb97bab8 DRTVWR-306 +5c6098fd17d40ee3a38ca6b64f6be9db7f61f0a8 3.5.0-beta7 diff --git a/indra/llui/llchatentry.cpp b/indra/llui/llchatentry.cpp index 9e48dcde7e..6a1b48a08a 100644 --- a/indra/llui/llchatentry.cpp +++ b/indra/llui/llchatentry.cpp @@ -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); +} diff --git a/indra/llui/llchatentry.h b/indra/llui/llchatentry.h index 49181c8d78..49c8d21450 100644 --- a/indra/llui/llchatentry.h +++ b/indra/llui/llchatentry.h @@ -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_ */ diff --git a/indra/llui/llscrollbar.cpp b/indra/llui/llscrollbar.cpp index 5d3bf7a670..13887cbe73 100644 --- a/indra/llui/llscrollbar.cpp +++ b/indra/llui/llscrollbar.cpp @@ -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; +} diff --git a/indra/llui/llscrollbar.h b/indra/llui/llscrollbar.h index ff74f753b9..21fd2d631e 100644 --- a/indra/llui/llscrollbar.h +++ b/indra/llui/llscrollbar.h @@ -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(); diff --git a/indra/llui/llscrollcontainer.cpp b/indra/llui/llscrollcontainer.cpp index 2fd187a526..cbcce0ece5 100644 --- a/indra/llui/llscrollcontainer.cpp +++ b/indra/llui/llscrollcontainer.cpp @@ -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); +} diff --git a/indra/llui/llscrollcontainer.h b/indra/llui/llscrollcontainer.h index d87c95b3d7..4eb43539b8 100644 --- a/indra/llui/llscrollcontainer.h +++ b/indra/llui/llscrollcontainer.h @@ -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; diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp index 270d5294f9..a815cfc176 100644 --- a/indra/llui/lltextbase.cpp +++ b/indra/llui/lltextbase.cpp @@ -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; +} diff --git a/indra/llui/lltextbase.h b/indra/llui/lltextbase.h index ad566a36d3..20a73387b5 100644 --- a/indra/llui/lltextbase.h +++ b/indra/llui/lltextbase.h @@ -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. diff --git a/indra/llui/lltexteditor.cpp b/indra/llui/lltexteditor.cpp index d5e08fa29b..b8bdea48b5 100644 --- a/indra/llui/lltexteditor.cpp +++ b/indra/llui/lltexteditor.cpp @@ -956,12 +956,18 @@ S32 LLTextEditor::insert(S32 pos, const LLWString &wstr, bool group_with_next_op  S32 LLTextEditor::remove(S32 pos, S32 length, bool group_with_next_op)  {  	S32 end_pos = getEditableIndex(pos + length, true); +	BOOL removedChar = FALSE;  	segment_vec_t segments_to_remove;  	// store text segments  	getSegmentsInRange(segments_to_remove, pos, pos + length, false); +	 +	if(pos <= end_pos) +	{ +		removedChar = execute( new TextCmdRemove( pos, group_with_next_op, end_pos - pos, segments_to_remove ) ); +	} -	return execute( new TextCmdRemove( pos, group_with_next_op, end_pos - pos, segments_to_remove ) ); +	return removedChar;  }  S32 LLTextEditor::overwriteChar(S32 pos, llwchar wc) diff --git a/indra/newview/llconversationview.cpp b/indra/newview/llconversationview.cpp index 956abcd586..b6c53e5e30 100755 --- a/indra/newview/llconversationview.cpp +++ b/indra/newview/llconversationview.cpp @@ -120,7 +120,7 @@ void LLConversationViewSession::setFlashState(bool flash_state)  void LLConversationViewSession::startFlashing()  { -	if (mFlashStateOn && !mFlashStarted) +	if (isInVisibleChain() && mFlashStateOn && !mFlashStarted)  	{  		mFlashStarted = true;  		mFlashTimer->startFlashing(); diff --git a/indra/newview/llfloaterimnearbychathandler.cpp b/indra/newview/llfloaterimnearbychathandler.cpp index 0824b26406..9ce5e12897 100644 --- a/indra/newview/llfloaterimnearbychathandler.cpp +++ b/indra/newview/llfloaterimnearbychathandler.cpp @@ -605,11 +605,15 @@ void LLFloaterIMNearbyChatHandler::processChat(const LLChat& chat_msg,  		}  		//Don't show nearby toast, if conversation is visible and selected -		if (im_box->getSelectedSession().isNull() && +		if ((nearby_chat->hasFocus()) || +		    ((im_box->getSelectedSession().isNull() &&  				((LLFloater::isVisible(im_box) && !im_box->isMinimized() && im_box->isFrontmost()) -						|| (LLFloater::isVisible(nearby_chat) && !nearby_chat->isMinimized() && nearby_chat->isFrontmost()))) +						|| (LLFloater::isVisible(nearby_chat) && !nearby_chat->isMinimized() && nearby_chat->isFrontmost())))))  		{ -			return; +			if(nearby_chat->isMessagePaneExpanded()) +			{ +				return; +			}  		}          //Will show toast when chat preference is set         diff --git a/indra/newview/llfloaterimsessiontab.cpp b/indra/newview/llfloaterimsessiontab.cpp index 5083331167..ce6e639305 100644 --- a/indra/newview/llfloaterimsessiontab.cpp +++ b/indra/newview/llfloaterimsessiontab.cpp @@ -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() diff --git a/indra/newview/llfloaterimsessiontab.h b/indra/newview/llfloaterimsessiontab.h index c7e73bd70d..302d5a8066 100644 --- a/indra/newview/llfloaterimsessiontab.h +++ b/indra/newview/llfloaterimsessiontab.h @@ -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;  }; diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp index a28af2101b..bbf88060c1 100755 --- a/indra/newview/llfloaterpreference.cpp +++ b/indra/newview/llfloaterpreference.cpp @@ -558,7 +558,7 @@ void LLFloaterPreference::apply()  	LLViewerMedia::setCookiesEnabled(getChild<LLUICtrl>("cookies_enabled")->getValue()); -	if (hasChild("web_proxy_enabled") &&hasChild("web_proxy_editor") && hasChild("web_proxy_port")) +	if (hasChild("web_proxy_enabled", TRUE) &&hasChild("web_proxy_editor", TRUE) && hasChild("web_proxy_port", TRUE))  	{  		bool proxy_enable = getChild<LLUICtrl>("web_proxy_enabled")->getValue();  		std::string proxy_address = getChild<LLUICtrl>("web_proxy_editor")->getValue(); @@ -1582,7 +1582,7 @@ void LLFloaterPreference::onUpdateSliderText(LLUICtrl* ctrl, const LLSD& name)  {  	std::string ctrl_name = name.asString(); -	if ((ctrl_name =="" )|| !hasChild(ctrl_name, true)) +	if ((ctrl_name =="" )|| !hasChild(ctrl_name, TRUE))  		return;  	LLTextBox* text_box = getChild<LLTextBox>(name.asString()); @@ -1819,7 +1819,7 @@ LLPanelPreference::LLPanelPreference()  BOOL LLPanelPreference::postBuild()  {  	////////////////////// PanelGeneral /////////////////// -	if (hasChild("display_names_check")) +	if (hasChild("display_names_check", TRUE))  	{  		BOOL use_people_api = gSavedSettings.getBOOL("UsePeopleAPI");  		LLCheckBoxCtrl* ctrl_display_name = getChild<LLCheckBoxCtrl>("display_names_check"); @@ -1831,7 +1831,7 @@ BOOL LLPanelPreference::postBuild()  	}  	////////////////////// PanelVoice /////////////////// -	if (hasChild("voice_unavailable")) +	if (hasChild("voice_unavailable", TRUE))  	{  		BOOL voice_disabled = gSavedSettings.getBOOL("CmdLineDisableVoice");  		getChildView("voice_unavailable")->setVisible( voice_disabled); @@ -1840,7 +1840,7 @@ BOOL LLPanelPreference::postBuild()  	//////////////////////PanelSkins /////////////////// -	if (hasChild("skin_selection")) +	if (hasChild("skin_selection", TRUE))  	{  		LLFloaterPreference::refreshSkin(this); @@ -1854,28 +1854,28 @@ BOOL LLPanelPreference::postBuild()  	}  	//////////////////////PanelPrivacy /////////////////// -	if (hasChild("media_enabled")) +	if (hasChild("media_enabled", TRUE))  	{  		bool media_enabled = gSavedSettings.getBOOL("AudioStreamingMedia");  		getChild<LLCheckBoxCtrl>("media_enabled")->set(media_enabled);  		getChild<LLCheckBoxCtrl>("autoplay_enabled")->setEnabled(media_enabled);  	} -	if (hasChild("music_enabled")) +	if (hasChild("music_enabled", TRUE))  	{  		getChild<LLCheckBoxCtrl>("music_enabled")->set(gSavedSettings.getBOOL("AudioStreamingMusic"));  	} -	if (hasChild("voice_call_friends_only_check")) +	if (hasChild("voice_call_friends_only_check", TRUE))  	{  		getChild<LLCheckBoxCtrl>("voice_call_friends_only_check")->setCommitCallback(boost::bind(&showFriendsOnlyWarning, _1, _2));  	} -	if (hasChild("favorites_on_login_check")) +	if (hasChild("favorites_on_login_check", TRUE))  	{  		getChild<LLCheckBoxCtrl>("favorites_on_login_check")->setCommitCallback(boost::bind(&showFavoritesOnLoginWarning, _1, _2));  	}  	//////////////////////PanelAdvanced /////////////////// -	if (hasChild("modifier_combo")) +	if (hasChild("modifier_combo", TRUE))  	{  		//localizing if push2talk button is set to middle mouse  		if (MIDDLE_MOUSE_CV == getChild<LLUICtrl>("modifier_combo")->getValue().asString()) @@ -1885,7 +1885,7 @@ BOOL LLPanelPreference::postBuild()  	}  	//////////////////////PanelSetup /////////////////// -	if (hasChild("max_bandwidth")) +	if (hasChild("max_bandwidth"), TRUE)  	{  		mBandWidthUpdater = new LLPanelPreference::Updater(boost::bind(&handleBandwidthChanged, _1), BANDWIDTH_UPDATER_TIMEOUT);  		gSavedSettings.getControl("ThrottleBandwidthKBPS")->getSignal()->connect(boost::bind(&LLPanelPreference::Updater::update, mBandWidthUpdater, _2)); diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp index 76a314f807..e237cb7f9e 100644 --- a/indra/newview/llimview.cpp +++ b/indra/newview/llimview.cpp @@ -174,6 +174,7 @@ void on_new_message(const LLSD& msg)      // determine state of conversations floater      enum {CLOSED, NOT_ON_TOP, ON_TOP, ON_TOP_AND_ITEM_IS_SELECTED} conversations_floater_status; +      LLFloaterIMContainer* im_box = LLFloaterReg::getTypedInstance<LLFloaterIMContainer>("im_container");  	LLFloaterIMSessionTab* session_floater = LLFloaterIMSessionTab::getConversation(session_id); @@ -181,19 +182,18 @@ void on_new_message(const LLSD& msg)  	{  		conversations_floater_status = CLOSED;  	} -	else if ( !im_box->hasFocus() && -			(!session_floater || !LLFloater::isVisible(session_floater) -	            || session_floater->isMinimized() || !session_floater->hasFocus())) +	else if (!session_floater || !LLFloater::isVisible(session_floater) +	            || session_floater->isMinimized() || !session_floater->hasFocus())  	{  		conversations_floater_status = NOT_ON_TOP;  	} -	else if (im_box->getSelectedSession() != session_id) +	else if ((session_floater->hasFocus()) && (im_box->getSelectedSession() == session_id))  	{ -		conversations_floater_status = ON_TOP; +		conversations_floater_status = ON_TOP_AND_ITEM_IS_SELECTED;      }  	else  	{ -		conversations_floater_status = ON_TOP_AND_ITEM_IS_SELECTED; +		conversations_floater_status = ON_TOP;  	}      //  determine user prefs for this session @@ -274,7 +274,9 @@ void on_new_message(const LLSD& msg)      // 2. Flash line item      if ("openconversations" == user_preferences -    		|| ON_TOP == conversations_floater_status) +    		|| ON_TOP == conversations_floater_status +    		|| ("toast" == user_preferences && ON_TOP != conversations_floater_status) +    		|| ("flash" == user_preferences && CLOSED == conversations_floater_status))      {      	if(!LLMuteList::getInstance()->isMuted(participant_id))      	{ @@ -295,8 +297,11 @@ void on_new_message(const LLSD& msg)      }      // 4. Toast -    if ("toast" == user_preferences +    if ((("toast" == user_preferences) && +    		(CLOSED == conversations_floater_status +    		    || NOT_ON_TOP == conversations_floater_status))      		    || !session_floater->isMessagePaneExpanded()) +      {          //Show IM toasts (upper right toasts)          // Skip toasting for system messages and for nearby chat diff --git a/indra/newview/skins/default/xui/en/floater_im_session.xml b/indra/newview/skins/default/xui/en/floater_im_session.xml index d8b085063f..3b56e974d2 100644 --- a/indra/newview/skins/default/xui/en/floater_im_session.xml +++ b/indra/newview/skins/default/xui/en/floater_im_session.xml @@ -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" +                 image_unselected="Toolbar_Middle_Off"                   layout="topleft" -                 top="5"                   left_pad="2"                   name="tear_off_btn" +                 top="5"                   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> +             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_stack> -           </panel> -    </layout_panel> -  </layout_stack> -  </layout_panel> -  <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_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_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> +        </layout_stack>      </view>  </floater> diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml index c681e39002..105bef7321 100644 --- a/indra/newview/skins/default/xui/en/notifications.xml +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -352,7 +352,7 @@ Save all changes to clothing/body parts?     icon="alertmodal.tga"     name="FriendsAndGroupsOnly"     type="alertmodal"> -    Non-friends won't know that you've choosen to ignore their calls and instant messages. +    Non-friends won't know that you've chosen to ignore their calls and instant messages.      <usetemplate       name="okbutton"       yestext="OK"/> | 
