diff options
| author | Tofu Linden <tofu.linden@lindenlab.com> | 2010-01-19 12:57:03 -0800 | 
|---|---|---|
| committer | Tofu Linden <tofu.linden@lindenlab.com> | 2010-01-19 12:57:03 -0800 | 
| commit | 705e31f16ad2e9b530bc083db13d29cbc8613f82 (patch) | |
| tree | bbf7a443c649f4561e7f70a787b83e6555afe0d0 | |
| parent | cd5cd11ccbd1ad13afd43c045735f01dbc994a80 (diff) | |
| parent | 85c97cab02b0f2ba89b7af05c14a69ff90ffa25e (diff) | |
PE merge.
53 files changed, 399 insertions, 293 deletions
| diff --git a/indra/llui/llaccordionctrltab.cpp b/indra/llui/llaccordionctrltab.cpp index 9d6ba57c29..4bfe44135a 100644 --- a/indra/llui/llaccordionctrltab.cpp +++ b/indra/llui/llaccordionctrltab.cpp @@ -157,7 +157,8 @@ void LLAccordionCtrlTab::LLAccordionCtrlTabHeader::draw()  	// because the user's mental model of focus is that it goes away after  	// the accordion is closed.  	if (getParent()->hasFocus() -		&& !(collapsible && !expanded)) +		/*&& !(collapsible && !expanded)*/ // WHY?? +		)  	{  		mImageHeaderFocused->draw(0,0,width,height);  	} diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp index 980cd2abd7..3734a22f7e 100644 --- a/indra/llui/llfloater.cpp +++ b/indra/llui/llfloater.cpp @@ -2362,7 +2362,7 @@ void LLFloaterView::adjustToFitScreen(LLFloater* floater, BOOL allow_partial_out  	LLRect::tCoordType screen_width = getSnapRect().getWidth();  	LLRect::tCoordType screen_height = getSnapRect().getHeight(); - +	  	// only automatically resize non-minimized, resizable floaters  	if( floater->isResizable() && !floater->isMinimized() )  	{ @@ -2387,16 +2387,11 @@ void LLFloaterView::adjustToFitScreen(LLFloater* floater, BOOL allow_partial_out  			new_width = llmax(new_width, min_width);  			new_height = llmax(new_height, min_height); -			floater->reshape( new_width, new_height, TRUE ); -			if (floater->followsRight()) -			{ -				floater->translate(old_width - new_width, 0); -			} +			LLRect new_rect; +			new_rect.setLeftTopAndSize(view_rect.mTop,view_rect.mLeft,new_width, new_height); -			if (floater->followsTop()) -			{ -				floater->translate(0, old_height - new_height); -			} +			floater->reshape( new_width, new_height, TRUE ); +			floater->setRect(new_rect);  		}  	} diff --git a/indra/llui/llresizehandle.cpp b/indra/llui/llresizehandle.cpp index 6239a8f721..3df09d124a 100644 --- a/indra/llui/llresizehandle.cpp +++ b/indra/llui/llresizehandle.cpp @@ -124,7 +124,7 @@ BOOL LLResizeHandle::handleHover(S32 x, S32 y, MASK mask)  	{  		// Make sure the mouse in still over the application.  We don't want to make the parent  		// so big that we can't see the resize handle any more. -	 +  		S32 screen_x;  		S32 screen_y;  		localPointToScreen(x, y, &screen_x, &screen_y); @@ -146,68 +146,61 @@ BOOL LLResizeHandle::handleHover(S32 x, S32 y, MASK mask)  			LLRect scaled_rect = orig_rect;  			S32 delta_x = screen_x - mDragLastScreenX;  			S32 delta_y = screen_y - mDragLastScreenY; + +			if(delta_x == 0 && delta_y == 0) +				return FALSE; +  			LLCoordGL mouse_dir;  			// use hysteresis on mouse motion to preserve user intent when mouse stops moving  			mouse_dir.mX = (screen_x == mLastMouseScreenX) ? mLastMouseDir.mX : screen_x - mLastMouseScreenX;  			mouse_dir.mY = (screen_y == mLastMouseScreenY) ? mLastMouseDir.mY : screen_y - mLastMouseScreenY; +			  			mLastMouseScreenX = screen_x;  			mLastMouseScreenY = screen_y;  			mLastMouseDir = mouse_dir; -			S32 x_multiple = 1; -			S32 y_multiple = 1; -			switch( mCorner ) -			{ -			case LEFT_TOP: -				x_multiple = -1;  -				y_multiple =  1;	 -				break; -			case LEFT_BOTTOM:	 -				x_multiple = -1;  -				y_multiple = -1;	 -				break; -			case RIGHT_TOP:		 -				x_multiple =  1;  -				y_multiple =  1;	 -				break; -			case RIGHT_BOTTOM:	 -				x_multiple =  1;  -				y_multiple = -1;	 -				break; -			} +			S32 new_width = orig_rect.getWidth(); +			S32 new_height = orig_rect.getHeight(); -			S32 new_width = orig_rect.getWidth() + x_multiple * delta_x; -			if( new_width < mMinWidth ) -			{ -				new_width = mMinWidth; -				delta_x = x_multiple * (mMinWidth - orig_rect.getWidth()); -			} - -			S32 new_height = orig_rect.getHeight() + y_multiple * delta_y; -			if( new_height < mMinHeight ) -			{ -				new_height = mMinHeight; -				delta_y = y_multiple * (mMinHeight - orig_rect.getHeight()); -			} +			S32 new_pos_x = orig_rect.mLeft; +			S32 new_pos_y = orig_rect.mTop;  			switch( mCorner )  			{ -			case LEFT_TOP:		 -				scaled_rect.translate(delta_x, 0);			 +			case LEFT_TOP: +				new_width-=delta_x; +				new_height+=delta_y; +				new_pos_x+=delta_x; +				new_pos_y+=delta_y;  				break;  			case LEFT_BOTTOM:	 -				scaled_rect.translate(delta_x, delta_y);	 +				new_width-=delta_x; +				new_height-=delta_y; +				new_pos_x+=delta_x;  				break;  			case RIGHT_TOP:		 +				new_width+=delta_x; +				new_height+=delta_y; +				new_pos_y+=delta_y;  				break;  			case RIGHT_BOTTOM:	 -				scaled_rect.translate(0, delta_y);			 +				new_width+=delta_x; +				new_height-=delta_y;  				break;  			} +			new_width = llmax(new_width,mMinWidth); +			new_height = llmax(new_height,mMinHeight); +			 +			LLRect::tCoordType screen_width = resizing_view->getParent()->getSnapRect().getWidth(); +			LLRect::tCoordType screen_height = resizing_view->getParent()->getSnapRect().getHeight(); +			 +			new_width = llmin(new_width, screen_width); +			new_height = llmin(new_height, screen_height); +			  			// temporarily set new parent rect -			scaled_rect.mRight = scaled_rect.mLeft + new_width; -			scaled_rect.mTop = scaled_rect.mBottom + new_height; +			scaled_rect.setLeftTopAndSize(new_pos_x,new_pos_y,new_width,new_height); +				  			resizing_view->setRect(scaled_rect);  			LLView* snap_view = NULL; @@ -258,7 +251,11 @@ BOOL LLResizeHandle::handleHover(S32 x, S32 y, MASK mask)  			resizing_view->setRect(orig_rect);  			// translate and scale to new shape -			resizing_view->setShape(scaled_rect, true); +			resizing_view->reshape(scaled_rect.getWidth(),scaled_rect.getHeight()); +			resizing_view->setRect(scaled_rect); +			//set shape to handle dependent floaters... +			resizing_view->handleReshape(scaled_rect, false); +			  			// update last valid mouse cursor position based on resized view's actual size  			LLRect new_rect = resizing_view->getRect(); diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index 958b9521fa..73c275c54c 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -156,7 +156,6 @@ set(viewer_SOURCE_FILES      llfloaterbuycurrency.cpp      llfloaterbuyland.cpp      llfloatercamera.cpp -    llfloaterchat.cpp      llfloaterchatterbox.cpp      llfloatercolorpicker.cpp      llfloatercustomize.cpp @@ -665,7 +664,6 @@ set(viewer_HEADER_FILES      llfloaterbuycurrency.h      llfloaterbuyland.h      llfloatercamera.h -    llfloaterchat.h      llfloaterchatterbox.h      llfloatercolorpicker.h      llfloatercustomize.h diff --git a/indra/newview/llbottomtray.cpp b/indra/newview/llbottomtray.cpp index 9b215e4096..988867ef84 100644 --- a/indra/newview/llbottomtray.cpp +++ b/indra/newview/llbottomtray.cpp @@ -330,6 +330,11 @@ void LLBottomTray::setVisible(BOOL visible)  			}  		}  	} + +	if(visible) +		gFloaterView->setSnapOffsetBottom(getRect().getHeight()); +	else +		gFloaterView->setSnapOffsetBottom(0);  }  void LLBottomTray::showBottomTrayContextMenu(S32 x, S32 y, MASK mask) diff --git a/indra/newview/llchatbar.cpp b/indra/newview/llchatbar.cpp index 442dc660cd..b32a955038 100644 --- a/indra/newview/llchatbar.cpp +++ b/indra/newview/llchatbar.cpp @@ -48,7 +48,6 @@  #include "llcombobox.h"  #include "llcommandhandler.h"	// secondlife:///app/chat/ support  #include "llviewercontrol.h" -#include "llfloaterchat.h"  #include "llgesturemgr.h"  #include "llkeyboard.h"  #include "lllineeditor.h" @@ -548,7 +547,7 @@ void LLChatBar::onInputEditorFocusLost()  // static  void LLChatBar::onInputEditorGainFocus()  { -	LLFloaterChat::setHistoryCursorAndScrollToEnd(); +	//LLFloaterChat::setHistoryCursorAndScrollToEnd();  }  void LLChatBar::onClickSay( LLUICtrl* ctrl ) diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp index 2fc83c7e54..a46cd84b60 100644 --- a/indra/newview/llchathistory.cpp +++ b/indra/newview/llchathistory.cpp @@ -577,23 +577,17 @@ void LLChatHistory::appendMessage(const LLChat& chat, const bool use_plain_text_  		view->reshape(target_rect.getWidth(), view->getRect().getHeight());  		view->setOrigin(target_rect.mLeft, view->getRect().mBottom); -		std::string header_text = "[" + chat.mTimeStr + "] "; +		std::string widget_associated_text = "\n[" + chat.mTimeStr + "] ";  		if (utf8str_trim(chat.mFromName).size() != 0 && chat.mFromName != SYSTEM_FROM) -			header_text += chat.mFromName + delimiter; +			widget_associated_text += chat.mFromName + delimiter; -		mEditor->appendWidget(p, header_text, false); +		mEditor->appendWidget(p, widget_associated_text, false);  		mLastFromName = chat.mFromName;  		mLastFromID = chat.mFromID;  		mLastMessageTime = new_message_time;  	}  	std::string message = irc_me ? chat.mText.substr(3) : chat.mText; -	if ( message.size() > 0 && !LLStringOps::isSpace(message[message.size() - 1]) ) -	{ -		// Ensure that message ends with NewLine, to avoid losing of new lines -		// while copy/paste from text chat. See EXT-3263. -		message += NEW_LINE; -	}  	mEditor->appendText(message, FALSE, style_params);  	mEditor->blockUndo(); @@ -615,3 +609,11 @@ void LLChatHistory::draw()  	LLUICtrl::draw();  } +void LLChatHistory::reshape(S32 width, S32 height, BOOL called_from_parent) +{ +	bool is_scrolled_to_end = mEditor->scrolledToEnd(); +	LLUICtrl::reshape( width, height, called_from_parent ); +	// update scroll +	if (is_scrolled_to_end) +		mEditor->setCursorAndScrollToEnd(); +} diff --git a/indra/newview/llchathistory.h b/indra/newview/llchathistory.h index 260015e2dc..f2d403f639 100644 --- a/indra/newview/llchathistory.h +++ b/indra/newview/llchathistory.h @@ -119,6 +119,7 @@ class LLChatHistory : public LLUICtrl  		 */  		void appendMessage(const LLChat& chat, const bool use_plain_text_chat_history = false, const LLStyle::Params& input_append_params = LLStyle::Params());  		/*virtual*/ void clear(); +		/*virtual*/ void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE);  	private:  		std::string mLastFromName; diff --git a/indra/newview/llchiclet.cpp b/indra/newview/llchiclet.cpp index 5cbe6f9670..1d739f07b1 100644 --- a/indra/newview/llchiclet.cpp +++ b/indra/newview/llchiclet.cpp @@ -453,6 +453,7 @@ LLIMChiclet::LLIMChiclet(const LLIMChiclet::Params& p)  , mNewMessagesIcon(NULL)  , mSpeakerCtrl(NULL)  , mCounterCtrl(NULL) +, mChicletButton(NULL)  {  	enableCounterControl(p.enable_counter);  } @@ -576,6 +577,11 @@ void LLIMChiclet::onMouseDown()  	setCounter(0);  } +void LLIMChiclet::setToggleState(bool toggle) +{ +	mChicletButton->setToggleState(toggle); +} +  BOOL LLIMChiclet::handleMouseDown(S32 x, S32 y, MASK mask)  {  	onMouseDown(); @@ -634,6 +640,7 @@ LLIMChiclet::EType LLIMChiclet::getIMSessionType(const LLUUID& session_id)  LLIMP2PChiclet::Params::Params()  : avatar_icon("avatar_icon") +, chiclet_button("chiclet_button")  , unread_notifications("unread_notifications")  , speaker("speaker")  , new_message_icon("new_message_icon") @@ -646,6 +653,10 @@ LLIMP2PChiclet::LLIMP2PChiclet(const Params& p)  , mChicletIconCtrl(NULL)  , mPopupMenu(NULL)  { +	LLButton::Params button_params = p.chiclet_button; +	mChicletButton = LLUICtrlFactory::create<LLButton>(button_params); +	addChild(mChicletButton); +  	LLIconCtrl::Params new_msg_params = p.new_message_icon;  	mNewMessagesIcon = LLUICtrlFactory::create<LLIconCtrl>(new_msg_params);  	addChild(mNewMessagesIcon); @@ -760,6 +771,7 @@ void LLIMP2PChiclet::onMenuItemClicked(const LLSD& user_data)  LLAdHocChiclet::Params::Params()  : avatar_icon("avatar_icon") +, chiclet_button("chiclet_button")  , unread_notifications("unread_notifications")  , speaker("speaker")  , new_message_icon("new_message_icon") @@ -773,6 +785,10 @@ LLAdHocChiclet::LLAdHocChiclet(const Params& p)  , mChicletIconCtrl(NULL)  , mPopupMenu(NULL)  { +	LLButton::Params button_params = p.chiclet_button; +	mChicletButton = LLUICtrlFactory::create<LLButton>(button_params); +	addChild(mChicletButton); +  	LLIconCtrl::Params new_msg_params = p.new_message_icon;  	mNewMessagesIcon = LLUICtrlFactory::create<LLIconCtrl>(new_msg_params);  	addChild(mNewMessagesIcon); @@ -887,6 +903,7 @@ BOOL LLAdHocChiclet::handleRightMouseDown(S32 x, S32 y, MASK mask)  LLIMGroupChiclet::Params::Params()  : group_icon("group_icon") +, chiclet_button("chiclet_button")  , unread_notifications("unread_notifications")  , speaker("speaker")  , new_message_icon("new_message_icon") @@ -900,6 +917,10 @@ LLIMGroupChiclet::LLIMGroupChiclet(const Params& p)  , mChicletIconCtrl(NULL)  , mPopupMenu(NULL)  { +	LLButton::Params button_params = p.chiclet_button; +	mChicletButton = LLUICtrlFactory::create<LLButton>(button_params); +	addChild(mChicletButton); +  	LLIconCtrl::Params new_msg_params = p.new_message_icon;  	mNewMessagesIcon = LLUICtrlFactory::create<LLIconCtrl>(new_msg_params);  	addChild(mNewMessagesIcon); @@ -1276,6 +1297,7 @@ void LLChicletPanel::removeChiclet(chiclet_list_t::iterator it)  	mChicletList.erase(it);  	arrange(); +	(*it)->die();  }  void LLChicletPanel::removeChiclet(S32 index) @@ -1414,6 +1436,32 @@ S32	LLChicletPanel::notifyParent(const LLSD& info)  	return LLPanel::notifyParent(info);  } +void LLChicletPanel::setChicletToggleState(const LLUUID& session_id, bool toggle) +{ +	if(session_id.isNull()) +	{ +		llwarns << "Null Session ID" << llendl; +	} + +	// toggle off all chiclets, except specified +	S32 size = getChicletCount(); +	for(int n = 0; n < size; ++n) +	{ +		LLIMChiclet* chiclet = getChiclet<LLIMChiclet>(n); +		if(chiclet && chiclet->getSessionId() != session_id) +		{ +			chiclet->setToggleState(false); +		} +	} + +	// toggle specified chiclet +	LLIMChiclet* chiclet = findChiclet<LLIMChiclet>(session_id); +	if(chiclet) +	{ +		chiclet->setToggleState(toggle); +	} +} +  void LLChicletPanel::arrange()  {  	if(mChicletList.empty()) @@ -1806,6 +1854,7 @@ LLChicletSpeakerCtrl::LLChicletSpeakerCtrl(const Params&p)  LLScriptChiclet::Params::Params()   : icon("icon") + , chiclet_button("chiclet_button")   , new_message_icon("new_message_icon")  {  } @@ -1814,6 +1863,10 @@ LLScriptChiclet::LLScriptChiclet(const Params&p)   : LLIMChiclet(p)   , mChicletIconCtrl(NULL)  { +	LLButton::Params button_params = p.chiclet_button; +	mChicletButton = LLUICtrlFactory::create<LLButton>(button_params); +	addChild(mChicletButton); +  	LLIconCtrl::Params new_msg_params = p.new_message_icon;  	mNewMessagesIcon = LLUICtrlFactory::create<LLIconCtrl>(new_msg_params);  	addChild(mNewMessagesIcon); @@ -1862,6 +1915,7 @@ static const std::string INVENTORY_USER_OFFER	("UserGiveItem");  LLInvOfferChiclet::Params::Params()   : icon("icon") + , chiclet_button("chiclet_button")   , new_message_icon("new_message_icon")  {  } @@ -1870,6 +1924,10 @@ LLInvOfferChiclet::LLInvOfferChiclet(const Params&p)   : LLIMChiclet(p)   , mChicletIconCtrl(NULL)  { +	LLButton::Params button_params = p.chiclet_button; +	mChicletButton = LLUICtrlFactory::create<LLButton>(button_params); +	addChild(mChicletButton); +  	LLIconCtrl::Params new_msg_params = p.new_message_icon;  	mNewMessagesIcon = LLUICtrlFactory::create<LLIconCtrl>(new_msg_params);  	addChild(mNewMessagesIcon); diff --git a/indra/newview/llchiclet.h b/indra/newview/llchiclet.h index 3665e4d093..bb4846aa57 100644 --- a/indra/newview/llchiclet.h +++ b/indra/newview/llchiclet.h @@ -325,7 +325,7 @@ public:  	}; -	/*virtual*/ ~LLIMChiclet() {}; +	virtual ~LLIMChiclet() {};  	/**  	 * Sets IM session name. This name will be displayed in chiclet tooltip. @@ -422,6 +422,8 @@ public:  	 */  	virtual void onMouseDown(); +	virtual void setToggleState(bool toggle); +  protected:  	LLIMChiclet(const LLIMChiclet::Params& p); @@ -438,7 +440,7 @@ protected:  	LLIconCtrl* mNewMessagesIcon;  	LLChicletNotificationCounterCtrl* mCounterCtrl;  	LLChicletSpeakerCtrl* mSpeakerCtrl; - +	LLButton* mChicletButton;  	/** the id of another participant, either an avatar id or a group id*/  	LLUUID mOtherParticipantId; @@ -473,6 +475,8 @@ class LLIMP2PChiclet : public LLIMChiclet  public:  	struct Params : public LLInitParam::Block<Params, LLIMChiclet::Params>  	{ +		Optional<LLButton::Params> chiclet_button; +  		Optional<LLChicletAvatarIconCtrl::Params> avatar_icon;  		Optional<LLChicletNotificationCounterCtrl::Params> unread_notifications; @@ -538,6 +542,8 @@ class LLAdHocChiclet : public LLIMChiclet  public:  	struct Params : public LLInitParam::Block<Params, LLIMChiclet::Params>  	{ +		Optional<LLButton::Params> chiclet_button; +  		Optional<LLChicletAvatarIconCtrl::Params> avatar_icon;  		Optional<LLChicletNotificationCounterCtrl::Params> unread_notifications; @@ -614,6 +620,8 @@ public:  	struct Params : public LLInitParam::Block<Params, LLIMChiclet::Params>  	{ +		Optional<LLButton::Params> chiclet_button; +  		Optional<LLIconCtrl::Params> icon;  		Optional<LLIconCtrl::Params> new_message_icon; @@ -656,6 +664,8 @@ public:  	struct Params : public LLInitParam::Block<Params, LLIMChiclet::Params>  	{ +		Optional<LLButton::Params> chiclet_button; +  		Optional<LLChicletInvOfferIconCtrl::Params> icon;  		Optional<LLIconCtrl::Params> new_message_icon; @@ -697,6 +707,8 @@ public:  	struct Params : public LLInitParam::Block<Params, LLIMChiclet::Params>  	{ +		Optional<LLButton::Params> chiclet_button; +  		Optional<LLChicletGroupIconCtrl::Params> group_icon;  		Optional<LLChicletNotificationCounterCtrl::Params> unread_notifications; @@ -1040,6 +1052,11 @@ public:  	S32	notifyParent(const LLSD& info); +	/** +	 * Toggle chiclet by session id ON and toggle OFF all other chiclets. +	 */ +	void setChicletToggleState(const LLUUID& session_id, bool toggle); +  protected:  	LLChicletPanel(const Params&p);  	friend class LLUICtrlFactory; diff --git a/indra/newview/llcompilequeue.cpp b/indra/newview/llcompilequeue.cpp index eb9a2fec2f..72074955d1 100644 --- a/indra/newview/llcompilequeue.cpp +++ b/indra/newview/llcompilequeue.cpp @@ -59,7 +59,6 @@  #include "llbutton.h"  #include "lldir.h" -#include "llfloaterchat.h"  #include "llnotificationsutil.h"  #include "llviewerstats.h"  #include "llvfile.h" @@ -447,14 +446,10 @@ void LLFloaterCompileQueue::scriptArrived(LLVFS *vfs, const LLUUID& asset_id,  		if( LL_ERR_ASSET_REQUEST_NOT_IN_DATABASE == status )  		{ -			LLChat chat(LLTrans::getString("CompileQueueScriptNotFound")); -			LLFloaterChat::addChat(chat);  			buffer = LLTrans::getString("CompileQueueProblemDownloading") + (": ") + data->mScriptName;  		}  		else if (LL_ERR_INSUFFICIENT_PERMISSIONS == status)  		{ -			LLChat chat(LLTrans::getString("CompileQueueInsufficientPermDownload")); -			LLFloaterChat::addChat(chat);  			buffer = LLTrans::getString("CompileQueueInsufficientPermFor") + (": ") + data->mScriptName;  		}  		else diff --git a/indra/newview/llfloaterbulkpermission.cpp b/indra/newview/llfloaterbulkpermission.cpp index 538b44c056..5c3a54e34b 100644 --- a/indra/newview/llfloaterbulkpermission.cpp +++ b/indra/newview/llfloaterbulkpermission.cpp @@ -48,7 +48,6 @@  #include "llresmgr.h"  #include "llbutton.h"  #include "lldir.h" -#include "llfloaterchat.h"  #include "llviewerstats.h"  #include "lluictrlfactory.h"  #include "llselectmgr.h" diff --git a/indra/newview/llfloaterchat.cpp b/indra/newview/llfloaterchat.cpp index 18b9f0484f..c24c224133 100644 --- a/indra/newview/llfloaterchat.cpp +++ b/indra/newview/llfloaterchat.cpp @@ -37,8 +37,6 @@  #include "llviewerprecompiledheaders.h" -#include "llfloaterchat.h" -  // project include  #include "llagent.h"  #include "llappviewer.h" diff --git a/indra/newview/llfloaterchatterbox.cpp b/indra/newview/llfloaterchatterbox.cpp index 9108cfb72b..84b423399e 100644 --- a/indra/newview/llfloaterchatterbox.cpp +++ b/indra/newview/llfloaterchatterbox.cpp @@ -38,7 +38,6 @@  #include "llfloaterreg.h"  #include "llfloaterchatterbox.h"  #include "lluictrlfactory.h" -#include "llfloaterchat.h"  #include "llfloaterfriends.h"  #include "llfloatergroups.h"  #include "llviewercontrol.h" @@ -134,22 +133,6 @@ BOOL LLFloaterChatterBox::postBuild()  		addFloater(LLFloaterMyFriends::getInstance(), TRUE);  	} -	if (gSavedSettings.getBOOL("ChatHistoryTornOff")) -	{ -		LLFloaterChat* floater_chat = LLFloaterChat::getInstance(); -		if(floater_chat) -		{ -			// add then remove to set up relationship for re-attach -			addFloater(floater_chat, FALSE); -			removeFloater(floater_chat); -			// reparent to floater view -			gFloaterView->addChild(floater_chat); -		} -	} -	else -	{ -		addFloater(LLFloaterChat::getInstance(), FALSE); -	}  	mTabContainer->lockTabs();  	return TRUE;  } @@ -230,8 +213,6 @@ void LLFloaterChatterBox::onOpen(const LLSD& key)  	//*TODO:Skinning show the session id associated with key  	if (key.asString() == "local")  	{ -		LLFloaterChat* chat = LLFloaterReg::findTypedInstance<LLFloaterChat>("chat"); -		chat->openFloater();  	}  	else if (key.isDefined())  	{ @@ -245,12 +226,6 @@ void LLFloaterChatterBox::onOpen(const LLSD& key)  void LLFloaterChatterBox::onVisibilityChange ( const LLSD& new_visibility )  { -	// HACK: potentially need to toggle console -	LLFloaterChat* instance = LLFloaterChat::getInstance(); -	if(instance) -	{ -		instance->updateConsoleVisibility(); -	}  }  void LLFloaterChatterBox::removeFloater(LLFloater* floaterp) @@ -349,8 +324,7 @@ LLFloater* LLFloaterChatterBox::getCurrentVoiceFloater()  	}  	if (LLVoiceChannelProximal::getInstance() == LLVoiceChannel::getCurrentVoiceChannel())  	{ -		// show near me tab if in proximal channel -		return LLFloaterChat::getInstance(); +		return NULL;  	}  	else  	{ diff --git a/indra/newview/llimfloater.cpp b/indra/newview/llimfloater.cpp index aee34eb0af..d7c60ff34e 100644 --- a/indra/newview/llimfloater.cpp +++ b/indra/newview/llimfloater.cpp @@ -42,7 +42,6 @@  #include "llbottomtray.h"  #include "llchannelmanager.h"  #include "llchiclet.h" -#include "llfloaterchat.h"  #include "llfloaterreg.h"  #include "llimfloatercontainer.h" // to replace separate IM Floaters with multifloater container  #include "lllayoutstack.h" @@ -115,6 +114,8 @@ LLIMFloater::LLIMFloater(const LLUUID& session_id)  void LLIMFloater::onFocusLost()  {  	LLIMModel::getInstance()->resetActiveSessionID(); +	 +	LLBottomTray::getInstance()->getChicletPanel()->setChicletToggleState(mSessionID, false);  }  void LLIMFloater::onFocusReceived() @@ -126,6 +127,8 @@ void LLIMFloater::onFocusReceived()  	{  		mInputEditor->setFocus(TRUE);  	} + +	LLBottomTray::getInstance()->getChicletPanel()->setChicletToggleState(mSessionID, true);  }  // virtual @@ -490,6 +493,15 @@ void LLIMFloater::setVisible(BOOL visible)  		updateMessages();  		mInputEditor->setFocus(TRUE);  	} + +	if(!visible) +	{ +		LLIMChiclet* chiclet = LLBottomTray::getInstance()->getChicletPanel()->findChiclet<LLIMChiclet>(mSessionID); +		if(chiclet) +		{ +			chiclet->setToggleState(false); +		} +	}  }  //static diff --git a/indra/newview/llimpanel.cpp b/indra/newview/llimpanel.cpp index 029ddbaf2c..9a6115dd63 100644 --- a/indra/newview/llimpanel.cpp +++ b/indra/newview/llimpanel.cpp @@ -59,7 +59,6 @@  #include "llinventory.h"  #include "llinventorymodel.h"  #include "llfloaterinventory.h" -#include "llfloaterchat.h"  #include "lliconctrl.h"  #include "llkeyboard.h"  #include "lllineeditor.h" diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp index f751fa2273..6064415a10 100644 --- a/indra/newview/llimview.cpp +++ b/indra/newview/llimview.cpp @@ -51,7 +51,6 @@  #include "llchat.h"  #include "llchiclet.h"  #include "llresmgr.h" -#include "llfloaterchat.h"  #include "llfloaterchatterbox.h"  #include "llavataractions.h"  #include "llhttpnode.h" @@ -2236,7 +2235,6 @@ void LLIMMgr::addSystemMessage(const LLUUID& session_id, const std::string& mess  		LLChat chat(message);  		chat.mSourceType = CHAT_SOURCE_SYSTEM; -		LLFloaterChat::addChatHistory(chat);  		LLNearbyChat* nearby_chat = LLFloaterReg::getTypedInstance<LLNearbyChat>("nearby_chat", LLSD());  		if(nearby_chat) @@ -2404,7 +2402,9 @@ LLUUID LLIMMgr::addSession(  	//we don't need to show notes about online/offline, mute/unmute users' statuses for existing sessions  	if (!new_session) return session_id; -	noteOfflineUsers(session_id, floater, ids); +	//Per Plan's suggestion commented "explicit offline status warning" out to make Dessie happier (see EXT-3609) +	//*TODO After February 2010 remove this commented out line if no one will be missing that warning +	//noteOfflineUsers(session_id, floater, ids);  	// Only warn for regular IMs - not group IMs  	if( dialog == IM_NOTHING_SPECIAL ) @@ -3136,9 +3136,6 @@ public:  				ll_vector3_from_sd(message_params["position"]),  				true); -			chat.mText = std::string("IM: ") + name + separator_string + saved + message; -			LLFloaterChat::addChat(chat, TRUE, is_this_agent); -  			//K now we want to accept the invitation  			std::string url = gAgent.getRegion()->getCapability(  				"ChatSessionRequest"); diff --git a/indra/newview/llinventoryfunctions.cpp b/indra/newview/llinventoryfunctions.cpp index e3caabf08f..2885ba13fa 100644 --- a/indra/newview/llinventoryfunctions.cpp +++ b/indra/newview/llinventoryfunctions.cpp @@ -51,7 +51,6 @@  #include "llappearancemgr.h"  #include "llappviewer.h"  //#include "llfirstuse.h" -#include "llfloaterchat.h"  #include "llfloatercustomize.h"  #include "llfocusmgr.h"  #include "llfolderview.h" diff --git a/indra/newview/lllogchat.cpp b/indra/newview/lllogchat.cpp index 92f19c9232..4e5aaeb66a 100644 --- a/indra/newview/lllogchat.cpp +++ b/indra/newview/lllogchat.cpp @@ -35,7 +35,6 @@  #include "llagent.h"  #include "llagentui.h"  #include "lllogchat.h" -#include "llfloaterchat.h"  #include "lltrans.h"  #include "llviewercontrol.h" diff --git a/indra/newview/llmenucommands.cpp b/indra/newview/llmenucommands.cpp index 757eb3c9bc..8d950f072d 100644 --- a/indra/newview/llmenucommands.cpp +++ b/indra/newview/llmenucommands.cpp @@ -46,7 +46,6 @@  #include "llcallingcard.h"  #include "llviewercontrol.h"  //#include "llfirstuse.h" -#include "llfloaterchat.h"  #include "llfloaterworldmap.h"  #include "lllineeditor.h"  #include "llstatusbar.h" diff --git a/indra/newview/llmutelist.cpp b/indra/newview/llmutelist.cpp index af66b6e3de..cf4a08ce76 100644 --- a/indra/newview/llmutelist.cpp +++ b/indra/newview/llmutelist.cpp @@ -64,7 +64,6 @@  #include "llviewerwindow.h"  #include "llworld.h" //for particle system banning  #include "llchat.h" -#include "llfloaterchat.h"  #include "llimview.h"  #include "llnotifications.h"  #include "lluistring.h" @@ -532,9 +531,6 @@ void notify_automute_callback(const LLUUID& agent_id, const std::string& first_n  			LLIMModel::getInstance()->addMessage(agent_id, SYSTEM_FROM, LLUUID::null, message);  		} - -		LLChat auto_chat(message); -		LLFloaterChat::addChat(auto_chat, FALSE, FALSE);  	}  } diff --git a/indra/newview/llnamebox.cpp b/indra/newview/llnamebox.cpp index d434017804..cd810b9793 100644 --- a/indra/newview/llnamebox.cpp +++ b/indra/newview/llnamebox.cpp @@ -53,6 +53,7 @@ LLNameBox::LLNameBox(const Params& p)  {  	mNameID = LLUUID::null;  	mLink = p.link; +	mInitialValue = p.initial_value().asString();  	LLNameBox::sInstances.insert(this);  	setText(LLStringUtil::null);  } @@ -67,17 +68,23 @@ void LLNameBox::setNameID(const LLUUID& name_id, BOOL is_group)  	mNameID = name_id;  	std::string name; +	BOOL got_name = FALSE;  	if (!is_group)  	{ -		gCacheName->getFullName(name_id, name); +		got_name = gCacheName->getFullName(name_id, name);  	}  	else  	{ -		gCacheName->getGroupName(name_id, name); +		got_name = gCacheName->getGroupName(name_id, name);  	} -	setName(name, is_group); +	// Got the name already? Set it. +	// Otherwise it will be set later in refresh(). +	if (got_name) +		setName(name, is_group); +	else +		setText(mInitialValue);  }  void LLNameBox::refresh(const LLUUID& id, const std::string& firstname, diff --git a/indra/newview/llnamebox.h b/indra/newview/llnamebox.h index 0109525e85..48b54faec8 100644 --- a/indra/newview/llnamebox.h +++ b/indra/newview/llnamebox.h @@ -76,6 +76,7 @@ private:  private:  	LLUUID mNameID;  	BOOL mLink; +	std::string mInitialValue;  }; diff --git a/indra/newview/llnamelistctrl.cpp b/indra/newview/llnamelistctrl.cpp index 7e6145f578..6375362ae2 100644 --- a/indra/newview/llnamelistctrl.cpp +++ b/indra/newview/llnamelistctrl.cpp @@ -74,12 +74,12 @@ void LLNameListCtrl::addNameItem(const LLUUID& agent_id, EAddPosition pos,  {  	//llinfos << "LLNameListCtrl::addNameItem " << agent_id << llendl; -	std::string fullname; -	gCacheName->getFullName(agent_id, fullname); - -	fullname.append(suffix); +	NameItem item; +	item.value = agent_id; +	item.enabled = enabled; +	item.target = INDIVIDUAL; -	addStringUUIDItem(fullname, agent_id, pos, enabled); +	addNameItemRow(item, pos);  }  // virtual, public @@ -130,11 +130,12 @@ BOOL LLNameListCtrl::handleDragAndDrop(  	return handled;  } -void LLNameListCtrl::showAvatarInspector(const LLUUID& avatar_id) +void LLNameListCtrl::showInspector(const LLUUID& avatar_id, bool is_group)  { -	LLSD key; -	key["avatar_id"] = avatar_id; -	LLFloaterReg::showInstance("inspect_avatar", key); +	if (is_group) +		LLFloaterReg::showInstance("inspect_group", LLSD().with("group_id", avatar_id)); +	else +		LLFloaterReg::showInstance("inspect_avatar", LLSD().with("avatar_id", avatar_id));  }  //virtual @@ -147,7 +148,7 @@ BOOL LLNameListCtrl::handleToolTip(S32 x, S32 y, MASK mask)  		&& column_index == mNameColumnIndex)  	{  		// ...this is the column with the avatar name -		LLUUID avatar_id = hit_item->getValue().asUUID(); +		LLUUID avatar_id = getItemId(hit_item);  		if (avatar_id.notNull())  		{  			// ...valid avatar id @@ -164,9 +165,12 @@ BOOL LLNameListCtrl::handleToolTip(S32 x, S32 y, MASK mask)  				LLCoordGL pos( sticky_rect.mRight - 16, sticky_rect.mTop );  				LLPointer<LLUIImage> icon = LLUI::getUIImage("Info_Small"); +				// Should we show a group or an avatar inspector? +				bool is_group = hit_item->getValue()["is_group"].asBoolean(); +  				LLToolTip::Params params;  				params.background_visible( false ); -				params.click_callback( boost::bind(&LLNameListCtrl::showAvatarInspector, this, avatar_id) ); +				params.click_callback( boost::bind(&LLNameListCtrl::showInspector, this, avatar_id, is_group) );  				params.delay_time(0.0f);		// spawn instantly on hover  				params.image( icon );  				params.message(""); @@ -220,9 +224,22 @@ LLScrollListItem* LLNameListCtrl::addElement(const LLSD& element, EAddPosition p  } -LLScrollListItem* LLNameListCtrl::addNameItemRow(const LLNameListCtrl::NameItem& name_item, EAddPosition pos) +LLScrollListItem* LLNameListCtrl::addNameItemRow( +	const LLNameListCtrl::NameItem& name_item, +	EAddPosition pos, +	std::string& suffix)  { -	LLScrollListItem* item = LLScrollListCtrl::addRow(name_item, pos); +	LLUUID id = name_item.value().asUUID(); +	LLScrollListItem* item = NULL; + +	// Store item type so that we can invoke the proper inspector. +	// *TODO Vadim: Is there a more proper way of storing additional item data? +	{ +		LLNameListCtrl::NameItem name_item_(name_item); +		name_item_.value = LLSD().with("uuid", id).with("is_group", name_item.target() == GROUP); +		item = LLScrollListCtrl::addRow(name_item_, pos); +	} +  	if (!item) return NULL;  	// use supplied name by default @@ -230,7 +247,7 @@ LLScrollListItem* LLNameListCtrl::addNameItemRow(const LLNameListCtrl::NameItem&  	switch(name_item.target)  	{  	case GROUP: -		gCacheName->getGroupName(name_item.value().asUUID(), fullname); +		gCacheName->getGroupName(id, fullname);  		// fullname will be "nobody" if group not found  		break;  	case SPECIAL: @@ -239,7 +256,7 @@ LLScrollListItem* LLNameListCtrl::addNameItemRow(const LLNameListCtrl::NameItem&  	case INDIVIDUAL:  		{  			std::string name; -			if (gCacheName->getFullName(name_item.value().asUUID(), name)) +			if (gCacheName->getFullName(id, name))  			{  				fullname = name;  			} @@ -249,6 +266,12 @@ LLScrollListItem* LLNameListCtrl::addNameItemRow(const LLNameListCtrl::NameItem&  		break;  	} +	// Append optional suffix. +	if (!suffix.empty()) +	{ +		fullname.append(suffix); +	} +  	LLScrollListCell* cell = item->getColumn(mNameColumnIndex);  	if (cell)  	{ @@ -270,15 +293,24 @@ LLScrollListItem* LLNameListCtrl::addNameItemRow(const LLNameListCtrl::NameItem&  // public  void LLNameListCtrl::removeNameItem(const LLUUID& agent_id)  { -	BOOL item_exists = selectByID( agent_id ); -	if(item_exists) +	// Find the item specified with agent_id. +	S32 idx = -1; +	for (item_list::iterator it = getItemList().begin(); it != getItemList().end(); it++)  	{ -		S32 index = getItemIndex(getFirstSelected()); -		if(index >= 0) +		LLScrollListItem* item = *it; +		if (getItemId(item) == agent_id)  		{ -			deleteSingleItem(index); +			idx = getItemIndex(item); +			break;  		}  	} + +	// Remove it. +	if (idx >= 0) +	{ +		selectNthItem(idx); // not sure whether this is needed, taken from previous implementation +		deleteSingleItem(idx); +	}  }  // public @@ -303,7 +335,7 @@ void LLNameListCtrl::refresh(const LLUUID& id, const std::string& first,  	for (iter = getItemList().begin(); iter != getItemList().end(); iter++)  	{  		LLScrollListItem* item = *iter; -		if (item->getUUID() == id) +		if (getItemId(item) == id)  		{  			LLScrollListCell* cell = (LLScrollListCell*)item->getColumn(0);  			cell = item->getColumn(mNameColumnIndex); @@ -343,3 +375,9 @@ void LLNameListCtrl::updateColumns()  		}  	}  } + +// static +LLUUID LLNameListCtrl::getItemId(LLScrollListItem* item) +{ +	return item->getValue()["uuid"].asUUID(); +} diff --git a/indra/newview/llnamelistctrl.h b/indra/newview/llnamelistctrl.h index d0f0ec4d21..192a3a5afa 100644 --- a/indra/newview/llnamelistctrl.h +++ b/indra/newview/llnamelistctrl.h @@ -94,7 +94,7 @@ public:  	void addNameItem(NameItem& item, EAddPosition pos = ADD_BOTTOM);  	/*virtual*/ LLScrollListItem* addElement(const LLSD& element, EAddPosition pos = ADD_BOTTOM, void* userdata = NULL); -	LLScrollListItem* addNameItemRow(const NameItem& value, EAddPosition pos = ADD_BOTTOM); +	LLScrollListItem* addNameItemRow(const NameItem& value, EAddPosition pos = ADD_BOTTOM, std::string& suffix = LLStringUtil::null);  	// Add a user to the list by name.  It will be added, the name   	// requested from the cache, and updated as necessary. @@ -121,7 +121,8 @@ public:  	/*virtual*/ void updateColumns();  private: -	void showAvatarInspector(const LLUUID& avatar_id); +	void showInspector(const LLUUID& avatar_id, bool is_group); +	static LLUUID getItemId(LLScrollListItem* item);  private:  	S32    			mNameColumnIndex; diff --git a/indra/newview/llparticipantlist.cpp b/indra/newview/llparticipantlist.cpp index 0a180512ce..b049f914ad 100644 --- a/indra/newview/llparticipantlist.cpp +++ b/indra/newview/llparticipantlist.cpp @@ -582,7 +582,7 @@ void LLParticipantList::LLParticipantListMenu::moderateVoiceOtherParticipants(co  bool LLParticipantList::LLParticipantListMenu::enableContextMenuItem(const LLSD& userdata)  {  	std::string item = userdata.asString(); -	if (item == "can_mute_text" || "can_block" == item) +	if (item == "can_mute_text" || "can_block" == item || "can_share" == item || "can_im" == item)  	{  		return mUUIDs.front() != gAgentID;  	} diff --git a/indra/newview/llpreviewgesture.cpp b/indra/newview/llpreviewgesture.cpp index 2a40cbaba0..84bdaafacf 100644 --- a/indra/newview/llpreviewgesture.cpp +++ b/indra/newview/llpreviewgesture.cpp @@ -364,6 +364,12 @@ BOOL LLPreviewGesture::postBuild()  	LLTextBox* text;  	LLCheckBoxCtrl* check; +	edit = getChild<LLLineEditor>("name"); +	edit->setKeystrokeCallback(onKeystrokeCommit, this); + +	edit = getChild<LLLineEditor>("desc"); +	edit->setKeystrokeCallback(onKeystrokeCommit, this); +  	edit = getChild<LLLineEditor>("trigger_editor");  	edit->setKeystrokeCallback(onKeystrokeCommit, this);  	edit->setCommitCallback(onCommitSetDirty, this); diff --git a/indra/newview/llpreviewnotecard.cpp b/indra/newview/llpreviewnotecard.cpp index 95756ac5f3..cc70360528 100644 --- a/indra/newview/llpreviewnotecard.cpp +++ b/indra/newview/llpreviewnotecard.cpp @@ -55,7 +55,6 @@  #include "llviewerobjectlist.h"  #include "llviewerregion.h"  #include "lldir.h" -//#include "llfloaterchat.h"  #include "llviewerstats.h"  #include "llviewercontrol.h"		// gSavedSettings  #include "llappviewer.h"		// app_abort_quit() diff --git a/indra/newview/llpreviewscript.cpp b/indra/newview/llpreviewscript.cpp index 646c9fb6a4..fccf71f3cb 100644 --- a/indra/newview/llpreviewscript.cpp +++ b/indra/newview/llpreviewscript.cpp @@ -79,7 +79,6 @@  #include "llslider.h"  #include "lldir.h"  #include "llcombobox.h" -//#include "llfloaterchat.h"  #include "llviewerstats.h"  #include "llviewertexteditor.h"  #include "llviewerwindow.h" diff --git a/indra/newview/llscreenchannel.cpp b/indra/newview/llscreenchannel.cpp index 0adc9fc258..a00b6a9288 100644 --- a/indra/newview/llscreenchannel.cpp +++ b/indra/newview/llscreenchannel.cpp @@ -47,6 +47,7 @@  #include "llsyswellwindow.h"  #include "llimfloater.h"  #include "llscriptfloater.h" +#include "llfontgl.h"  #include <algorithm> @@ -568,6 +569,7 @@ void LLScreenChannel::showToastsTop()  void LLScreenChannel::createStartUpToast(S32 notif_num, F32 timer)  {  	LLRect toast_rect; +	LLRect tbox_rect;  	LLToast::Params p;  	p.lifetime_secs = timer;  	p.enable_hide_btn = false; @@ -582,9 +584,26 @@ void LLScreenChannel::createStartUpToast(S32 notif_num, F32 timer)  	std::string	text = LLTrans::getString("StartUpNotifications"); +	tbox_rect   = text_box->getRect(); +	S32 tbox_width  = tbox_rect.getWidth(); +	S32 tbox_vpad   = text_box->getVPad(); +	S32 text_width  = text_box->getDefaultFont()->getWidth(text); +	S32 text_height = text_box->getTextPixelHeight(); + +	// EXT - 3703 (Startup toast message doesn't fit toast width) +	// Calculating TextBox HEIGHT needed to include the whole string according to the given WIDTH of the TextBox. +	S32 new_tbox_height = (text_width/tbox_width + 1) * text_height; +	// Calculating TOP position of TextBox +	S32 new_tbox_top = new_tbox_height + tbox_vpad + gSavedSettings.getS32("ToastGap"); +	// Calculating toast HEIGHT according to the new TextBox size +	S32 toast_height = new_tbox_height + tbox_vpad * 2; + +	tbox_rect.setLeftTopAndSize(tbox_rect.mLeft, new_tbox_top, tbox_rect.getWidth(), new_tbox_height); +	text_box->setRect(tbox_rect); +  	toast_rect = mStartUpToastPanel->getRect();  	mStartUpToastPanel->reshape(getRect().getWidth(), toast_rect.getHeight(), true); -	toast_rect.setLeftTopAndSize(0, toast_rect.getHeight()+gSavedSettings.getS32("ToastGap"), getRect().getWidth(), toast_rect.getHeight());	 +	toast_rect.setLeftTopAndSize(0, toast_height + gSavedSettings.getS32("ToastGap"), getRect().getWidth(), toast_height);  	mStartUpToastPanel->setRect(toast_rect);  	text_box->setValue(text); diff --git a/indra/newview/llscriptfloater.cpp b/indra/newview/llscriptfloater.cpp index cf62d47362..0d9cf06bc3 100644 --- a/indra/newview/llscriptfloater.cpp +++ b/indra/newview/llscriptfloater.cpp @@ -72,6 +72,9 @@ LLScriptFloater::LLScriptFloater(const LLSD& key)  bool LLScriptFloater::toggle(const LLUUID& object_id)  { +	// Force chiclet toggle on here because first onFocusReceived() will not toggle it on. +	LLBottomTray::getInstance()->getChicletPanel()->setChicletToggleState(object_id, true); +  	LLUUID notification_id = LLScriptFloaterManager::getInstance()->findNotificationId(object_id);  	LLScriptFloater* floater = LLFloaterReg::findTypedInstance<LLScriptFloater>("script_floater", notification_id); @@ -180,6 +183,15 @@ void LLScriptFloater::setVisible(BOOL visible)  	LLDockableFloater::setVisible(visible);  	hideToastsIfNeeded(); + +	if(!visible) +	{ +		LLIMChiclet* chiclet = LLBottomTray::getInstance()->getChicletPanel()->findChiclet<LLIMChiclet>(getObjectId()); +		if(chiclet) +		{ +			chiclet->setToggleState(false); +		} +	}  }  void LLScriptFloater::onMouseDown() @@ -199,6 +211,20 @@ void LLScriptFloater::onMouseDown()  	}  } +void LLScriptFloater::onFocusLost() +{ +	LLBottomTray::getInstance()->getChicletPanel()->setChicletToggleState(getObjectId(), false); +} + +void LLScriptFloater::onFocusReceived() +{ +	// first focus will be received before setObjectId() call - don't toggle chiclet +	if(getObjectId().notNull()) +	{ +		LLBottomTray::getInstance()->getChicletPanel()->setChicletToggleState(getObjectId(), true); +	} +} +  void LLScriptFloater::hideToastsIfNeeded()  {  	using namespace LLNotificationsUI; diff --git a/indra/newview/llscriptfloater.h b/indra/newview/llscriptfloater.h index ed10dc5fe9..f86605c5d1 100644 --- a/indra/newview/llscriptfloater.h +++ b/indra/newview/llscriptfloater.h @@ -174,6 +174,10 @@ protected:  	 */  	void onMouseDown(); +	/*virtual*/ void onFocusLost(); +	 +	/*virtual*/ void onFocusReceived(); +  private:  	LLToastNotifyPanel* mScriptForm;  	LLUUID mObjectId; diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp index ad88534a5d..88b4c34e2b 100644 --- a/indra/newview/llstartup.cpp +++ b/indra/newview/llstartup.cpp @@ -101,7 +101,6 @@  #include "llface.h"  #include "llfeaturemanager.h"  //#include "llfirstuse.h" -#include "llfloaterchat.h"  #include "llfloaterhud.h"  #include "llfloaterland.h"  #include "llfloaterpreference.h" @@ -958,13 +957,6 @@ bool idle_startup()  		LLFile::mkdir(gDirUtilp->getChatLogsDir());  		LLFile::mkdir(gDirUtilp->getPerAccountChatLogsDir()); -		// chat history must be loaded AFTER chat directories are defined. -		if (!gNoRender && gSavedPerAccountSettings.getBOOL("LogShowHistory")) -		{ -			LLFloaterChat::loadHistory(); -		} -		 -		  		//good as place as any to create user windlight directories  		std::string user_windlight_path_name(gDirUtilp->getExpandedFilename( LL_PATH_USER_SETTINGS , "windlight", ""));  		LLFile::mkdir(user_windlight_path_name.c_str());		 diff --git a/indra/newview/llstatusbar.cpp b/indra/newview/llstatusbar.cpp index 24895e7a35..8a36475510 100644 --- a/indra/newview/llstatusbar.cpp +++ b/indra/newview/llstatusbar.cpp @@ -40,7 +40,6 @@  #include "llcommandhandler.h"  #include "llviewercontrol.h"  #include "llfloaterbuycurrency.h" -#include "llfloaterchat.h"  #include "llfloaterlagmeter.h"  #include "llpanelvolumepulldown.h"  #include "llfloaterregioninfo.h" diff --git a/indra/newview/lltoolbar.cpp b/indra/newview/lltoolbar.cpp index 224c5b64bc..edbaa0d45a 100644 --- a/indra/newview/lltoolbar.cpp +++ b/indra/newview/lltoolbar.cpp @@ -70,7 +70,6 @@  #include "llviewerwindow.h"  #include "lltoolgrab.h"  #include "llcombobox.h" -#include "llfloaterchat.h"  #include "llimpanel.h"  #include "lllayoutstack.h" @@ -281,21 +280,6 @@ void LLToolBar::updateCommunicateList()  	}  	itemp = communicate_button->addElement(contact_sd, ADD_TOP); -	LLSD communicate_sd; -	communicate_sd["value"] = "local chat"; -	communicate_sd["columns"][0]["value"] = LLFloaterChat::getInstance()->getShortTitle(); - -	if (LLFloaterChat::getInstance() == frontmost_floater) -	{ -		communicate_sd["columns"][0]["font"]["name"] = "SANSSERIF_SMALL"; -		communicate_sd["columns"][0]["font"]["style"] = "BOLD"; -		if (selected.isUndefined()) -		{ -			selected = "local chat"; -		} -	} -	itemp = communicate_button->addElement(communicate_sd, ADD_TOP); -  	communicate_button->addSeparator(ADD_TOP);  	communicate_button->add(getString("Redock Windows"), LLSD("redock"), ADD_TOP);  	communicate_button->addSeparator(ADD_TOP); @@ -357,8 +341,7 @@ void LLToolBar::onClickCommunicate(LLUICtrl* ctrl, const LLSD& user_data)  		if(chatterbox_instance)  		{  			chatterbox_instance->addFloater(LLFloaterMyFriends::getInstance(), FALSE); -		    chatterbox_instance->addFloater(LLFloaterChat::getInstance(), FALSE); -		 +			  			LLUUID session_to_show;  			std::set<LLHandle<LLFloater> >::const_iterator floater_handle_it; diff --git a/indra/newview/llviewerfloaterreg.cpp b/indra/newview/llviewerfloaterreg.cpp index e81115c8ab..3a834e7532 100644 --- a/indra/newview/llviewerfloaterreg.cpp +++ b/indra/newview/llviewerfloaterreg.cpp @@ -54,7 +54,6 @@  #include "llfloaterbulkpermission.h"  #include "llfloaterbump.h"  #include "llfloatercamera.h" -#include "llfloaterchat.h"  #include "llfloaterchatterbox.h"  #include "llfloaterdaycycle.h"  #include "llfloatersearch.h" @@ -154,7 +153,7 @@ void LLViewerFloaterReg::registerFloaters()  	LLFloaterReg::add("bumps", "floater_bumps.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterBump>);  	LLFloaterReg::add("camera", "floater_camera.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterCamera>); -	LLFloaterReg::add("chat", "floater_chat_history.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterChat>); +	//LLFloaterReg::add("chat", "floater_chat_history.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterChat>);  	LLFloaterReg::add("nearby_chat", "floater_nearby_chat.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLNearbyChat>);  	LLFloaterReg::add("communicate", "floater_chatterbox.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterChatterBox>);  	LLFloaterReg::add("compile_queue", "floater_script_queue.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterCompileQueue>); diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index 88a61c9d49..d96d7df24a 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -52,7 +52,6 @@  #include "llfloaterbuy.h"  #include "llfloaterbuycontents.h"  #include "llfloaterbuycurrency.h" -#include "llfloaterchat.h"  #include "llfloatercustomize.h"  #include "llfloaterchatterbox.h"  #include "llfloatergodtools.h" @@ -6374,51 +6373,8 @@ class LLToolsSelectedScriptAction : public view_listener_t  void handle_selected_texture_info(void*)  { -	for (LLObjectSelection::valid_iterator iter = LLSelectMgr::getInstance()->getSelection()->valid_begin(); -		 iter != LLSelectMgr::getInstance()->getSelection()->valid_end(); iter++) -	{ -		LLSelectNode* node = *iter; -		 -		std::string msg; -		msg.assign("Texture info for: "); -		msg.append(node->mName); -		LLChat chat(msg); -		LLFloaterChat::addChat(chat); - -		U8 te_count = node->getObject()->getNumTEs(); -		// map from texture ID to list of faces using it -		typedef std::map< LLUUID, std::vector<U8> > map_t; -		map_t faces_per_texture; -		for (U8 i = 0; i < te_count; i++) -		{ -			if (!node->isTESelected(i)) continue; - -			LLViewerTexture* img = node->getObject()->getTEImage(i); -			LLUUID image_id = img->getID(); -			faces_per_texture[image_id].push_back(i); -		} -		// Per-texture, dump which faces are using it. -		map_t::iterator it; -		for (it = faces_per_texture.begin(); it != faces_per_texture.end(); ++it) -		{ -			LLUUID image_id = it->first; -			U8 te = it->second[0]; -			LLViewerTexture* img = node->getObject()->getTEImage(te); -			S32 height = img->getHeight(); -			S32 width = img->getWidth(); -			S32 components = img->getComponents(); -			msg = llformat("%dx%d %s on face ", -								width, -								height, -								(components == 4 ? "alpha" : "opaque")); -			for (U8 i = 0; i < it->second.size(); ++i) -			{ -				msg.append( llformat("%d ", (S32)(it->second[i]))); -			} -			LLChat chat(msg); -			LLFloaterChat::addChat(chat); -		} -	} +	//useless without LLFloaterChat +	//as since we don't use LLFloaterChat...  }  void handle_test_male(void*) diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index c929e81ea4..5279c4174a 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -54,7 +54,6 @@  //#include "llfirstuse.h"  #include "llfloaterbuycurrency.h"  #include "llfloaterbuyland.h" -#include "llfloaterchat.h"  #include "llfloaterland.h"  #include "llfloaterregioninfo.h"  #include "llfloaterlandholdings.h" @@ -835,9 +834,13 @@ bool check_offer_throttle(const std::string& from_name, bool check_only)  				}  				message << ", automatic preview disabled for "  					<< OFFER_THROTTLE_TIME << " seconds."; -				chat.mText = message.str(); +				  				//this is kinda important, so actually put it on screen -				LLFloaterChat::addChat(chat, FALSE, FALSE); +				std::string log_msg = message.str(); +				LLSD args; +				args["MESSAGE"] = log_msg; +				LLNotificationsUtil::add("SystemMessage", args); +  				throttle_logged=true;  			}  			return false; @@ -1178,8 +1181,9 @@ bool LLOfferInfo::inventory_offer_callback(const LLSD& notification, const LLSD&  		if (check_offer_throttle(mFromName, true))  		{  			log_message = chatHistory_string + " " + LLTrans::getString("InvOfferGaveYou") + " " + mDesc + LLTrans::getString("."); -			chat.mText = log_message; -			LLFloaterChat::addChatHistory(chat); +			LLSD args; +			args["MESSAGE"] = log_message; +			LLNotificationsUtil::add("SystemMessage", args);  		}  		break; @@ -1352,8 +1356,10 @@ bool LLOfferInfo::inventory_task_offer_callback(const LLSD& notification, const  			if (check_offer_throttle(mFromName, true))  			{  				log_message = chatHistory_string + " " + LLTrans::getString("InvOfferGaveYou") + " " + mDesc + LLTrans::getString("."); -				chat.mText = log_message; -				LLFloaterChat::addChatHistory(chat); +				//TODO* should go to history only - how? +				//LLSD args; +				//args["MESSAGE"] = log_message; +				//LLNotificationsUtil::add("SystemMessage", args);  			}  			// we will want to open this item when it comes back. @@ -1395,13 +1401,11 @@ bool LLOfferInfo::inventory_task_offer_callback(const LLSD& notification, const  			// send the message  			msg->sendReliable(mHost); -			log_message = LLTrans::getString("InvOfferYouDecline") + " " + mDesc + " " + LLTrans::getString("InvOfferFrom") + " " + mFromName +"."; -			chat.mText = log_message; -			if( LLMuteList::getInstance()->isMuted(mFromID ) && ! LLMuteList::getInstance()->isLinden(mFromName) )  // muting for SL-42269 -			{ -				chat.mMuted = TRUE; -			} -			LLFloaterChat::addChatHistory(chat); +			//TODO* should go to message history only... +			//log_message = LLTrans::getString("InvOfferYouDecline") + " " + mDesc + " " + LLTrans::getString("InvOfferFrom") + " " + mFromName +"."; +			//LLSD args; +			//args["MESSAGE"] = log_message; +			//LLNotificationsUtil::add("SystemMessage", args);  			if (busy &&	(!mFromGroup && !mFromObject))  			{ @@ -1763,10 +1767,6 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)  				region_id,  				position,  				true); - -			// pretend this is chat generated by self, so it does not show up on screen -			chat.mText = std::string("IM: ") + name + separator_string + message; -			LLFloaterChat::addChat( chat, TRUE, TRUE );  		}  		else if (from_id.isNull())  		{ @@ -1822,19 +1822,24 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)  					region_id,  					position,  					true); -				chat.mText = std::string("IM: ") + name + separator_string + saved + message; - -				BOOL local_agent = FALSE; -				LLFloaterChat::addChat( chat, TRUE, local_agent );  			}  			else  			{  				// muted user, so don't start an IM session, just record line in chat  				// history.  Pretend the chat is from a local agent,  				// so it will go into the history but not be shown on screen. + +				//TODO* should go to message hisyory only +				//and this is not system message... +				//LLSD args; +				//args["MESSAGE"] = buffer; +				//LLNotificationsUtil::add("SystemMessage", args); + +				/*  				chat.mText = buffer;  				BOOL local_agent = TRUE;  				LLFloaterChat::addChat( chat, TRUE, local_agent ); +				*/  			}  		}  		break; @@ -2138,9 +2143,6 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)  			region_id,  			position,  			true); - -		chat.mText = std::string("IM: ") + name + separator_string +  saved + message; -		LLFloaterChat::addChat(chat, TRUE, is_this_agent);  	}  	break; @@ -2687,22 +2689,8 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data)  		chat.mMuted = is_muted && !is_linden; -		if (!visible_in_chat_bubble  -			&& (is_linden || !is_busy || is_owned_by_me)) -		{ -			// show on screen and add to history -			LLNotificationsUI::LLNotificationManager::instance().onChat( +		LLNotificationsUI::LLNotificationManager::instance().onChat(  					chat, LLNotificationsUI::NT_NEARBYCHAT); - -			LLFloaterChat::addChat(chat, FALSE, FALSE); -		} -		else -		{ -			LLNotificationsUI::LLNotificationManager::instance().onChat( -					chat, LLNotificationsUI::NT_NEARBYCHAT); -			// adding temporarily -			LLFloaterChat::addChatHistory(chat); -		}  	}  } @@ -3087,9 +3075,11 @@ void process_agent_movement_complete(LLMessageSystem* msg, void**)  		if (avatarp)  		{  			// Chat the "back" SLURL. (DEV-4907) -			LLChat chat("Teleport completed from " + gAgent.getTeleportSourceSLURL()); -			chat.mSourceType = CHAT_SOURCE_SYSTEM; - 		    LLFloaterChat::addChatHistory(chat); + +			//should go to history only so leave commented +			//LLSD args; +			//args["MESSAGE"] = message; +			//LLNotificationsUtil::add("SystemMessage", args);  			// Set the new position  			avatarp->setPositionAgent(agent_pos); diff --git a/indra/newview/llviewertexteditor.cpp b/indra/newview/llviewertexteditor.cpp index 300aea1620..2e92512b31 100644 --- a/indra/newview/llviewertexteditor.cpp +++ b/indra/newview/llviewertexteditor.cpp @@ -37,7 +37,6 @@  #include "llagent.h"  #include "llaudioengine.h"  #include "llavataractions.h" -#include "llfloaterchat.h"  #include "llfloaterreg.h"  #include "llfloaterworldmap.h"  #include "llfocusmgr.h" diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index 769344d183..c1817496b1 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -101,7 +101,6 @@  #include "llfloaterbuildoptions.h"  #include "llfloaterbuyland.h"  #include "llfloatercamera.h" -#include "llfloaterchat.h"  #include "llfloaterchatterbox.h"  #include "llfloatercustomize.h"  #include "llfloaterland.h" diff --git a/indra/newview/llvoiceclient.cpp b/indra/newview/llvoiceclient.cpp index 30f00f04af..51a75b5825 100644 --- a/indra/newview/llvoiceclient.cpp +++ b/indra/newview/llvoiceclient.cpp @@ -70,7 +70,6 @@  #include "llvoicechannel.h"  #include "llfloaterfriends.h"  //VIVOX, inorder to refresh communicate panel -#include "llfloaterchat.h"		// for LLFloaterChat::addChat()  // for base64 decoding  #include "apr_base64.h" @@ -4709,10 +4708,6 @@ void LLVoiceClient::messageEvent(  						LLUUID::null,			// default arg  						LLVector3::zero,		// default arg  						true);					// prepend name and make it a link to the user's profile - -				chat.mText = std::string("IM: ") + session->mName + std::string(": ") + message; -				// If the chat should come in quietly (i.e. we're in busy mode), pretend it's from a local agent. -				LLFloaterChat::addChat( chat, TRUE, quiet_chat );  			}  		}		  	} diff --git a/indra/newview/skins/default/xui/en/menu_participant_list.xml b/indra/newview/skins/default/xui/en/menu_participant_list.xml index 31263fbea8..805ffbae66 100644 --- a/indra/newview/skins/default/xui/en/menu_participant_list.xml +++ b/indra/newview/skins/default/xui/en/menu_participant_list.xml @@ -47,6 +47,9 @@       name="IM">          <menu_item_call.on_click           function="Avatar.IM" /> +        <menu_item_call.on_enable +         function="ParticipantList.EnableItem" +         parameter="can_im" />      </menu_item_call>      <menu_item_call       label="Call" @@ -65,6 +68,9 @@       name="Share">          <menu_item_call.on_click           function="Avatar.Share" /> +        <menu_item_call.on_enable +         function="ParticipantList.EnableItem" +         parameter="can_share" />      </menu_item_call>      <menu_item_call       label="Pay" diff --git a/indra/newview/skins/default/xui/en/panel_edit_profile.xml b/indra/newview/skins/default/xui/en/panel_edit_profile.xml index 172cf18fc4..8268937e7f 100644 --- a/indra/newview/skins/default/xui/en/panel_edit_profile.xml +++ b/indra/newview/skins/default/xui/en/panel_edit_profile.xml @@ -304,8 +304,10 @@              <name_box               follows="left|top|right"               height="30" +             initial_value="(retrieving)"               layout="topleft"               left="0" +             link="true"               name="partner_text"               top="0"               width="285" diff --git a/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml b/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml index 8188048821..5b0a7107e4 100644 --- a/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml +++ b/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml @@ -88,6 +88,7 @@ background_visible="true"       initial_value="(retrieving)"       layout="topleft"       left_delta="0" +     link="true"       name="founder_name"       top_pad="2"       use_ellipses="true" diff --git a/indra/newview/skins/default/xui/en/panel_my_profile.xml b/indra/newview/skins/default/xui/en/panel_my_profile.xml index 27c1af1860..2659156ba8 100644 --- a/indra/newview/skins/default/xui/en/panel_my_profile.xml +++ b/indra/newview/skins/default/xui/en/panel_my_profile.xml @@ -267,6 +267,7 @@                <name_box                 follows="left|top"                 height="10" +               initial_value="(retrieving)"                 layout="topleft"                 left="0"                 link="true" diff --git a/indra/newview/skins/default/xui/en/panel_profile.xml b/indra/newview/skins/default/xui/en/panel_profile.xml index 597b6410cd..2b907ed251 100644 --- a/indra/newview/skins/default/xui/en/panel_profile.xml +++ b/indra/newview/skins/default/xui/en/panel_profile.xml @@ -247,6 +247,7 @@                <name_box                 follows="left|top"                 height="10" +               initial_value="(retrieving)"                 layout="topleft"                 left="0"                 link="true" diff --git a/indra/newview/skins/default/xui/en/panel_status_bar.xml b/indra/newview/skins/default/xui/en/panel_status_bar.xml index bfca2f2e46..7a6089c74e 100644 --- a/indra/newview/skins/default/xui/en/panel_status_bar.xml +++ b/indra/newview/skins/default/xui/en/panel_status_bar.xml @@ -53,7 +53,7 @@       label_shadow="false"       name="buycurrency"       tool_tip="My Balance" -     top="5" +     top="3"       width="100" />      <button       auto_resize="true" @@ -71,7 +71,7 @@       name="buyL"       pad_right="20px"       tool_tip="Click to buy more L$" -     top="5" +     top="2"       width="100" />      <text       type="string" @@ -80,7 +80,7 @@       follows="right|bottom"       halign="right"       height="16" -     top="7" +     top="5"       layout="topleft"       left_pad="0"       name="TimeText" @@ -96,7 +96,7 @@       image_unselected="Audio_Off"       is_toggle="true"       left_pad="18" -     top="4" +     top="2"       name="volume_btn"       tool_tip="Global Volume Control"       width="16" /> diff --git a/indra/newview/skins/default/xui/en/panel_toast.xml b/indra/newview/skins/default/xui/en/panel_toast.xml index ba2d61afb7..d198237e5d 100644 --- a/indra/newview/skins/default/xui/en/panel_toast.xml +++ b/indra/newview/skins/default/xui/en/panel_toast.xml @@ -39,7 +39,8 @@     name="toast_text"     word_wrap="true"     text_color="white" -   top="5"  +   top="5" +   v_pad="5"       use_ellipses="true"     width="260">      Toast text; diff --git a/indra/newview/skins/default/xui/en/widgets/chiclet_im_adhoc.xml b/indra/newview/skins/default/xui/en/widgets/chiclet_im_adhoc.xml index 693c43f141..2bec5b8a29 100644 --- a/indra/newview/skins/default/xui/en/widgets/chiclet_im_adhoc.xml +++ b/indra/newview/skins/default/xui/en/widgets/chiclet_im_adhoc.xml @@ -4,6 +4,13 @@   name="im_adhoc_chiclet"   show_speaker="false"   width="25"> +    <chiclet_im_adhoc.chiclet_button  +     height="25" +     image_selected="PushButton_Selected" +     image_unselected="PushButton_Off" +     name="chiclet_button" +     tab_stop="false" +     width="25"/>      <chiclet_im_adhoc.speaker       auto_update="true"       draw_border="false" @@ -13,11 +20,13 @@       visible="false"       width="20" />      <chiclet_im_adhoc.avatar_icon +     bottom="3"       follows="left|top|bottom" -     height="22" +     height="19" +     left="3"       mouse_opaque="true"       name="adhoc_icon" -     width="22" /> +     width="19" />      <chiclet_im_adhoc.unread_notifications       font_halign="center"       height="25" diff --git a/indra/newview/skins/default/xui/en/widgets/chiclet_im_group.xml b/indra/newview/skins/default/xui/en/widgets/chiclet_im_group.xml index f4fc58701c..1d7f3208af 100644 --- a/indra/newview/skins/default/xui/en/widgets/chiclet_im_group.xml +++ b/indra/newview/skins/default/xui/en/widgets/chiclet_im_group.xml @@ -4,6 +4,13 @@   name="im_group_chiclet"   show_speaker="false"   width="25"> +    <chiclet_im_group.chiclet_button  +     height="25" +     image_selected="PushButton_Selected" +     image_unselected="PushButton_Off" +     name="chiclet_button" +     tab_stop="false" +     width="25"/>      <chiclet_im_group.speaker       auto_update="true"       draw_border="false" @@ -13,13 +20,14 @@       visible="false"       width="20" />      <chiclet_im_group.group_icon +     bottom="3"       default_icon="Generic_Group"       follows="left|top|bottom" -     height="18" -  bottom_pad="4" -     mouse_opaque="true" +     height="19" +     left="3" +     mouse_opaque="false"       name="group_icon" -     width="18" /> +     width="19" />      <chiclet_im_group.unread_notifications       height="25"       font_halign="center" diff --git a/indra/newview/skins/default/xui/en/widgets/chiclet_im_p2p.xml b/indra/newview/skins/default/xui/en/widgets/chiclet_im_p2p.xml index 535113f717..e6289f7cef 100644 --- a/indra/newview/skins/default/xui/en/widgets/chiclet_im_p2p.xml +++ b/indra/newview/skins/default/xui/en/widgets/chiclet_im_p2p.xml @@ -4,6 +4,13 @@   name="im_p2p_chiclet"   show_speaker="false"   width="25"> +    <chiclet_im_p2p.chiclet_button  +     height="25" +     image_selected="PushButton_Selected" +     image_unselected="PushButton_Off" +     name="chiclet_button" +     tab_stop="false" +     width="25"/>      <chiclet_im_p2p.speaker       auto_update="true"       draw_border="false" @@ -13,11 +20,13 @@       visible="false"       width="20"/>      <chiclet_im_p2p.avatar_icon +     bottom="3"       follows="left|top|bottom" -     height="22" -     mouse_opaque="true" +     height="19" +     left="3" +     mouse_opaque="false"       name="avatar_icon" -     width="22" /> +     width="19" />      <chiclet_im_p2p.unread_notifications       height="25"       font_halign="center" diff --git a/indra/newview/skins/default/xui/en/widgets/chiclet_offer.xml b/indra/newview/skins/default/xui/en/widgets/chiclet_offer.xml index 86bea9be50..138b50c968 100644 --- a/indra/newview/skins/default/xui/en/widgets/chiclet_offer.xml +++ b/indra/newview/skins/default/xui/en/widgets/chiclet_offer.xml @@ -3,14 +3,22 @@   height="25"   name="offer_chiclet"   width="25"> + <chiclet_offer.chiclet_button  +  height="25" +  image_selected="PushButton_Selected" +  image_unselected="PushButton_Off" +  name="chiclet_button" +  tab_stop="false" +  width="25"/>   <chiclet_offer.icon +  bottom="3"    default_icon="Generic_Object_Small"    follows="all" -  height="20" +  height="19" +  left="3"    mouse_opaque="false"    name="chiclet_icon" -  bottom_pad="2" -  width="20" /> +  width="19" />   <chiclet_offer.new_message_icon    bottom="11"    height="14" diff --git a/indra/newview/skins/default/xui/en/widgets/chiclet_script.xml b/indra/newview/skins/default/xui/en/widgets/chiclet_script.xml index b1f9f5b0e8..ecf149dc76 100644 --- a/indra/newview/skins/default/xui/en/widgets/chiclet_script.xml +++ b/indra/newview/skins/default/xui/en/widgets/chiclet_script.xml @@ -3,14 +3,22 @@   height="25"   name="script_chiclet"   width="25"> + <chiclet_script.chiclet_button  +  height="25" +  image_selected="PushButton_Selected" +  image_unselected="PushButton_Off" +  name="chiclet_button" +  tab_stop="false" +  width="25"/>   <chiclet_script.icon +  bottom="3"    follows="all" -  height="20" +  height="19"    image_name="Generic_Object_Small" +  left="3"    mouse_opaque="false"    name="chiclet_icon" -  width="20" -  bottom_pad="2" /> +  width="19"/>   <chiclet_script.new_message_icon    bottom="11"    height="14" | 
