diff options
| -rw-r--r-- | indra/newview/llchiclet.cpp | 18 | ||||
| -rw-r--r-- | indra/newview/llchiclet.h | 6 | 
2 files changed, 23 insertions, 1 deletions
| diff --git a/indra/newview/llchiclet.cpp b/indra/newview/llchiclet.cpp index 2719f10a3d..660018530f 100644 --- a/indra/newview/llchiclet.cpp +++ b/indra/newview/llchiclet.cpp @@ -722,8 +722,11 @@ void LLIMP2PChiclet::updateMenuItems()  	if(getSessionId().isNull())  		return; +	LLIMFloater* open_im_floater = LLIMFloater::findInstance(getSessionId()); +	bool open_window_exists = open_im_floater && open_im_floater->getVisible(); +	mPopupMenu->getChild<LLUICtrl>("Send IM")->setEnabled(!open_window_exists); +	  	bool is_friend = LLAvatarActions::isFriend(getOtherParticipantId()); -  	mPopupMenu->getChild<LLUICtrl>("Add Friend")->setEnabled(!is_friend);  } @@ -1067,6 +1070,18 @@ void LLIMGroupChiclet::changed(LLGroupChange gc)  	}  } +void LLIMGroupChiclet::updateMenuItems() +{ +	if(!mPopupMenu) +		return; +	if(getSessionId().isNull()) +		return; + +	LLIMFloater* open_im_floater = LLIMFloater::findInstance(getSessionId()); +	bool open_window_exists = open_im_floater && open_im_floater->getVisible(); +	mPopupMenu->getChild<LLUICtrl>("Chat")->setEnabled(!open_window_exists); +} +  BOOL LLIMGroupChiclet::handleRightMouseDown(S32 x, S32 y, MASK mask)  {  	if(!mPopupMenu) @@ -1076,6 +1091,7 @@ BOOL LLIMGroupChiclet::handleRightMouseDown(S32 x, S32 y, MASK mask)  	if (mPopupMenu)  	{ +		updateMenuItems();  		mPopupMenu->arrangeAndClear();  		LLMenuGL::showPopup(this, mPopupMenu, x, y);  	} diff --git a/indra/newview/llchiclet.h b/indra/newview/llchiclet.h index 511b85b0b6..8c797ef98f 100644 --- a/indra/newview/llchiclet.h +++ b/indra/newview/llchiclet.h @@ -521,6 +521,7 @@ protected:  	/**   	 * Enables/disables menus based on relationship with other participant. +	 * Enables/disables "show session" menu item depending on visible IM floater existence.  	 */  	virtual void updateMenuItems(); @@ -752,6 +753,11 @@ protected:  	virtual void onMenuItemClicked(const LLSD& user_data);  	/** +	 * Enables/disables "show session" menu item depending on visible IM floater existence. +	 */ +	virtual void updateMenuItems(); + +	/**  	 * Displays popup menu.  	 */  	/*virtual*/ BOOL handleRightMouseDown(S32 x, S32 y, MASK mask); | 
