diff options
| author | Merov Linden <merov@lindenlab.com> | 2013-02-04 14:43:20 -0800 | 
|---|---|---|
| committer | Merov Linden <merov@lindenlab.com> | 2013-02-04 14:43:20 -0800 | 
| commit | e5c593682af3a4958316d7747d39f41e2a65e88c (patch) | |
| tree | 2c62627da1b826a4df17e5173cb5b1a8fd5ada5f /indra | |
| parent | 3e73b107d37e293b4e4cde91734e1e8251ba6b72 (diff) | |
| parent | 2f6ffe2183250f3f71a8d502eed9cf9df9ff8b16 (diff) | |
Pull merge from lindenlab/viewer-chui
Diffstat (limited to 'indra')
| -rw-r--r-- | indra/llui/llmenugl.cpp | 8 | ||||
| -rw-r--r-- | indra/newview/llavatarlist.cpp | 52 | ||||
| -rw-r--r-- | indra/newview/llavatarlist.h | 3 | ||||
| -rw-r--r-- | indra/newview/llavatarlistitem.cpp | 55 | ||||
| -rw-r--r-- | indra/newview/llavatarlistitem.h | 3 | ||||
| -rw-r--r-- | indra/newview/llconversationlog.cpp | 7 | ||||
| -rw-r--r-- | indra/newview/llconversationlog.h | 1 | ||||
| -rw-r--r-- | indra/newview/llfloaterimsession.cpp | 17 | ||||
| -rw-r--r-- | indra/newview/llfloaterimsession.h | 15 | ||||
| -rwxr-xr-x | indra/newview/llfloaterpreference.cpp | 16 | ||||
| -rw-r--r-- | indra/newview/llnotificationscripthandler.cpp | 5 | ||||
| -rwxr-xr-x | indra/newview/llviewermessage.cpp | 2 | 
12 files changed, 103 insertions, 81 deletions
| diff --git a/indra/llui/llmenugl.cpp b/indra/llui/llmenugl.cpp index b7148bb91b..f7bf39c897 100644 --- a/indra/llui/llmenugl.cpp +++ b/indra/llui/llmenugl.cpp @@ -593,12 +593,12 @@ BOOL LLMenuItemSeparatorGL::handleMouseDown(S32 x, S32 y, MASK mask)  	{  		// the menu items are in the child list in bottom up order  		LLView* prev_menu_item = parent_menu->findNextSibling(this); -		return prev_menu_item ? prev_menu_item->handleMouseDown(x, prev_menu_item->getRect().getHeight(), mask) : FALSE; +		return (prev_menu_item && prev_menu_item->getVisible() && prev_menu_item->getEnabled()) ? prev_menu_item->handleMouseDown(x, prev_menu_item->getRect().getHeight(), mask) : FALSE;  	}  	else  	{  		LLView* next_menu_item = parent_menu->findPrevSibling(this); -		return next_menu_item ? next_menu_item->handleMouseDown(x, 0, mask) : FALSE; +		return (next_menu_item && next_menu_item->getVisible() && next_menu_item->getEnabled()) ? next_menu_item->handleMouseDown(x, 0, mask) : FALSE;  	}  } @@ -608,12 +608,12 @@ BOOL LLMenuItemSeparatorGL::handleMouseUp(S32 x, S32 y, MASK mask)  	if (y > getRect().getHeight() / 2)  	{  		LLView* prev_menu_item = parent_menu->findNextSibling(this); -		return prev_menu_item ? prev_menu_item->handleMouseUp(x, prev_menu_item->getRect().getHeight(), mask) : FALSE; +		return (prev_menu_item && prev_menu_item->getVisible() && prev_menu_item->getEnabled()) ? prev_menu_item->handleMouseUp(x, prev_menu_item->getRect().getHeight(), mask) : FALSE;  	}  	else  	{  		LLView* next_menu_item = parent_menu->findPrevSibling(this); -		return next_menu_item ? next_menu_item->handleMouseUp(x, 0, mask) : FALSE; +		return (next_menu_item && next_menu_item->getVisible() && next_menu_item->getEnabled()) ? next_menu_item->handleMouseUp(x, 0, mask) : FALSE;  	}  } diff --git a/indra/newview/llavatarlist.cpp b/indra/newview/llavatarlist.cpp index e54e47180f..9f02f301a1 100644 --- a/indra/newview/llavatarlist.cpp +++ b/indra/newview/llavatarlist.cpp @@ -46,6 +46,7 @@  #include "lluuid.h"  #include "llvoiceclient.h"  #include "llviewercontrol.h"	// for gSavedSettings +#include "lltooldraganddrop.h"  static LLDefaultChildRegistry::Register<LLAvatarList> r("avatar_list"); @@ -462,6 +463,57 @@ BOOL LLAvatarList::handleRightMouseDown(S32 x, S32 y, MASK mask)  	return handled;  } +BOOL LLAvatarList::handleMouseDown(S32 x, S32 y, MASK mask) +{ +	gFocusMgr.setMouseCapture(this); + +	S32 screen_x; +	S32 screen_y; +	localPointToScreen(x, y, &screen_x, &screen_y); +	LLToolDragAndDrop::getInstance()->setDragStart(screen_x, screen_y); + +	return LLFlatListViewEx::handleMouseDown(x, y, mask); +} + +BOOL LLAvatarList::handleMouseUp( S32 x, S32 y, MASK mask ) +{ +	if(hasMouseCapture()) +	{ +		gFocusMgr.setMouseCapture(NULL); +	} + +	return LLFlatListViewEx::handleMouseUp(x, y, mask); +} + +BOOL LLAvatarList::handleHover(S32 x, S32 y, MASK mask) +{ +	bool handled = hasMouseCapture(); +	if(handled) +	{ +		S32 screen_x; +		S32 screen_y; +		localPointToScreen(x, y, &screen_x, &screen_y); + +		if(LLToolDragAndDrop::getInstance()->isOverThreshold(screen_x, screen_y)) +		{ +			// First, create the global drag and drop object +			std::vector<EDragAndDropType> types; +			uuid_vec_t cargo_ids; +			getSelectedUUIDs(cargo_ids); +			types.resize(cargo_ids.size(), DAD_PERSON); +			LLToolDragAndDrop::ESource src = LLToolDragAndDrop::SOURCE_PEOPLE; +			LLToolDragAndDrop::getInstance()->beginMultiDrag(types, cargo_ids, src); +		} +	} + +	if(!handled) +	{ +		handled = LLFlatListViewEx::handleHover(x, y, mask); +	} + +	return handled; +} +  bool LLAvatarList::isAvalineItemSelected()  {  	std::vector<LLPanel*> selected_items; diff --git a/indra/newview/llavatarlist.h b/indra/newview/llavatarlist.h index 4814a88a79..3542577ae3 100644 --- a/indra/newview/llavatarlist.h +++ b/indra/newview/llavatarlist.h @@ -84,6 +84,9 @@ public:  	bool getIconsVisible() const { return mShowIcons; }  	const std::string getIconParamName() const{return mIconParamName;}  	virtual BOOL handleRightMouseDown(S32 x, S32 y, MASK mask); +	/*virtual*/ BOOL handleMouseDown( S32 x, S32 y, MASK mask ); +	/*virtual*/ BOOL handleMouseUp(S32 x, S32 y, MASK mask); +	/*virtual*/ BOOL handleHover(S32 x, S32 y, MASK mask);  	// Return true if filter has at least one match.  	bool filterHasMatches(); diff --git a/indra/newview/llavatarlistitem.cpp b/indra/newview/llavatarlistitem.cpp index 3ed0c7c482..3e6c817dd6 100644 --- a/indra/newview/llavatarlistitem.cpp +++ b/indra/newview/llavatarlistitem.cpp @@ -368,61 +368,6 @@ BOOL LLAvatarListItem::handleDoubleClick(S32 x, S32 y, MASK mask)  	return LLPanel::handleDoubleClick(x, y, mask);  } -BOOL LLAvatarListItem::handleMouseDown(S32 x, S32 y, MASK mask) -{ -	if (LLUICtrl::handleMouseDown(x, y, mask)) -	{ -		return TRUE; -	} - -	gFocusMgr.setMouseCapture(this); - -	S32 screen_x; -	S32 screen_y; -	localPointToScreen(x, y, &screen_x, &screen_y); -	LLToolDragAndDrop::getInstance()->setDragStart(screen_x, screen_y); - -	return TRUE; -} - -BOOL LLAvatarListItem::handleMouseUp( S32 x, S32 y, MASK mask ) -{ -	if (LLUICtrl::childrenHandleMouseUp(x, y, mask)) -	{ -		return TRUE; -	} - -	if(hasMouseCapture()) -	{ -		gFocusMgr.setMouseCapture(NULL); -	} -	return TRUE; -} - -BOOL LLAvatarListItem::handleHover(S32 x, S32 y, MASK mask) -{ -	bool handled = hasMouseCapture(); -	if(handled) -	{ -		S32 screen_x; -		S32 screen_y; -		localPointToScreen(x, y, &screen_x, &screen_y); - -		if(LLToolDragAndDrop::getInstance()->isOverThreshold(screen_x, screen_y)) -		{ -			// First, create the global drag and drop object -			std::vector<EDragAndDropType> types; -			uuid_vec_t cargo_ids; -			types.push_back(DAD_PERSON); -			cargo_ids.push_back(mAvatarId); -			LLToolDragAndDrop::ESource src = LLToolDragAndDrop::SOURCE_PEOPLE; -			LLToolDragAndDrop::getInstance()->beginMultiDrag(types, cargo_ids, src); -		} -	} - -	return handled; -} -  void LLAvatarListItem::setValue( const LLSD& value )  {  	if (!value.isMap()) return;; diff --git a/indra/newview/llavatarlistitem.h b/indra/newview/llavatarlistitem.h index 96aed20016..7ef35a746e 100644 --- a/indra/newview/llavatarlistitem.h +++ b/indra/newview/llavatarlistitem.h @@ -115,9 +115,6 @@ public:  	void onProfileBtnClick();  	/*virtual*/ BOOL handleDoubleClick(S32 x, S32 y, MASK mask); -	/*virtual*/ BOOL handleMouseDown( S32 x, S32 y, MASK mask ); -	/*virtual*/ BOOL handleMouseUp(S32 x, S32 y, MASK mask); -	/*virtual*/ BOOL handleHover(S32 x, S32 y, MASK mask);  protected:  	/** diff --git a/indra/newview/llconversationlog.cpp b/indra/newview/llconversationlog.cpp index 7bd6ef8cd7..bfaffdd73b 100644 --- a/indra/newview/llconversationlog.cpp +++ b/indra/newview/llconversationlog.cpp @@ -531,7 +531,14 @@ void LLConversationLog::onClearLogResponse(const LLSD& notification, const LLSD&  {  	if (0 == LLNotificationsUtil::getSelectedOption(notification, response))  	{ +		deleteTranscripts();  		mConversations.clear();  		notifyObservers();  	}  } + +void LLConversationLog::deleteTranscripts() +{ +	gDirUtilp->deleteFilesInDir(gDirUtilp->getPerAccountChatLogsDir(), "*." + LL_TRANSCRIPT_FILE_EXTENSION); +	LLFloaterIMSessionTab::processChatHistoryStyleUpdate(true); +} diff --git a/indra/newview/llconversationlog.h b/indra/newview/llconversationlog.h index 65a18c02e5..88df17a8f7 100644 --- a/indra/newview/llconversationlog.h +++ b/indra/newview/llconversationlog.h @@ -140,6 +140,7 @@ public:  	void onClearLog();  	void onClearLogResponse(const LLSD& notification, const LLSD& response); +	void deleteTranscripts();  private: diff --git a/indra/newview/llfloaterimsession.cpp b/indra/newview/llfloaterimsession.cpp index f754853b82..50b2ed8c51 100644 --- a/indra/newview/llfloaterimsession.cpp +++ b/indra/newview/llfloaterimsession.cpp @@ -1044,6 +1044,19 @@ void LLFloaterIMSession::processSessionUpdate(const LLSD& session_update)  }  // virtual +void LLFloaterIMSession::draw() +{ +	// add people who were added via dropPerson() +	if (!mPendingParticipants.empty()) +	{ +		addSessionParticipants(mPendingParticipants); +		mPendingParticipants.clear(); +	} + +	LLFloaterIMSessionTab::draw(); +} + +// virtual  BOOL LLFloaterIMSession::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,  									EDragAndDropType cargo_type,  									void* cargo_data, @@ -1081,7 +1094,9 @@ bool LLFloaterIMSession::dropPerson(LLUUID* person_id, bool drop)  		res = canAddSelectedToChat(ids);  		if(res && drop)  		{ -			addSessionParticipants(ids); +			// these people will be added during the next draw() call +			// (so they can be added all at once) +			mPendingParticipants.push_back(*person_id);  		}  	} diff --git a/indra/newview/llfloaterimsession.h b/indra/newview/llfloaterimsession.h index e7fd6f9ff3..381b3cf721 100644 --- a/indra/newview/llfloaterimsession.h +++ b/indra/newview/llfloaterimsession.h @@ -69,6 +69,13 @@ public:  	/*virtual*/ BOOL getVisible();  	// Check typing timeout timer. +	/*virtual*/ void draw(); +	/*virtual*/ BOOL handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop, +		EDragAndDropType cargo_type, +		void* cargo_data, +		EAcceptance* accept, +		std::string& tooltip_msg); +  	static LLFloaterIMSession* findInstance(const LLUUID& session_id);  	static LLFloaterIMSession* getInstance(const LLUUID& session_id); @@ -117,13 +124,6 @@ public:  	void processAgentListUpdates(const LLSD& body);  	void processSessionUpdate(const LLSD& session_update); -	/*virtual*/ BOOL handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop, -									   EDragAndDropType cargo_type, -									   void* cargo_data, -									   EAcceptance* accept, -									   std::string& tooltip_msg); - -  	//used as a callback on receiving new IM message  	static void sRemoveTypingIndicator(const LLSD& data);  	static void onIMChicletCreated(const LLUUID& session_id); @@ -189,6 +189,7 @@ private:  	LLSD mQueuedMsgsForInit;  	uuid_vec_t mInvitedParticipants; +	uuid_vec_t mPendingParticipants;  	// connection to voice channel state change signal  	boost::signals2::connection mVoiceChannelStateChangeConnection; diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp index 7742e5b3c3..4f86c26a67 100755 --- a/indra/newview/llfloaterpreference.cpp +++ b/indra/newview/llfloaterpreference.cpp @@ -460,9 +460,6 @@ BOOL LLFloaterPreference::postBuild()  	// set 'enable' property for 'Clear log...' button  	changed(); -	// set 'enable' property for 'Delete transcripts...' button -	updateDeleteTranscriptsButton(); -  	LLLogChat::setSaveHistorySignal(boost::bind(&LLFloaterPreference::onLogChatHistorySaved, this));  	return TRUE; @@ -1587,13 +1584,8 @@ void LLFloaterPreference::onDeleteTranscriptsResponse(const LLSD& notification,  {  	if (0 == LLNotificationsUtil::getSelectedOption(notification, response))  	{ -		gDirUtilp->deleteFilesInDir(gDirUtilp->getPerAccountChatLogsDir(), "*." + LL_TRANSCRIPT_FILE_EXTENSION); - -		std::vector<std::string> list_of_transcriptions_file_names; -		LLLogChat::getListOfTranscriptFiles(list_of_transcriptions_file_names); -		getChild<LLButton>("delete_transcripts")->setEnabled(list_of_transcriptions_file_names.size() > 0); - -		LLFloaterIMSessionTab::processChatHistoryStyleUpdate(true); +		LLConversationLog::instance().deleteTranscripts(); +		updateDeleteTranscriptsButton();  	}  } @@ -1668,6 +1660,10 @@ void LLFloaterPreference::selectChatPanel()  void LLFloaterPreference::changed()  {  	getChild<LLButton>("clear_log")->setEnabled(LLConversationLog::instance().getConversations().size() > 0); + +	// set 'enable' property for 'Delete transcripts...' button +	updateDeleteTranscriptsButton(); +  }  //------------------------------Updater--------------------------------------- diff --git a/indra/newview/llnotificationscripthandler.cpp b/indra/newview/llnotificationscripthandler.cpp index e2d4e9f8ce..19dd6d4ca0 100644 --- a/indra/newview/llnotificationscripthandler.cpp +++ b/indra/newview/llnotificationscripthandler.cpp @@ -27,6 +27,7 @@  #include "llviewerprecompiledheaders.h" // must be first include +#include "llagent.h"  #include "llnotificationhandler.h"  #include "lltoastnotifypanel.h"  #include "llviewercontrol.h" @@ -95,6 +96,10 @@ bool LLScriptHandler::processNotification(const LLNotificationPtr& notification)  		p.notification = notification;  		p.panel = notify_box;  		p.on_delete_toast = boost::bind(&LLScriptHandler::onDeleteToast, this, _1); +		if(gAgent.isDoNotDisturb()) +		{  +			p.force_show = notification->getName() == "SystemMessage" || notification->getPriority() >= NOTIFICATION_PRIORITY_HIGH; +		}  		LLScreenChannel* channel = dynamic_cast<LLScreenChannel*>(mChannel.get());  		if(channel) diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index caafb10e25..359819ec49 100755 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -2391,7 +2391,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)  			// do nothing -- don't distract newbies in  			// Prelude with global IMs  		} -		else if (offline == IM_ONLINE && is_do_not_disturb && name != SYSTEM_FROM) +		else if (offline == IM_ONLINE && is_do_not_disturb && from_id.notNull())  		{  			// return a standard "do not disturb" message, but only do it to online IM   			// (i.e. not other auto responses and not store-and-forward IM) | 
