diff options
| author | Gilbert Gonzales <gilbert@lindenlab.com> | 2013-01-04 19:01:10 -0800 | 
|---|---|---|
| committer | Gilbert Gonzales <gilbert@lindenlab.com> | 2013-01-04 19:01:10 -0800 | 
| commit | 6153d09e52c5b41f69533cfe94af94d0f086c6ea (patch) | |
| tree | de1695972eeea25718d38296577769ce49e09f23 /indra/newview | |
| parent | 02ca16c1334d1409d8b14136f76305686796c359 (diff) | |
| parent | 39ff545bab2c1e05b7b9fe14ee99828795f1f78f (diff) | |
merging in latest changes
Diffstat (limited to 'indra/newview')
| -rwxr-xr-x | indra/newview/llconversationview.cpp | 21 | ||||
| -rwxr-xr-x | indra/newview/llconversationview.h | 2 | ||||
| -rw-r--r-- | indra/newview/llfloaterimcontainer.cpp | 52 | ||||
| -rw-r--r-- | indra/newview/llfloaterimcontainer.h | 4 | ||||
| -rw-r--r-- | indra/newview/llfloaterimsessiontab.cpp | 33 | ||||
| -rw-r--r-- | indra/newview/llimview.cpp | 16 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/floater_conversation_log.xml | 2 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/floater_im_session.xml | 9 | 
8 files changed, 78 insertions, 61 deletions
diff --git a/indra/newview/llconversationview.cpp b/indra/newview/llconversationview.cpp index e51efd48f5..903dd2a407 100755 --- a/indra/newview/llconversationview.cpp +++ b/indra/newview/llconversationview.cpp @@ -547,27 +547,6 @@ void LLConversationViewParticipant::onMouseLeave(S32 x, S32 y, MASK mask)      LLFolderViewItem::onMouseLeave(x, y, mask);  } -BOOL LLConversationViewParticipant::handleMouseDown( S32 x, S32 y, MASK mask ) -{ -	LLConversationItem* item = NULL; -	LLConversationViewSession* session_widget = -			dynamic_cast<LLConversationViewSession *>(this->getParentFolder()); -	if (session_widget) -	{ -	    item = dynamic_cast<LLConversationItem*>(session_widget->getViewModelItem()); -	} -    LLUUID session_id = item? item->getUUID() : LLUUID(); -    BOOL result = LLFolderViewItem::handleMouseDown(x, y, mask); - -    if(result) -    { -        (LLFloaterReg::getTypedInstance<LLFloaterIMContainer>("im_container"))-> -            selectConversationPair(session_id, false); -    } - -	return result; -} -  S32 LLConversationViewParticipant::getLabelXPos()  {      return getIndentation() + mAvatarIcon->getRect().getWidth() + mIconPad; diff --git a/indra/newview/llconversationview.h b/indra/newview/llconversationview.h index 74443e1d88..5f6acfb9ab 100755 --- a/indra/newview/llconversationview.h +++ b/indra/newview/llconversationview.h @@ -132,8 +132,6 @@ public:      void addToFolder(LLFolderViewFolder* folder);  	void addToSession(const LLUUID& session_id); -    /*virtual*/ BOOL handleMouseDown( S32 x, S32 y, MASK mask ); -      void onMouseEnter(S32 x, S32 y, MASK mask);      void onMouseLeave(S32 x, S32 y, MASK mask); diff --git a/indra/newview/llfloaterimcontainer.cpp b/indra/newview/llfloaterimcontainer.cpp index 2019a35faa..f134dc2017 100644 --- a/indra/newview/llfloaterimcontainer.cpp +++ b/indra/newview/llfloaterimcontainer.cpp @@ -605,6 +605,12 @@ void LLFloaterIMContainer::setVisible(BOOL visible)  	LLMultiFloater::setVisible(visible);  } +void LLFloaterIMContainer::updateResizeLimits() +{ +	LLMultiFloater::updateResizeLimits(); +	assignResizeLimits(); +} +  void LLFloaterIMContainer::collapseMessagesPane(bool collapse)  {  	if (mMessagesPane->isCollapsed() == collapse) @@ -678,6 +684,7 @@ void LLFloaterIMContainer::collapseConversationsPane(bool collapse)  		    {  		    	widget->setOpen(false);  		    } +		    widget->requestArrange();  }  	}  } @@ -1101,12 +1108,25 @@ bool LLFloaterIMContainer::enableContextMenuItem(const LLSD& userdata)  	uuid_vec_t uuids;  	getParticipantUUIDs(uuids); +	if ("conversation_log" == item) +	{ +		return gSavedSettings.getBOOL("KeepConversationLogTranscripts"); +	} + +	//Enable Chat history item for ad-hoc and group conversations +	if ("can_chat_history" == item) +	{ +		if (getCurSelectedViewModelItem()->getType() != LLConversationItem::CONV_PARTICIPANT) +		{ +			return isConversationLoggingAllowed(); +		} +	} -	// If nothing is selected, everything needs to be disabled +	// If nothing is selected(and selected item is not group chat), everything needs to be disabled  	if (uuids.size() <= 0) -    { -        return false; -    } +	{ +		return getCurSelectedViewModelItem()->getType() == LLConversationItem::CONV_SESSION_GROUP; +	}  	if("can_activate_group" == item)      { @@ -1119,11 +1139,6 @@ bool LLFloaterIMContainer::enableContextMenuItem(const LLSD& userdata)  bool LLFloaterIMContainer::enableContextMenuItem(const std::string& item, uuid_vec_t& uuids)  { -	if ("conversation_log" == item) -	{ -		return gSavedSettings.getBOOL("KeepConversationLogTranscripts"); -	} -	  	// Extract the single select info  	bool is_single_select = (uuids.size() == 1);  	const LLUUID& single_id = uuids.front(); @@ -1422,11 +1437,10 @@ bool LLFloaterIMContainer::removeConversationListItem(const LLUUID& uuid, bool c  	{  		is_widget_selected = widget->isSelected();  		new_selection = mConversationsRoot->getNextFromChild(widget); -		if(new_selection == NULL) +		if (!new_selection)  		{  			new_selection = mConversationsRoot->getPreviousFromChild(widget);  		} -  		widget->destroyView();  	} @@ -1438,14 +1452,20 @@ bool LLFloaterIMContainer::removeConversationListItem(const LLUUID& uuid, bool c  	if (change_focus)  	{  		setFocus(TRUE); -		if(new_selection != NULL) +		if (new_selection)  		{  			if (mConversationsWidgets.size() == 1) -				new_selection = new_selection->getParentFolder(); -			LLConversationItem* vmi = dynamic_cast<LLConversationItem*>(new_selection->getViewModelItem()); -			if(vmi != NULL)  			{ -				selectConversationPair(vmi->getUUID(), true); +				// If only one widget is left, it has to be the Nearby Chat. Select it directly. +				selectConversationPair(LLUUID(NULL), true); +			} +			else +			{ +				LLConversationItem* vmi = dynamic_cast<LLConversationItem*>(new_selection->getViewModelItem()); +				if (vmi) +				{ +					selectConversationPair(vmi->getUUID(), true); +				}  			}  		}  	} diff --git a/indra/newview/llfloaterimcontainer.h b/indra/newview/llfloaterimcontainer.h index 09a24c0105..0cd1b6759b 100644 --- a/indra/newview/llfloaterimcontainer.h +++ b/indra/newview/llfloaterimcontainer.h @@ -60,6 +60,7 @@ public:  	/*virtual*/ void onOpen(const LLSD& key);  	/*virtual*/ void draw();  	/*virtual*/ void setVisible(BOOL visible); +	/*virtual*/ void updateResizeLimits();  	void onCloseFloater(LLUUID& id);  	/*virtual*/ void addFloater(LLFloater* floaterp,  @@ -106,6 +107,8 @@ public:      bool enableContextMenuItem(const std::string& item, uuid_vec_t& selectedIDS);      void doToParticipants(const std::string& item, uuid_vec_t& selectedIDS); +	void assignResizeLimits(); +  private:  	typedef std::map<LLUUID,LLFloater*> avatarID_panel_map_t;  	avatarID_panel_map_t mSessions; @@ -154,7 +157,6 @@ private:  	void toggleAllowTextChat(const LLUUID& participant_uuid);  	void toggleMute(const LLUUID& participant_id, U32 flags);  	void openNearbyChat(); -	void assignResizeLimits();  	LLButton* mExpandCollapseBtn;  	LLButton* mStubCollapseBtn; diff --git a/indra/newview/llfloaterimsessiontab.cpp b/indra/newview/llfloaterimsessiontab.cpp index f5b657fa60..d4eb03f95d 100644 --- a/indra/newview/llfloaterimsessiontab.cpp +++ b/indra/newview/llfloaterimsessiontab.cpp @@ -82,6 +82,13 @@ LLFloaterIMSessionTab::LLFloaterIMSessionTab(const LLSD& session_id)  LLFloaterIMSessionTab::~LLFloaterIMSessionTab()  {  	delete mRefreshTimer; + +	// Select Nearby Chat session +	LLFloaterIMContainer* container = LLFloaterReg::findTypedInstance<LLFloaterIMContainer>("im_container"); +	if (container) +	{ +		container->selectConversationPair(LLUUID(NULL), true); +	}  }  //static @@ -322,7 +329,7 @@ void LLFloaterIMSessionTab::onFocusReceived()  	LLTransientDockableFloater::onFocusReceived(); -	LLFloaterIMContainer* container = LLFloaterReg::getTypedInstance<LLFloaterIMContainer>("im_container"); +	LLFloaterIMContainer* container = LLFloaterReg::findTypedInstance<LLFloaterIMContainer>("im_container");  	if (container)  	{  		container->selectConversationPair(mSessionID, true); @@ -606,8 +613,8 @@ void LLFloaterIMSessionTab::updateHeaderAndToolbar()  	// prevent start conversation before its container      LLFloaterIMContainer::getInstance(); -	bool is_torn_off = checkIfTornOff(); -	if (!is_torn_off) +	bool is_not_torn_off = !checkIfTornOff(); +	if (is_not_torn_off)  	{  		hideAllStandardButtons();  	} @@ -616,7 +623,7 @@ void LLFloaterIMSessionTab::updateHeaderAndToolbar()  	// Participant list should be visible only in torn off floaters.  	bool is_participant_list_visible = -			is_torn_off +			!is_not_torn_off  			&& gSavedSettings.getBOOL("IMShowControlPanel")  			&& !mIsP2PChat; @@ -624,22 +631,28 @@ void LLFloaterIMSessionTab::updateHeaderAndToolbar()  	// Display collapse image (<<) if the floater is hosted  	// or if it is torn off but has an open control panel. -	bool is_expanded = !is_torn_off || is_participant_list_visible; +	bool is_expanded = is_not_torn_off || is_participant_list_visible;  	mExpandCollapseBtn->setImageOverlay(getString(is_expanded ? "collapse_icon" : "expand_icon")); +	mExpandCollapseBtn->setToolTip( +			is_not_torn_off? +				getString("expcol_button_not_tearoff_tooltip") : +				(is_expanded? +					getString("expcol_button_tearoff_and_expanded_tooltip") : +					getString("expcol_button_tearoff_and_collapsed_tooltip")));  	// toggle floater's drag handle and title visibility  	if (mDragHandle)  	{ -		mDragHandle->setTitleVisible(is_torn_off); +		mDragHandle->setTitleVisible(!is_not_torn_off);  	}  	// The button (>>) should be disabled for torn off P2P conversations. -	mExpandCollapseBtn->setEnabled(!is_torn_off || !mIsP2PChat); +	mExpandCollapseBtn->setEnabled(is_not_torn_off || !mIsP2PChat); -	mTearOffBtn->setImageOverlay(getString(is_torn_off? "return_icon" : "tear_off_icon")); -	mTearOffBtn->setToolTip(getString(!is_torn_off? "tooltip_to_separate_window" : "tooltip_to_main_window")); +	mTearOffBtn->setImageOverlay(getString(is_not_torn_off? "tear_off_icon" : "return_icon")); +	mTearOffBtn->setToolTip(getString(is_not_torn_off? "tooltip_to_separate_window" : "tooltip_to_main_window")); -	mCloseBtn->setVisible(!is_torn_off && !mIsNearbyChat); +	mCloseBtn->setVisible(is_not_torn_off && !mIsNearbyChat);  	enableDisableCallBtn(); diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp index 716e6fe7ba..adc34cc9a4 100644 --- a/indra/newview/llimview.cpp +++ b/indra/newview/llimview.cpp @@ -159,7 +159,7 @@ void on_new_message(const LLSD& msg)      LLUUID session_id = msg["session_id"].asUUID();      LLIMModel::LLIMSession* session = LLIMModel::instance().findIMSession(session_id); -    // determine action for this session +    //  determine action for this session      if (session_id.isNull())      { @@ -185,13 +185,14 @@ void on_new_message(const LLSD& msg)          action = gSavedSettings.getString("NotificationGroupChatOptions");      } -    // do not show notification in "do not disturb" mode or it goes from agent +    // do not show notification which goes from agent      if (gAgent.getID() == participant_id)      {          return;      }      // execution of the action +      LLFloaterIMContainer* im_box = LLFloaterReg::getTypedInstance<LLFloaterIMContainer>("im_container");      LLFloaterIMSessionTab* session_floater = LLFloaterIMSessionTab::getConversation(session_id); @@ -210,7 +211,7 @@ void on_new_message(const LLSD& msg)      if ("toast" == action)      { -        // Skip toasting if we have open window of IM with this session id +        // Skip toasting and flashing if we have open window of IM with this session id          if (session_floater              && session_floater->isInVisibleChain()              && session_floater->hasFocus() @@ -221,12 +222,6 @@ void on_new_message(const LLSD& msg)              return;          } -	    // Skip toasting for system messages and for nearby chat -	    if (participant_id.isNull()) -        { -            return; -        } -          //User is not focused on conversation containing the message          if(session_floater_not_focused)          { @@ -238,7 +233,8 @@ void on_new_message(const LLSD& msg)                  gToolBarView->flashCommand(LLCommandId("chat"), true);                  //Show IM toasts (upper right toasts) -                if(session_id.notNull()) +                // Skip toasting for system messages and for nearby chat +                if(session_id.notNull() && participant_id.notNull())                  {                      LLAvatarNameCache::get(participant_id, boost::bind(&on_avatar_name_cache_toast, _1, _2, msg));                  } diff --git a/indra/newview/skins/default/xui/en/floater_conversation_log.xml b/indra/newview/skins/default/xui/en/floater_conversation_log.xml index cf61348a66..256e03c4d7 100644 --- a/indra/newview/skins/default/xui/en/floater_conversation_log.xml +++ b/indra/newview/skins/default/xui/en/floater_conversation_log.xml @@ -5,7 +5,7 @@   positioning="cascading"   height="200"   min_height="100" - min_width="200" + min_width="230"   layout="topleft"   name="floater_conversation_log"   save_rect="true" diff --git a/indra/newview/skins/default/xui/en/floater_im_session.xml b/indra/newview/skins/default/xui/en/floater_im_session.xml index 9e2132dc3b..8f0574177f 100644 --- a/indra/newview/skins/default/xui/en/floater_im_session.xml +++ b/indra/newview/skins/default/xui/en/floater_im_session.xml @@ -49,6 +49,15 @@    <floater.string       name="end_call_button_tooltip"       value="Close voice connection"/> +   <floater.string +     name="expcol_button_not_tearoff_tooltip" +     value="Collapse this pane"/> +   <floater.string +     name="expcol_button_tearoff_and_expanded_tooltip" +     value="Collapse participant list"/> +   <floater.string +     name="expcol_button_tearoff_and_collapsed_tooltip" +     value="Expand participant list"/>      <view          follows="all"          layout="topleft"  | 
