diff options
Diffstat (limited to 'indra')
| -rw-r--r-- | indra/llui/llbutton.cpp | 2 | ||||
| -rw-r--r-- | indra/llui/llflashtimer.cpp | 9 | ||||
| -rw-r--r-- | indra/llui/llflashtimer.h | 6 | ||||
| -rw-r--r-- | indra/newview/llchiclet.cpp | 98 | ||||
| -rw-r--r-- | indra/newview/llchiclet.h | 48 | ||||
| -rw-r--r-- | indra/newview/llchicletbar.cpp | 1 | ||||
| -rw-r--r-- | indra/newview/llconversationmodel.cpp | 51 | ||||
| -rwxr-xr-x | indra/newview/llconversationview.cpp | 2 | ||||
| -rw-r--r-- | indra/newview/llfloaterimsession.cpp | 25 | ||||
| -rw-r--r-- | indra/newview/llfloaterimsession.h | 1 | ||||
| -rw-r--r-- | indra/newview/llfloaterimsessiontab.cpp | 2 | ||||
| -rw-r--r-- | indra/newview/llparticipantlist.cpp | 13 | ||||
| -rw-r--r-- | indra/newview/llsyswellwindow.cpp | 38 | ||||
| -rw-r--r-- | indra/newview/skins/default/textures/bottomtray/Unread_IM.png | bin | 458 -> 0 bytes | |||
| -rw-r--r-- | indra/newview/skins/default/textures/textures.xml | 1 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/menu_im_well_button.xml | 16 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/panel_chiclet_bar.xml | 48 | 
17 files changed, 80 insertions, 281 deletions
diff --git a/indra/llui/llbutton.cpp b/indra/llui/llbutton.cpp index 97547208ec..f82cdc64a9 100644 --- a/indra/llui/llbutton.cpp +++ b/indra/llui/llbutton.cpp @@ -286,7 +286,7 @@ LLButton::~LLButton()  	if (mFlashingTimer)  	{ -		delete mFlashingTimer; +		mFlashingTimer->unset();  	}  } diff --git a/indra/llui/llflashtimer.cpp b/indra/llui/llflashtimer.cpp index de7a4ab265..e49628acd5 100644 --- a/indra/llui/llflashtimer.cpp +++ b/indra/llui/llflashtimer.cpp @@ -35,6 +35,7 @@ LLFlashTimer::LLFlashTimer(callback_t cb, S32 count, F32 period)  		, mCurrentTickCount(0)          , mIsFlashingInProgress(false)          , mIsCurrentlyHighlighted(false) +        , mUnset(false)  {  	mEventTimer.stop(); @@ -48,6 +49,12 @@ LLFlashTimer::LLFlashTimer(callback_t cb, S32 count, F32 period)  	}  } +void LLFlashTimer::unset() +{ +	mUnset = true; +	mCallback = NULL; +} +  BOOL LLFlashTimer::tick()  {  	mIsCurrentlyHighlighted = !mIsCurrentlyHighlighted; @@ -62,7 +69,7 @@ BOOL LLFlashTimer::tick()  		stopFlashing();  	} -	return FALSE; +	return mUnset;  }  void LLFlashTimer::startFlashing() diff --git a/indra/llui/llflashtimer.h b/indra/llui/llflashtimer.h index 5c8860b097..c60f99a8ea 100644 --- a/indra/llui/llflashtimer.h +++ b/indra/llui/llflashtimer.h @@ -52,6 +52,11 @@ public:  	bool isFlashingInProgress();  	bool isCurrentlyHighlighted(); +	/* +	 * Use this instead of deleting this object. +	 * The next call to tick() will return true and that will destroy this object. +	 */ +	void unset();  private:  	callback_t		mCallback; @@ -62,6 +67,7 @@ private:  	S32 mCurrentTickCount;  	bool mIsCurrentlyHighlighted;  	bool mIsFlashingInProgress; +	bool mUnset;  };  #endif /* LL_FLASHTIMER_H */ diff --git a/indra/newview/llchiclet.cpp b/indra/newview/llchiclet.cpp index d6860640b7..a665aeb6bd 100644 --- a/indra/newview/llchiclet.cpp +++ b/indra/newview/llchiclet.cpp @@ -52,7 +52,6 @@  #include "llsyswellwindow.h"  static LLDefaultChildRegistry::Register<LLChicletPanel> t1("chiclet_panel"); -static LLDefaultChildRegistry::Register<LLIMWellChiclet> t2_0("chiclet_im_well");  static LLDefaultChildRegistry::Register<LLNotificationChiclet> t2("chiclet_notification");  static LLDefaultChildRegistry::Register<LLIMP2PChiclet> t3("chiclet_im_p2p");  static LLDefaultChildRegistry::Register<LLIMGroupChiclet> t4("chiclet_im_group"); @@ -177,103 +176,6 @@ BOOL LLSysWellChiclet::handleRightMouseDown(S32 x, S32 y, MASK mask)  }  /************************************************************************/ -/*               LLIMWellChiclet implementation                         */ -/************************************************************************/ -LLIMWellChiclet::LLIMWellChiclet(const Params& p) -: LLSysWellChiclet(p) -{ -	LLIMModel::instance().addNewMsgCallback(boost::bind(&LLIMWellChiclet::messageCountChanged, this, _1)); -	LLIMModel::instance().addNoUnreadMsgsCallback(boost::bind(&LLIMWellChiclet::messageCountChanged, this, _1)); - -	LLIMMgr::getInstance()->addSessionObserver(this); - -	LLIMWellWindow::getInstance()->setSysWellChiclet(this); -} - -LLIMWellChiclet::~LLIMWellChiclet() -{ -	LLIMWellWindow* im_well_window = LLIMWellWindow::findInstance(); -	if (im_well_window) -	{ -		im_well_window->setSysWellChiclet(NULL); -	} - -	LLIMMgr::getInstance()->removeSessionObserver(this); -} - -void LLIMWellChiclet::onMenuItemClicked(const LLSD& user_data) -{ -	std::string action = user_data.asString(); -	if("close all" == action) -	{ -		LLIMWellWindow::getInstance()->closeAll(); -	} -} - -bool LLIMWellChiclet::enableMenuItem(const LLSD& user_data) -{ -	std::string item = user_data.asString(); -	if (item == "can close all") -	{ -		return !LLIMWellWindow::getInstance()->isWindowEmpty(); -	} -	return true; -} - -void LLIMWellChiclet::createMenu() -{ -	if(mContextMenu) -	{ -		llwarns << "Menu already exists" << llendl; -		return; -	} - -	LLUICtrl::CommitCallbackRegistry::ScopedRegistrar registrar; -	registrar.add("IMWellChicletMenu.Action", -		boost::bind(&LLIMWellChiclet::onMenuItemClicked, this, _2)); - -	LLUICtrl::EnableCallbackRegistry::ScopedRegistrar enable_registrar; -	enable_registrar.add("IMWellChicletMenu.EnableItem", -		boost::bind(&LLIMWellChiclet::enableMenuItem, this, _2)); - -	mContextMenu = LLUICtrlFactory::getInstance()->createFromFile<LLContextMenu> -		("menu_im_well_button.xml", -		 LLMenuGL::sMenuContainer, -		 LLViewerMenuHolderGL::child_registry_t::instance()); -} - -void LLIMWellChiclet::messageCountChanged(const LLSD& session_data) -{ -	// The singleton class LLChicletBar instance might be already deleted -	// so don't create a new one. -	if (!LLChicletBar::instanceExists()) -	{ -		return; -	} - -	const LLUUID& session_id = session_data["session_id"]; -	const S32 counter = LLChicletBar::getInstance()->getTotalUnreadIMCount(); -	const bool im_not_visible = !LLFloaterReg::instanceVisible("im_container") -		&& !LLFloaterReg::instanceVisible("impanel", session_id); - -	setNewMessagesState(counter > mCounter	&& im_not_visible); - -	// we have to flash to 'Lit' state each time new unread message is coming. -	if (counter > mCounter && im_not_visible) -	{ -		mFlashToLitTimer->startFlashing(); -	} -	else if (counter == 0) -	{ -		// if notification is resolved while well is flashing it can leave in the 'Lit' state -		// when flashing finishes itself. Let break flashing here. -		mFlashToLitTimer->stopFlashing(); -	} - -	setCounter(counter); -} - -/************************************************************************/  /*               LLNotificationChiclet implementation                   */  /************************************************************************/  LLNotificationChiclet::LLNotificationChiclet(const Params& p) diff --git a/indra/newview/llchiclet.h b/indra/newview/llchiclet.h index 79ffad92ef..7f72c7f9e2 100644 --- a/indra/newview/llchiclet.h +++ b/indra/newview/llchiclet.h @@ -865,54 +865,6 @@ protected:  	LLContextMenu* mContextMenu;  }; -/** - * Class represented a chiclet for IM Well Icon. - * - * It displays a count of unread messages from other participants in all IM sessions. - */ -class LLIMWellChiclet : public LLSysWellChiclet, LLIMSessionObserver -{ -	friend class LLUICtrlFactory; -public: -	/*virtual*/ void sessionAdded(const LLUUID& session_id, const std::string& name, const LLUUID& other_participant_id, BOOL has_offline_msg) {} -    /*virtual*/ void sessionActivated(const LLUUID& session_id, const std::string& name, const LLUUID& other_participant_id) {} -	/*virtual*/ void sessionVoiceOrIMStarted(const LLUUID& session_id) {}; -	/*virtual*/ void sessionRemoved(const LLUUID& session_id) { messageCountChanged(LLSD()); } -	/*virtual*/ void sessionIDUpdated(const LLUUID& old_session_id, const LLUUID& new_session_id) {} - -	~LLIMWellChiclet(); -protected: -	LLIMWellChiclet(const Params& p); - -	/** -	 * Processes clicks on chiclet popup menu. -	 */ -	virtual void onMenuItemClicked(const LLSD& user_data); - -	/** -	 * Enables chiclet menu items. -	 */ -	bool enableMenuItem(const LLSD& user_data); - -	/** -	 * Creates menu. -	 */ -	/*virtual*/ void createMenu(); - -	/** -	 * Handles changes in a session (message was added, messages were read, etc.) -	 * -	 * It get total count of unread messages from a LLIMMgr in all opened sessions and display it. -	 * -	 * @param[in] session_data contains session related data, is not used now -	 *		["session_id"] - id of an appropriate session -	 *		["participant_unread"] - count of unread messages from "real" participants. -	 * -	 * @see LLIMMgr::getNumberOfUnreadParticipantMessages() -	 */ -	void messageCountChanged(const LLSD& session_data); -}; -  class LLNotificationChiclet : public LLSysWellChiclet  {  	LOG_CLASS(LLNotificationChiclet); diff --git a/indra/newview/llchicletbar.cpp b/indra/newview/llchicletbar.cpp index c66ae1cdd0..cfcde64e7b 100644 --- a/indra/newview/llchicletbar.cpp +++ b/indra/newview/llchicletbar.cpp @@ -158,7 +158,6 @@ BOOL LLChicletBar::postBuild()  	mToolbarStack = getChild<LLLayoutStack>("toolbar_stack");  	mChicletPanel = getChild<LLChicletPanel>("chiclet_list"); -	showWellButton("im_well", !LLIMWellWindow::getInstance()->isWindowEmpty());  	showWellButton("notification_well", !LLNotificationWellWindow::getInstance()->isWindowEmpty());  	LLPanelTopInfoBar::instance().setResizeCallback(boost::bind(&LLChicletBar::fitWithTopInfoBar, this)); diff --git a/indra/newview/llconversationmodel.cpp b/indra/newview/llconversationmodel.cpp index 0837a49095..728b1a3f4c 100644 --- a/indra/newview/llconversationmodel.cpp +++ b/indra/newview/llconversationmodel.cpp @@ -27,9 +27,11 @@  #include "llviewerprecompiledheaders.h" +#include "llagent.h"  #include "llavatarnamecache.h"  #include "llavataractions.h"  #include "llevents.h" +#include "llfloaterimsession.h"  #include "llsdutil.h"  #include "llconversationmodel.h"  #include "llimview.h" //For LLIMModel @@ -161,8 +163,9 @@ void LLConversationItemSession::addParticipant(LLConversationItemParticipant* pa  void LLConversationItemSession::updateParticipantName(LLConversationItemParticipant* participant)  { -	// We modify the session name only in the case of an ad-hoc session, exit otherwise (nothing to do) -	if (getType() != CONV_SESSION_AD_HOC) +	EConversationType conversation_type = getType(); +	// We modify the session name only in the case of an ad-hoc session or P2P session, exit otherwise (nothing to do) +	if ((conversation_type != CONV_SESSION_AD_HOC) && (conversation_type != CONV_SESSION_1_ON_1))  	{  		return;  	} @@ -171,26 +174,37 @@ void LLConversationItemSession::updateParticipantName(LLConversationItemParticip  	{  		return;  	} -	// Build a string containing the participants names and check if ready for display (we don't want "(waiting)" in there) -	bool all_names_resolved = true;  	uuid_vec_t temp_uuids; // uuids vector for building the added participants' names string -	child_list_t::iterator iter = mChildren.begin(); -	while (iter != mChildren.end()) +	if (conversation_type == CONV_SESSION_AD_HOC)  	{ -		LLConversationItemParticipant* current_participant = dynamic_cast<LLConversationItemParticipant*>(*iter); -		temp_uuids.push_back(current_participant->getUUID()); -		LLAvatarName av_name; -        if (!LLAvatarNameCache::get(current_participant->getUUID(), &av_name)) -        { -			// If the name is not in the cache yet, bail out -			// Note: we don't bind ourselves to the LLAvatarNameCache event as we are called by -			// onAvatarNameCache() which is itself attached to the same event. -			all_names_resolved = false; -			break; +		// Build a string containing the participants UUIDs (minus own agent) and check if ready for display (we don't want "(waiting)" in there) +		// Note: we don't bind ourselves to the LLAvatarNameCache event as updateParticipantName() is called by +		// onAvatarNameCache() which is itself attached to the same event. +		child_list_t::iterator iter = mChildren.begin(); +		while (iter != mChildren.end()) +		{ +			LLConversationItemParticipant* current_participant = dynamic_cast<LLConversationItemParticipant*>(*iter); +			// Add the avatar uuid to the list (except if it's the own agent uuid) +			if (current_participant->getUUID() != gAgentID) +			{ +				LLAvatarName av_name; +				if (LLAvatarNameCache::get(current_participant->getUUID(), &av_name)) +				{ +					temp_uuids.push_back(current_participant->getUUID()); +				} +			} +			iter++;  		} -		iter++;  	} -	if (all_names_resolved) +	else if (conversation_type == CONV_SESSION_1_ON_1) +	{ +		// In the case of a P2P conversersation, we need to grab the name of the other participant in the session instance itself +		// as we do not create participants for such a session. +        LLFloaterIMSession *conversationFloater = LLFloaterIMSession::findInstance(mUUID); +        LLUUID participantID = conversationFloater->getOtherParticipantUUID(); +        temp_uuids.push_back(participantID); +	} +	if (temp_uuids.size() != 0)  	{  		std::string new_session_name;  		LLAvatarActions::buildResidentsString(temp_uuids, new_session_name); @@ -203,6 +217,7 @@ void LLConversationItemSession::removeParticipant(LLConversationItemParticipant*  {  	removeChild(participant);  	mNeedsRefresh = true; +	updateParticipantName(participant);  	postEvent("remove_participant", this, participant);  } diff --git a/indra/newview/llconversationview.cpp b/indra/newview/llconversationview.cpp index a696fbdb47..16d57678db 100755 --- a/indra/newview/llconversationview.cpp +++ b/indra/newview/llconversationview.cpp @@ -95,7 +95,7 @@ LLConversationViewSession::~LLConversationViewSession()  		LLVoiceClient::getInstance()->removeObserver(mVoiceClientObserver);  	} -	delete mFlashTimer; +	mFlashTimer->unset();  }  bool LLConversationViewSession::isHighlightAllowed() diff --git a/indra/newview/llfloaterimsession.cpp b/indra/newview/llfloaterimsession.cpp index e1dc5b91d0..212b0df712 100644 --- a/indra/newview/llfloaterimsession.cpp +++ b/indra/newview/llfloaterimsession.cpp @@ -66,7 +66,6 @@ LLFloaterIMSession::LLFloaterIMSession(const LLUUID& session_id)    : LLFloaterIMSessionTab(session_id),  	mLastMessageIndex(-1),  	mDialog(IM_NOTHING_SPECIAL), -	mSavedTitle(),  	mTypingStart(),  	mShouldSendTypingState(false),  	mMeTyping(false), @@ -504,9 +503,12 @@ void LLFloaterIMSession::onVoiceChannelStateChanged(  void LLFloaterIMSession::updateSessionName(const std::string& name)  { -	LLFloaterIMSessionTab::updateSessionName(name); -	setTitle(name);	 -	mTypingStart.setArg("[NAME]", name); +	if (!name.empty()) +	{ +		LLFloaterIMSessionTab::updateSessionName(name); +		mTypingStart.setArg("[NAME]", name); +		setTitle (mOtherTyping ? mTypingStart.getString() : name); +	}  }  //static @@ -1095,14 +1097,10 @@ BOOL LLFloaterIMSession::inviteToSession(const uuid_vec_t& ids)  void LLFloaterIMSession::addTypingIndicator(const LLIMInfo* im_info)  {  	// We may have lost a "stop-typing" packet, don't add it twice -	if ( im_info && !mOtherTyping ) +	if (im_info && !mOtherTyping)  	{  		mOtherTyping = true; -		// Save and set new title -		mSavedTitle = getTitle(); -		setTitle (mTypingStart); -  		// Update speaker  		LLIMSpeakerMgr* speaker_mgr = LLIMModel::getInstance()->getSpeakerManager(mSessionID);  		if ( speaker_mgr ) @@ -1114,18 +1112,15 @@ void LLFloaterIMSession::addTypingIndicator(const LLIMInfo* im_info)  void LLFloaterIMSession::removeTypingIndicator(const LLIMInfo* im_info)  { -	if ( mOtherTyping ) +	if (mOtherTyping)  	{  		mOtherTyping = false; -		// Revert the title to saved one -		setTitle(mSavedTitle); - -		if ( im_info ) +		if (im_info)  		{  			// Update speaker  			LLIMSpeakerMgr* speaker_mgr = LLIMModel::getInstance()->getSpeakerManager(mSessionID); -			if ( speaker_mgr ) +			if (speaker_mgr)  			{  				speaker_mgr->setSpeakerTyping(im_info->mFromID, FALSE);  			} diff --git a/indra/newview/llfloaterimsession.h b/indra/newview/llfloaterimsession.h index f4ec2d457d..72a320041f 100644 --- a/indra/newview/llfloaterimsession.h +++ b/indra/newview/llfloaterimsession.h @@ -174,7 +174,6 @@ private:  	LLUUID mOtherParticipantUUID;  	bool mPositioned; -	std::string mSavedTitle;  	LLUIString mTypingStart;  	bool mMeTyping;  	bool mOtherTyping; diff --git a/indra/newview/llfloaterimsessiontab.cpp b/indra/newview/llfloaterimsessiontab.cpp index efc7be6dd6..2d4a714538 100644 --- a/indra/newview/llfloaterimsessiontab.cpp +++ b/indra/newview/llfloaterimsessiontab.cpp @@ -43,7 +43,7 @@  #include "lltoolbarview.h"  #include "llfloaterimnearbychat.h" -const F32 REFRESH_INTERVAL = 0.2f; +const F32 REFRESH_INTERVAL = 1.0f;  LLFloaterIMSessionTab::LLFloaterIMSessionTab(const LLSD& session_id)    : LLTransientDockableFloater(NULL, true, session_id) diff --git a/indra/newview/llparticipantlist.cpp b/indra/newview/llparticipantlist.cpp index 9f89b5f809..6c838f8a45 100644 --- a/indra/newview/llparticipantlist.cpp +++ b/indra/newview/llparticipantlist.cpp @@ -366,8 +366,11 @@ bool LLParticipantList::onSpeakerMuteEvent(LLPointer<LLOldEvents::LLEvent> event  void LLParticipantList::addAvatarIDExceptAgent(const LLUUID& avatar_id)  { -	// Do not add if already in there or excluded for some reason -	if (findParticipant(avatar_id)) return; +	// Do not add if already in there, is the session id (hence not an avatar) or excluded for some reason +	if (findParticipant(avatar_id) || (avatar_id == mUUID)) +	{ +		return; +	}  	bool is_avatar = LLVoiceClient::getInstance()->isParticipantAvatar(avatar_id); @@ -391,7 +394,7 @@ void LLParticipantList::addAvatarIDExceptAgent(const LLUUID& avatar_id)  	// *TODO : Need to update the online/offline status of the participant  	// Hack for this: LLAvatarTracker::instance().isBuddyOnline(avatar_id)) - +	  	// Add the participant model to the session's children list  	addParticipant(participant); @@ -413,12 +416,12 @@ void LLParticipantList::adjustParticipant(const LLUUID& speaker_id)  bool LLParticipantList::SpeakerAddListener::handleEvent(LLPointer<LLOldEvents::LLEvent> event, const LLSD& userdata)  {  	/** -	 * We need to filter speaking objects. These objects shouldn't appear in the list +	 * We need to filter speaking objects. These objects shouldn't appear in the list.  	 * @see LLFloaterChat::addChat() in llviewermessage.cpp to get detailed call hierarchy  	 */  	const LLUUID& speaker_id = event->getValue().asUUID();  	LLPointer<LLSpeaker> speaker = mParent.mSpeakerMgr->findSpeaker(speaker_id); -	if(speaker.isNull() || speaker->mType == LLSpeaker::SPEAKER_OBJECT) +	if (speaker.isNull() || (speaker->mType == LLSpeaker::SPEAKER_OBJECT))  	{  		return false;  	} diff --git a/indra/newview/llsyswellwindow.cpp b/indra/newview/llsyswellwindow.cpp index 7c000f2dd0..3605129d48 100644 --- a/indra/newview/llsyswellwindow.cpp +++ b/indra/newview/llsyswellwindow.cpp @@ -98,8 +98,10 @@ void LLSysWellWindow::onStartUpToastClick(S32 x, S32 y, MASK mask)  void LLSysWellWindow::setSysWellChiclet(LLSysWellChiclet* chiclet)   {   	mSysWellChiclet = chiclet; -	if(mSysWellChiclet) -		mSysWellChiclet->updateWidget(isWindowEmpty());  +	if(NULL != mSysWellChiclet) +	{ +		mSysWellChiclet->updateWidget(isWindowEmpty()); +	}  }  //---------------------------------------------------------------------------------  LLSysWellWindow::~LLSysWellWindow() @@ -111,7 +113,10 @@ void LLSysWellWindow::removeItemByID(const LLUUID& id)  {  	if(mMessageList->removeItemByValue(id))  	{ -		mSysWellChiclet->updateWidget(isWindowEmpty()); +		if (NULL != mSysWellChiclet) +		{ +			mSysWellChiclet->updateWidget(isWindowEmpty()); +		}  		reshapeWindow();  	}  	else @@ -685,11 +690,7 @@ void LLIMWellWindow::addIMRow(const LLUUID& sessionId, S32 chicletCounter,  							   const std::string& name, const LLUUID& otherParticipantId)  {  	RowPanel* item = new RowPanel(this, sessionId, chicletCounter, name, otherParticipantId); -	if (mMessageList->addItem(item, sessionId)) -	{ -		mSysWellChiclet->updateWidget(isWindowEmpty()); -	} -	else +	if (!mMessageList->addItem(item, sessionId))  	{  		llwarns << "Unable to add IM Row into the list, sessionID: " << sessionId  			<< ", name: " << name @@ -710,11 +711,7 @@ void LLIMWellWindow::delIMRow(const LLUUID& sessionId)  	//But I didn't find why this happen..  	gFocusMgr.clearLastFocusForGroup(this); -	if (mMessageList->removeItemByValue(sessionId)) -	{ -		mSysWellChiclet->updateWidget(isWindowEmpty()); -	} -	else +	if (!mMessageList->removeItemByValue(sessionId))  	{  		llwarns << "Unable to remove IM Row from the list, sessionID: " << sessionId  			<< llendl; @@ -740,11 +737,7 @@ void LLIMWellWindow::addObjectRow(const LLUUID& notification_id, bool new_messag  	if (mMessageList->getItemByValue(notification_id) == NULL)  	{  		ObjectRowPanel* item = new ObjectRowPanel(notification_id, new_message); -		if (mMessageList->addItem(item, notification_id)) -		{ -			mSysWellChiclet->updateWidget(isWindowEmpty()); -		} -		else +		if (!mMessageList->addItem(item, notification_id))  		{  			llwarns << "Unable to add Object Row into the list, notificationID: " << notification_id << llendl;  			item->die(); @@ -755,14 +748,7 @@ void LLIMWellWindow::addObjectRow(const LLUUID& notification_id, bool new_messag  void LLIMWellWindow::removeObjectRow(const LLUUID& notification_id)  { -	if (mMessageList->removeItemByValue(notification_id)) -	{ -		if (mSysWellChiclet) -		{ -			mSysWellChiclet->updateWidget(isWindowEmpty()); -		} -	} -	else +	if (!mMessageList->removeItemByValue(notification_id))  	{  		llwarns << "Unable to remove Object Row from the list, notificationID: " << notification_id << llendl;  	} diff --git a/indra/newview/skins/default/textures/bottomtray/Unread_IM.png b/indra/newview/skins/default/textures/bottomtray/Unread_IM.png Binary files differdeleted file mode 100644 index 5c0c85b864..0000000000 --- a/indra/newview/skins/default/textures/bottomtray/Unread_IM.png +++ /dev/null diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml index a124041565..8d9fa52309 100644 --- a/indra/newview/skins/default/textures/textures.xml +++ b/indra/newview/skins/default/textures/textures.xml @@ -642,7 +642,6 @@ with the same filename but different name    <texture name="TrashItem_Press" file_name="icons/TrashItem_Press.png" preload="false" />    <texture name="Unread_Chiclet" file_name="bottomtray/Unread_Chiclet.png" preload="false" /> -  <texture name="Unread_IM" file_name="bottomtray/Unread_IM.png" preload="false" />    <texture name="UpArrow_Off" file_name="icons/UpArrow_Off.png" preload="false" /> diff --git a/indra/newview/skins/default/xui/en/menu_im_well_button.xml b/indra/newview/skins/default/xui/en/menu_im_well_button.xml deleted file mode 100644 index f8dfba91ff..0000000000 --- a/indra/newview/skins/default/xui/en/menu_im_well_button.xml +++ /dev/null @@ -1,16 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<context_menu - layout="topleft" - name="IM Well Button Context Menu"> -    <menu_item_call -     label="Close All" -     layout="topleft" -     name="Close All"> -        <menu_item_call.on_click -         function="IMWellChicletMenu.Action" -         parameter="close all" /> -        <menu_item_call.on_enable -         function="IMWellChicletMenu.EnableItem" -         parameter="can close all" /> -    </menu_item_call> -</context_menu> diff --git a/indra/newview/skins/default/xui/en/panel_chiclet_bar.xml b/indra/newview/skins/default/xui/en/panel_chiclet_bar.xml index ff0146490b..fc321fdd23 100644 --- a/indra/newview/skins/default/xui/en/panel_chiclet_bar.xml +++ b/indra/newview/skins/default/xui/en/panel_chiclet_bar.xml @@ -87,54 +87,6 @@           layout="topleft"           min_height="28"           min_width="37" -         name="im_well_panel" -         top="0" -         width="37"> -      <chiclet_im_well -             follows="right" -             height="28" -             layout="topleft" -             left="0" -             max_displayed_count="99" -             name="im_well" -             top="0" -             width="35"> -        <!-- -Emulate 4 states of button by background images, see details in EXT-3147. The same should be for notification_well button -xml attribute           Description -image_unselected        "Unlit" - there are no new messages -image_selected          "Unlit" + "Selected" - there are no new messages and the Well is open -image_pressed           "Lit" - there are new messages -image_pressed_selected  "Lit" + "Selected" - there are new messages and the Well is open -             --> -        <button -                 auto_resize="false" -                 follows="right" -                 halign="center" -                 height="23" -                 image_overlay="Unread_IM" -                 image_overlay_alignment="center" -                 image_pressed="WellButton_Lit" -                 image_pressed_selected="WellButton_Lit_Selected" -                 image_selected="PushButton_Press" -                 label_color="Black" -                 left="0" -                 name="Unread IM messages" -                 tool_tip="Conversations" -                 width="34"> -          <init_callback -                     function="Button.SetDockableFloaterToggle" -                     parameter="im_well_window" /> -        </button> -      </chiclet_im_well> -    </layout_panel> -    <layout_panel -         auto_resize="false" -         follows="right" -         height="28" -         layout="topleft" -         min_height="28" -         min_width="37"           name="notification_well_panel"           top="0"           width="37">  | 
