diff options
| -rw-r--r-- | indra/llui/lltabcontainer.cpp | 3 | ||||
| -rw-r--r-- | indra/newview/llfloaterimcontainer.cpp | 14 | ||||
| -rw-r--r-- | indra/newview/llfloaterimnearbychat.cpp | 1 | ||||
| -rw-r--r-- | indra/newview/llfloaterimsession.cpp | 1 | ||||
| -rw-r--r-- | indra/newview/llfloaterimsessiontab.cpp | 2 | ||||
| -rw-r--r-- | indra/newview/llimview.cpp | 20 | 
6 files changed, 22 insertions, 19 deletions
| diff --git a/indra/llui/lltabcontainer.cpp b/indra/llui/lltabcontainer.cpp index 3c1dfc1184..0dd63c2632 100644 --- a/indra/llui/lltabcontainer.cpp +++ b/indra/llui/lltabcontainer.cpp @@ -1559,7 +1559,8 @@ BOOL LLTabContainer::setTab(S32 which)  void LLTabContainer::hideAllTabs()  { -	setCurrentPanelIndex(-1); + +	setCurrentPanelIndex(0);  	for(tuple_list_t::iterator iter = mTabList.begin(); iter != mTabList.end(); ++iter)  	{  		(* iter)->mTabPanel->setVisible(FALSE); diff --git a/indra/newview/llfloaterimcontainer.cpp b/indra/newview/llfloaterimcontainer.cpp index c1daea0aeb..d50581a314 100644 --- a/indra/newview/llfloaterimcontainer.cpp +++ b/indra/newview/llfloaterimcontainer.cpp @@ -546,8 +546,10 @@ void LLFloaterIMContainer::setVisible(BOOL visible)  			// *TODO: find a way to move this to XML as a default panel or something like that  			LLSD name("nearby_chat");  			LLFloaterReg::toggleInstanceOrBringToFront(name); +            setSelectedSession(LLUUID(NULL));  		}  		openNearbyChat(); +        selectConversationPair(getSelectedSession(), false);  	}  	nearby_chat = LLFloaterReg::findTypedInstance<LLFloaterIMNearbyChat>("nearby_chat"); @@ -571,7 +573,6 @@ void LLFloaterIMContainer::setVisible(BOOL visible)  	// Now, do the normal multifloater show/hide  	LLMultiFloater::setVisible(visible); -	  }  void LLFloaterIMContainer::collapseMessagesPane(bool collapse) @@ -1624,22 +1625,13 @@ void LLFloaterIMContainer::flashConversationItemWidget(const LLUUID& session_id,  {      //Finds the conversation line item to flash using the session_id  	LLConversationViewSession * widget = dynamic_cast<LLConversationViewSession *>(get_ptr_in_map(mConversationsWidgets,session_id)); -    LLFloaterIMSessionTab* session_floater = LLFloaterIMSessionTab::getConversation(session_id);  	if (widget)  	{          //Start flash  		if (is_flashes)  		{ -            //Only flash when conversation is not active -            if(session_floater -                && (!session_floater->isInVisibleChain()) //conversation floater not displayed -                    ||  -                    (session_floater->isInVisibleChain() && session_floater->hasFocus() == false)) //conversation floater is displayed but doesn't have focus -                 -            { -			widget->getFlashTimer()->startFlashing(); -		} +	        widget->getFlashTimer()->startFlashing();  		}          //Stop flash  		else diff --git a/indra/newview/llfloaterimnearbychat.cpp b/indra/newview/llfloaterimnearbychat.cpp index a20fce876c..80a41e2f37 100644 --- a/indra/newview/llfloaterimnearbychat.cpp +++ b/indra/newview/llfloaterimnearbychat.cpp @@ -228,7 +228,6 @@ void LLFloaterIMNearbyChat::setVisible(BOOL visible)  	{  		removeScreenChat();  	} -    setFocus(visible);  }  // virtual diff --git a/indra/newview/llfloaterimsession.cpp b/indra/newview/llfloaterimsession.cpp index 9829ae713c..3001029968 100644 --- a/indra/newview/llfloaterimsession.cpp +++ b/indra/newview/llfloaterimsession.cpp @@ -633,7 +633,6 @@ void LLFloaterIMSession::setVisible(BOOL visible)  	} -    setFocus(visible);  }  BOOL LLFloaterIMSession::getVisible() diff --git a/indra/newview/llfloaterimsessiontab.cpp b/indra/newview/llfloaterimsessiontab.cpp index d04fa2674d..da25f95ffe 100644 --- a/indra/newview/llfloaterimsessiontab.cpp +++ b/indra/newview/llfloaterimsessiontab.cpp @@ -60,6 +60,7 @@ LLFloaterIMSessionTab::LLFloaterIMSessionTab(const LLSD& session_id)    , mRefreshTimer(new LLTimer())    , mIsHostAttached(false)  { +    setAutoFocus(FALSE);  	mSession = LLIMModel::getInstance()->findIMSession(mSessionID);  	mCommitCallbackRegistrar.add("IMSession.Menu.Action", @@ -124,7 +125,6 @@ void LLFloaterIMSessionTab::setVisible(BOOL visible)  	{  			LLFloaterIMSessionTab::addToHost(mSessionID);  	} -    setFocus(visible);  }  /*virtual*/ diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp index b6fd3ec9c8..821e62c4e6 100644 --- a/indra/newview/llimview.cpp +++ b/indra/newview/llimview.cpp @@ -192,12 +192,24 @@ void on_new_message(const LLSD& msg)      else if("openconversations" == action)      {          LLFloaterIMContainer* im_box = LLFloaterReg::getTypedInstance<LLFloaterIMContainer>("im_container"); -        if (im_box) +        LLFloaterIMSessionTab* session_floater = LLFloaterIMSessionTab::getConversation(session_id); + +        //Don't flash and show conversation floater when conversation already active (has focus) +        if(session_floater +            && (!session_floater->isInVisibleChain()) //conversation floater not displayed +                ||  +                (session_floater->isInVisibleChain() && session_floater->hasFocus() == false)) //conversation floater is displayed but doesn't have focus +          { -            im_box->flashConversationItemWidget(session_id, true); // flashing of the conversation's item +            //Flash line item +            if (im_box) +            { +                im_box->flashConversationItemWidget(session_id, true); // flashing of the conversation's item +            } + +            //Surface conversations floater +            LLFloaterReg::showInstance("im_container");          } - -        LLFloaterReg::showInstance("im_container");      }  } | 
