diff options
| author | Merov Linden <merov@lindenlab.com> | 2013-02-11 16:10:34 -0800 | 
|---|---|---|
| committer | Merov Linden <merov@lindenlab.com> | 2013-02-11 16:10:34 -0800 | 
| commit | 2317591c93b5870acd6fdedbecc2d8050511459d (patch) | |
| tree | c79411f06b25eef8ec26e8bcf306e17787d7f121 | |
| parent | 279d4a95ea84ddeb32efc54deb6923202fe638a7 (diff) | |
| parent | c4bcd4f2c2578e8f165361441635ef47f51ec420 (diff) | |
Pull merge from lindenlab/viewer-chui
| -rw-r--r-- | indra/llui/lltextbase.cpp | 24 | ||||
| -rw-r--r-- | indra/llui/lltextbase.h | 3 | ||||
| -rw-r--r-- | indra/newview/llconversationlog.cpp | 4 | ||||
| -rw-r--r-- | indra/newview/llconversationlog.h | 2 | ||||
| -rw-r--r-- | indra/newview/llfloaterimcontainer.cpp | 21 | ||||
| -rw-r--r-- | indra/newview/llfloaterimcontainer.h | 1 | ||||
| -rw-r--r-- | indra/newview/llimview.cpp | 2 | ||||
| -rw-r--r-- | indra/newview/llinventorypanel.cpp | 3 | ||||
| -rw-r--r-- | indra/newview/lltoastnotifypanel.cpp | 3 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/panel_notification.xml | 2 | 
10 files changed, 49 insertions, 16 deletions
diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp index 8839afb60d..7cee9f5b46 100644 --- a/indra/llui/lltextbase.cpp +++ b/indra/llui/lltextbase.cpp @@ -46,6 +46,7 @@  const F32	CURSOR_FLASH_DELAY = 1.0f;  // in seconds  const S32	CURSOR_THICKNESS = 2; +const F32	TRIPLE_CLICK_INTERVAL = 0.3f;	// delay between double and triple click.  LLTextBase::line_info::line_info(S32 index_start, S32 index_end, LLRect rect, S32 line_num)   :	mDocIndexStart(index_start),  @@ -605,7 +606,8 @@ void LLTextBase::drawText()  				// Find the start of the first word  				U32 word_start = seg_start, word_end = -1; -				while ( (word_start < wstrText.length()) && (!LLStringOps::isAlpha(wstrText[word_start])) ) +				U32 text_length = wstrText.length(); +				while ( (word_start < text_length) && (!LLStringOps::isAlpha(wstrText[word_start])) )  				{  					word_start++;  				} @@ -627,11 +629,15 @@ void LLTextBase::drawText()  						break;  					} -					// Don't process words shorter than 3 characters -					std::string word = wstring_to_utf8str(wstrText.substr(word_start, word_end - word_start)); -					if ( (word.length() >= 3) && (!LLSpellChecker::instance().checkSpelling(word)) ) +					if (word_start < text_length && word_end <= text_length && word_end > word_start)  					{ -						mMisspellRanges.push_back(std::pair<U32, U32>(word_start, word_end)); +						std::string word = wstring_to_utf8str(wstrText.substr(word_start, word_end - word_start)); + +						// Don't process words shorter than 3 characters +						if ( (word.length() >= 3) && (!LLSpellChecker::instance().checkSpelling(word)) ) +						{ +							mMisspellRanges.push_back(std::pair<U32, U32>(word_start, word_end)); +						}  					}  					// Find the start of the next word @@ -999,6 +1005,13 @@ void LLTextBase::insertSegment(LLTextSegmentPtr segment_to_insert)  BOOL LLTextBase::handleMouseDown(S32 x, S32 y, MASK mask)  { +	// handle triple click +	if (!mTripleClickTimer.hasExpired()) +	{ +		selectAll(); +		return TRUE; +	} +  	LLTextSegmentPtr cur_segment = getSegmentAtLocalPos(x, y);  	if (cur_segment && cur_segment->handleMouseDown(x, y, mask))  	{ @@ -1073,6 +1086,7 @@ BOOL LLTextBase::handleRightMouseUp(S32 x, S32 y, MASK mask)  BOOL LLTextBase::handleDoubleClick(S32 x, S32 y, MASK mask)  { +	mTripleClickTimer.setTimerExpirySec(TRIPLE_CLICK_INTERVAL);  	LLTextSegmentPtr cur_segment = getSegmentAtLocalPos(x, y);  	if (cur_segment && cur_segment->handleDoubleClick(x, y, mask))  	{ diff --git a/indra/llui/lltextbase.h b/indra/llui/lltextbase.h index 629b304b25..ad566a36d3 100644 --- a/indra/llui/lltextbase.h +++ b/indra/llui/lltextbase.h @@ -598,7 +598,8 @@ protected:  	// selection  	S32							mSelectionStart;  	S32							mSelectionEnd; -	 +	LLTimer		                mTripleClickTimer; +  	BOOL						mIsSelecting;		// Are we in the middle of a drag-select?   	// spell checking diff --git a/indra/newview/llconversationlog.cpp b/indra/newview/llconversationlog.cpp index 82176b3a06..15d61e978d 100644 --- a/indra/newview/llconversationlog.cpp +++ b/indra/newview/llconversationlog.cpp @@ -276,7 +276,7 @@ void LLConversationLog::updateConversationName(const LLIMModel::LLIMSession* ses  	LLConversation* conversation = findConversation(session);  	if (conversation)  	{ -		conversation->setConverstionName(name); +		conversation->setConversationName(name);  		notifyParticularConversationObservers(conversation->getSessionID(), LLConversationLogObserver::CHANGED_NAME);  	}  } @@ -378,7 +378,7 @@ void LLConversationLog::cache()  std::string LLConversationLog::getFileName()  {  	std::string filename = "conversation"; -	return gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, filename) + ".log"; +	return gDirUtilp->getExpandedFilename(LL_PATH_PER_ACCOUNT_CHAT_LOGS, filename) + ".log";  }  bool LLConversationLog::saveToFile(const std::string& filename) diff --git a/indra/newview/llconversationlog.h b/indra/newview/llconversationlog.h index d5b6eccb29..fd38556131 100644 --- a/indra/newview/llconversationlog.h +++ b/indra/newview/llconversationlog.h @@ -58,7 +58,7 @@ public:  	const time_t&		getTime()				const	{ return mTime; }  	bool				hasOfflineMessages()	const	{ return mHasOfflineIMs; } -	void setConverstionName(std::string conv_name) { mConversationName = conv_name; } +	void setConversationName(std::string conv_name) { mConversationName = conv_name; }  	void setOfflineMessages(bool new_messages) { mHasOfflineIMs = new_messages; }  	bool isOlderThan(U32 days) const; diff --git a/indra/newview/llfloaterimcontainer.cpp b/indra/newview/llfloaterimcontainer.cpp index 2b13ce6377..cef45a5b56 100644 --- a/indra/newview/llfloaterimcontainer.cpp +++ b/indra/newview/llfloaterimcontainer.cpp @@ -62,7 +62,8 @@ LLFloaterIMContainer::LLFloaterIMContainer(const LLSD& seed, const Params& param  	mExpandCollapseBtn(NULL),  	mConversationsRoot(NULL),  	mConversationsEventStream("ConversationsEvents"), -	mInitialized(false) +	mInitialized(false), +	mIsFirstLaunch(false)  {      mEnableCallbackRegistrar.add("IMFloaterContainer.Check", boost::bind(&LLFloaterIMContainer::isActionChecked, this, _2));  	mCommitCallbackRegistrar.add("IMFloaterContainer.Action", boost::bind(&LLFloaterIMContainer::onCustomAction,  this, _2)); @@ -243,6 +244,7 @@ BOOL LLFloaterIMContainer::postBuild()  	mGeneralTitle = getTitle();  	mInitialized = true; +	mIsFirstLaunch = true;  	// Add callbacks:  	// We'll take care of view updates on idle @@ -273,14 +275,19 @@ void LLFloaterIMContainer::addFloater(LLFloater* floaterp,  		openFloater(floaterp->getKey());  		return;  	} + +	LLUUID session_id = floaterp->getKey();  	// Make sure the message panel is open when adding a floater or it stays mysteriously hidden -	collapseMessagesPane(false); +	if (!mIsFirstLaunch) +	{ +		collapseMessagesPane(false); +	}  	// Add the floater  	LLMultiFloater::addFloater(floaterp, select_added_floater, insertion_point); -	LLUUID session_id = floaterp->getKey(); +  	LLIconCtrl* icon = 0; @@ -630,6 +637,12 @@ void LLFloaterIMContainer::collapseMessagesPane(bool collapse)  		return;  	} +	if (mIsFirstLaunch) +	{ +		mIsFirstLaunch = false; +		return; +	} +  	// Save current width of panels before collapsing/expanding right pane.  	S32 conv_pane_width = mConversationsPane->getRect().getWidth();      S32 msg_pane_width = mMessagesPane->getRect().getWidth(); @@ -1756,7 +1769,7 @@ void LLFloaterIMContainer::openNearbyChat()  {  	// If there's only one conversation in the container and that conversation is the nearby chat  	//(which it should be...), open it so to make the list of participants visible. This happens to be the most common case when opening the Chat floater. -	if(mConversationsItems.size() == 1) +	if((mConversationsItems.size() == 1)&&(!mConversationsPane->isCollapsed()))  	{  		LLConversationViewSession* nearby_chat = dynamic_cast<LLConversationViewSession*>(get_ptr_in_map(mConversationsWidgets,LLUUID()));  		if (nearby_chat) diff --git a/indra/newview/llfloaterimcontainer.h b/indra/newview/llfloaterimcontainer.h index 06af6c7b51..a28dba3b98 100644 --- a/indra/newview/llfloaterimcontainer.h +++ b/indra/newview/llfloaterimcontainer.h @@ -167,6 +167,7 @@ private:  	LLLayoutStack* mConversationsStack;  	bool mInitialized; +	bool mIsFirstLaunch;  	LLUUID mSelectedSession;  	std::string mGeneralTitle; diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp index 2eaef48049..cdf6cb6252 100644 --- a/indra/newview/llimview.cpp +++ b/indra/newview/llimview.cpp @@ -66,6 +66,7 @@  #include "lltoolbarview.h"  #include "llviewercontrol.h"  #include "llviewerparcelmgr.h" +#include "llconversationlog.h"  #include "message.h" @@ -950,6 +951,7 @@ bool LLIMModel::logToFile(const std::string& file_name, const std::string& from,  		}  		LLLogChat::saveHistory(file_name, from_name, from_id, utf8_text); +		LLConversationLog::instance().cache(); // update the conversation log too  		return true;  	}  	else diff --git a/indra/newview/llinventorypanel.cpp b/indra/newview/llinventorypanel.cpp index 1357b613bb..fabcd50c7d 100644 --- a/indra/newview/llinventorypanel.cpp +++ b/indra/newview/llinventorypanel.cpp @@ -1401,8 +1401,7 @@ bool LLInventoryPanel::isSelectionRemovable()  				}  				else  				{ -					can_delete &= listener->isItemRemovable(); -					can_delete &= !listener->isItemInTrash(); +					can_delete &= listener->isItemRemovable() && !listener->isItemInTrash();  				}  			}  		} diff --git a/indra/newview/lltoastnotifypanel.cpp b/indra/newview/lltoastnotifypanel.cpp index bd6c42d474..3fd056ea31 100644 --- a/indra/newview/lltoastnotifypanel.cpp +++ b/indra/newview/lltoastnotifypanel.cpp @@ -403,6 +403,9 @@ void LLToastNotifyPanel::init( LLRect rect, bool show_images )          }      } +	//.xml file intially makes info panel only follow left/right/top. This is so that when control buttons are added the info panel  +	//can shift upward making room for the buttons inside mControlPanel. After the buttons are added, the info panel can then be set to follow 'all'. +	mInfoPanel->setFollowsAll();      snapToMessageHeight(mTextBox, MAX_LENGTH);  } diff --git a/indra/newview/skins/default/xui/en/panel_notification.xml b/indra/newview/skins/default/xui/en/panel_notification.xml index 421ecf10a1..94c468e1bb 100644 --- a/indra/newview/skins/default/xui/en/panel_notification.xml +++ b/indra/newview/skins/default/xui/en/panel_notification.xml @@ -22,7 +22,7 @@      background_visible="true"    bg_alpha_color="ToastBackground"    bg_opaque_color="ToastBackground" -    follows="all" +    follows="left|right|top"      height="100"      label="info_panel"      layout="topleft"  | 
