diff options
| -rwxr-xr-x | indra/newview/llfloaterimcontainer.cpp | 20 | ||||
| -rwxr-xr-x | indra/newview/llviewerparcelmgr.cpp | 12 | ||||
| -rwxr-xr-x | indra/newview/llviewerparcelmgr.h | 1 | ||||
| -rwxr-xr-x | indra/newview/skins/default/xui/en/menu_conversation.xml | 1 | 
4 files changed, 33 insertions, 1 deletions
| diff --git a/indra/newview/llfloaterimcontainer.cpp b/indra/newview/llfloaterimcontainer.cpp index bb4b9d2d40..5e59460b30 100755 --- a/indra/newview/llfloaterimcontainer.cpp +++ b/indra/newview/llfloaterimcontainer.cpp @@ -1271,6 +1271,22 @@ bool LLFloaterIMContainer::enableContextMenuItem(const LLSD& userdata)  	uuid_vec_t uuids;  	getParticipantUUIDs(uuids); + +	//If there is group or ad-hoc chat in multiselection, everything needs to be disabled +	if(uuids.size() > 1) +	{ +		const std::set<LLFolderViewItem*> selectedItems = mConversationsRoot->getSelectionList(); +		LLConversationItem * conversationItem; +		for(std::set<LLFolderViewItem*>::const_iterator it = selectedItems.begin(); it != selectedItems.end(); ++it) +		{ +			conversationItem = static_cast<LLConversationItem *>((*it)->getViewModelItem()); +			if((conversationItem->getType() == LLConversationItem::CONV_SESSION_GROUP) || (conversationItem->getType() == LLConversationItem::CONV_SESSION_AD_HOC)) +			{ +				return false; +			} +		} +	} +  	if ("conversation_log" == item)  	{  		return gSavedPerAccountSettings.getS32("KeepConversationLogTranscripts") > 0; @@ -1376,6 +1392,10 @@ bool LLFloaterIMContainer::enableContextMenuItem(const std::string& item, uuid_v      {          return LLAvatarActions::canCall();      } +    else if ("can_open_voice_conversation" == item) +    { +    	return is_single_select && LLAvatarActions::canCall(); +    }  	else if ("can_zoom_in" == item)  	{  		return is_single_select && gObjectList.findObject(single_id); diff --git a/indra/newview/llviewerparcelmgr.cpp b/indra/newview/llviewerparcelmgr.cpp index e361fad9de..04f02872f3 100755 --- a/indra/newview/llviewerparcelmgr.cpp +++ b/indra/newview/llviewerparcelmgr.cpp @@ -118,6 +118,7 @@ LLViewerParcelMgr::LLViewerParcelMgr()  	mHoverRequestResult(0),  	mHoverWestSouth(),  	mHoverEastNorth(), +	mTeleportInProgressPosition(),  	mRenderCollision(FALSE),  	mRenderSelection(TRUE),  	mCollisionBanned(0), @@ -1586,7 +1587,15 @@ void LLViewerParcelMgr::processParcelProperties(LLMessageSystem *msg, void **use  			if (instance->mTeleportInProgress)  			{  				instance->mTeleportInProgress = FALSE; -				instance->mTeleportFinishedSignal(gAgent.getPositionGlobal(), false); +				if(instance->mTeleportInProgressPosition.isNull()) +				{ +					//initial update +					instance->mTeleportFinishedSignal(gAgent.getPositionGlobal(), false); +				} +				else +				{ +					instance->mTeleportFinishedSignal(instance->mTeleportInProgressPosition, false); +				}  			}  		}  	} @@ -2495,6 +2504,7 @@ void LLViewerParcelMgr::onTeleportFinished(bool local, const LLVector3d& new_pos  		// Non-local teleport (inter-region or between different parcels of the same region).  		// The agent parcel data has not been updated yet.  		// Let's wait for the update and then emit the signal. +		mTeleportInProgressPosition = new_pos;  		mTeleportInProgress = TRUE;  	}  } diff --git a/indra/newview/llviewerparcelmgr.h b/indra/newview/llviewerparcelmgr.h index 9da49bb3f3..ee8d4778d9 100755 --- a/indra/newview/llviewerparcelmgr.h +++ b/indra/newview/llviewerparcelmgr.h @@ -336,6 +336,7 @@ private:  	LLDynamicArray<LLParcelObserver*> mObservers;  	BOOL						mTeleportInProgress; +	LLVector3d					mTeleportInProgressPosition;  	teleport_finished_signal_t	mTeleportFinishedSignal;  	teleport_failed_signal_t	mTeleportFailedSignal; diff --git a/indra/newview/skins/default/xui/en/menu_conversation.xml b/indra/newview/skins/default/xui/en/menu_conversation.xml index 31b1d091ee..f5a493c064 100755 --- a/indra/newview/skins/default/xui/en/menu_conversation.xml +++ b/indra/newview/skins/default/xui/en/menu_conversation.xml @@ -17,6 +17,7 @@       layout="topleft"       name="open_voice_conversation">          <on_click function="Avatar.DoToSelected" parameter="open_voice_conversation"/> +        <on_enable function="Avatar.EnableItem" parameter="can_open_voice_conversation"/>       </menu_item_call>	       <menu_item_call       label="Disconnect from voice" | 
