diff options
35 files changed, 276 insertions, 163 deletions
| diff --git a/indra/llcommon/lllistenerwrapper.h b/indra/llcommon/lllistenerwrapper.h index e7bad1423a..2f747fb182 100644 --- a/indra/llcommon/lllistenerwrapper.h +++ b/indra/llcommon/lllistenerwrapper.h @@ -24,7 +24,7 @@   * derivation from LLEventTrackable, and so forth.   */  template <typename LISTENER> -class LL_COMMON_API LLListenerWrapper: public LLListenerWrapperBase +class LLListenerWrapper: public LLListenerWrapperBase  {  public:      /// Wrap an arbitrary listener object @@ -89,7 +89,7 @@ struct ll_template_cast_impl<const LLListenerWrapperBase*, const CLASS<T>*> \   * write llwrap<Wrapper>(boost::bind(...)).   */  template <template<typename> class WRAPPER, typename T> -WRAPPER<T> LL_COMMON_API llwrap(const T& listener) +WRAPPER<T> llwrap(const T& listener)  {      return WRAPPER<T>(listener);  } @@ -109,7 +109,7 @@ WRAPPER<T> LL_COMMON_API llwrap(const T& listener)   * @endcode   */  template <class LISTENER> -class LL_COMMON_API LLCoutListener: public LLListenerWrapper<LISTENER> +class LLCoutListener: public LLListenerWrapper<LISTENER>  {      typedef LLListenerWrapper<LISTENER> super; @@ -151,7 +151,7 @@ LLLISTENER_WRAPPER_SUBCLASS(LLCoutListener);   * @endcode   */  template <class LISTENER> -class LL_COMMON_API LLLogListener: public LLListenerWrapper<LISTENER> +class LLLogListener: public LLListenerWrapper<LISTENER>  {      typedef LLListenerWrapper<LISTENER> super; diff --git a/indra/llui/llflatlistview.cpp b/indra/llui/llflatlistview.cpp index f4a5f1c990..d4c3cfb7b6 100644 --- a/indra/llui/llflatlistview.cpp +++ b/indra/llui/llflatlistview.cpp @@ -689,6 +689,17 @@ LLRect LLFlatListView::getSelectedItemsRect()  	return rc;  } +void LLFlatListView::selectFirstItem	() +{ +	selectItemPair(mItemPairs.front(), true); +} + +void LLFlatListView::selectLastItem		() +{ +	selectItemPair(mItemPairs.back(), true); +} + +  // virtual  bool LLFlatListView::selectNextItemPair(bool is_up_direction, bool reset_selection)  { @@ -696,53 +707,53 @@ bool LLFlatListView::selectNextItemPair(bool is_up_direction, bool reset_selecti  	if ( !mItemPairs.size() )  		return false; -	item_pair_t* cur_sel_pair = NULL; +	  	item_pair_t* to_sel_pair = NULL; - +	item_pair_t* cur_sel_pair = NULL;  	if ( mSelectedItemPairs.size() )  	{  		// Take the last selected pair  		cur_sel_pair = mSelectedItemPairs.back(); -	} -	else -	{ -		// If there weren't selected items then choose the first one bases on given direction -		cur_sel_pair = (is_up_direction) ? mItemPairs.back() : mItemPairs.front(); -		// Force selection to first item -		to_sel_pair = cur_sel_pair; -	} - -	// Bases on given direction choose next item to select -	if ( is_up_direction ) -	{ -		// Find current selected item position in mItemPairs list -		pairs_list_t::reverse_iterator sel_it = std::find(mItemPairs.rbegin(), mItemPairs.rend(), cur_sel_pair); - -		for (;++sel_it != mItemPairs.rend();) +		// Bases on given direction choose next item to select +		if ( is_up_direction )  		{ -			// skip invisible items -			if ( (*sel_it)->first->getVisible() ) +			// Find current selected item position in mItemPairs list +			pairs_list_t::reverse_iterator sel_it = std::find(mItemPairs.rbegin(), mItemPairs.rend(), cur_sel_pair); + +			for (;++sel_it != mItemPairs.rend();)  			{ -				to_sel_pair = *sel_it; -				break; +				// skip invisible items +				if ( (*sel_it)->first->getVisible() ) +				{ +					to_sel_pair = *sel_it; +					break; +				}  			}  		} -	} -	else -	{ -		// Find current selected item position in mItemPairs list -		pairs_list_t::iterator sel_it = std::find(mItemPairs.begin(), mItemPairs.end(), cur_sel_pair); - -		for (;++sel_it != mItemPairs.end();) +		else  		{ -			// skip invisible items -			if ( (*sel_it)->first->getVisible() ) +			// Find current selected item position in mItemPairs list +			pairs_list_t::iterator sel_it = std::find(mItemPairs.begin(), mItemPairs.end(), cur_sel_pair); + +			for (;++sel_it != mItemPairs.end();)  			{ -				to_sel_pair = *sel_it; -				break; +				// skip invisible items +				if ( (*sel_it)->first->getVisible() ) +				{ +					to_sel_pair = *sel_it; +					break; +				}  			}  		}  	} +	else +	{ +		// If there weren't selected items then choose the first one bases on given direction +		cur_sel_pair = (is_up_direction) ? mItemPairs.back() : mItemPairs.front(); +		// Force selection to first item +		to_sel_pair = cur_sel_pair; +	} +  	if ( to_sel_pair )  	{ @@ -920,4 +931,23 @@ void LLFlatListView::onFocusLost()  	mSelectedItemsBorder->setVisible(FALSE);  } +//virtual  +void LLFlatListView::notify(const LLSD& info) +{ +	if(info.has("action")) +	{ +		std::string str_action = info["action"]; +		if(str_action == "select_first") +		{ +			setFocus(true); +			selectFirstItem(); +		} +		else if(str_action == "select_last") +		{ +			setFocus(true); +			selectLastItem(); +		} +	} +} +  //EOF diff --git a/indra/llui/llflatlistview.h b/indra/llui/llflatlistview.h index 3867e910c0..9e1e0f90fc 100644 --- a/indra/llui/llflatlistview.h +++ b/indra/llui/llflatlistview.h @@ -279,6 +279,12 @@ public:  	bool updateValue(const LLSD& old_value, const LLSD& new_value); + +	void selectFirstItem	(); +	void selectLastItem		(); + +	virtual void	notify(const LLSD& info) ; +  protected:  	/** Pairs LLpanel representing a single item LLPanel and LLSD associated with it */ diff --git a/indra/llui/llview.h b/indra/llui/llview.h index d485244a05..c611e4c85f 100644 --- a/indra/llui/llview.h +++ b/indra/llui/llview.h @@ -514,6 +514,8 @@ public:  	virtual void	notifyParent(const LLSD& info);  	virtual void	notifyChildren(const LLSD& info); +	virtual void	notify(const LLSD& info) {}; +  	static const LLViewDrawContext& getDrawContext();  protected: diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index 84843138bf..ddc818172d 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -1668,7 +1668,7 @@ bool LLAppViewer::initThreads()  	// Image decoding  	LLAppViewer::sImageDecodeThread = new LLImageDecodeThread(enable_threads && true);  	LLAppViewer::sTextureCache = new LLTextureCache(enable_threads && true); -	LLAppViewer::sTextureFetch = new LLTextureFetch(LLAppViewer::getTextureCache(), sImageDecodeThread, enable_threads && true); +	LLAppViewer::sTextureFetch = new LLTextureFetch(LLAppViewer::getTextureCache(), sImageDecodeThread, enable_threads && false);  	LLImage::initClass();  	if (LLFastTimer::sLog || LLFastTimer::sMetricLog) diff --git a/indra/newview/llbottomtray.cpp b/indra/newview/llbottomtray.cpp index 96c06b1665..6d3d61d4fe 100644 --- a/indra/newview/llbottomtray.cpp +++ b/indra/newview/llbottomtray.cpp @@ -391,7 +391,7 @@ bool LLBottomTray::onContextMenuItemEnabled(const LLSD& userdata)  	}  	else if (item == "can_select_all")  	{ -		return edit_box->canSelectAll(); +		return edit_box->canSelectAll() && (edit_box->getLength()>0);  	}  	return true;  } diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp index 5e17770314..96b5ae5908 100644 --- a/indra/newview/llchathistory.cpp +++ b/indra/newview/llchathistory.cpp @@ -43,6 +43,7 @@  #include "lltrans.h"  #include "llfloaterreg.h"  #include "llmutelist.h" +#include "llstylemap.h"  #include "llsidetray.h"//for blocked objects panel @@ -355,6 +356,7 @@ void LLChatHistory::clear()  {  	mLastFromName.clear();  	LLTextEditor::clear(); +	mLastFromID = LLUUID::null;  }  void LLChatHistory::appendMessage(const LLChat& chat, const bool use_plain_text_chat_history, const LLStyle::Params& input_append_params) @@ -371,13 +373,25 @@ void LLChatHistory::appendMessage(const LLChat& chat, const bool use_plain_text_  	style_params.font.size(font_size);	  	style_params.font.style(input_append_params.font.style); -	std::string header_text = "[" + chat.mTimeStr + "] "; -	if (utf8str_trim(chat.mFromName).size() != 0 && chat.mFromName != SYSTEM_FROM) -		header_text += chat.mFromName + ": "; -	  	if (use_plain_text_chat_history)  	{ -		appendText(header_text, getText().size() != 0, style_params); +		appendText("[" + chat.mTimeStr + "] ", getText().size() != 0, style_params); + +		if (utf8str_trim(chat.mFromName).size() != 0) +		{ +			// Don't hotlink any messages from the system (e.g. "Second Life:"), so just add those in plain text. +			if ( chat.mFromName != SYSTEM_FROM && chat.mFromID.notNull() ) +			{ +				LLStyle::Params link_params(style_params); +				link_params.fillFrom(LLStyleMap::instance().lookupAgent(chat.mFromID)); +				// Convert the name to a hotlink and add to message. +				appendText(chat.mFromName + ": ", false, link_params); +			} +			else +			{ +				appendText(chat.mFromName + ": ", false, style_params); +			} +		}  	}  	else  	{ @@ -389,9 +403,11 @@ void LLChatHistory::appendMessage(const LLChat& chat, const bool use_plain_text_  		LLDate new_message_time = LLDate::now(); -		if (mLastFromName == chat.mFromName &&  -			mLastMessageTime.notNull() && -			(new_message_time.secondsSinceEpoch() - mLastMessageTime.secondsSinceEpoch()) < 60.0 ) +		if (mLastFromName == chat.mFromName  +			&& mLastFromID == chat.mFromID +			&& mLastMessageTime.notNull()  +			&& (new_message_time.secondsSinceEpoch() - mLastMessageTime.secondsSinceEpoch()) < 60.0  +			)  		{  			view = getSeparator();  			p.top_pad = mTopSeparatorPad; @@ -417,8 +433,13 @@ void LLChatHistory::appendMessage(const LLChat& chat, const bool use_plain_text_  		view->reshape(target_rect.getWidth(), view->getRect().getHeight());  		view->setOrigin(target_rect.mLeft, view->getRect().mBottom); +		std::string header_text = "[" + chat.mTimeStr + "] "; +		if (utf8str_trim(chat.mFromName).size() != 0 && chat.mFromName != SYSTEM_FROM) +			header_text += chat.mFromName + ": "; +  		appendWidget(p, header_text, false);  		mLastFromName = chat.mFromName; +		mLastFromID = chat.mFromID;  		mLastMessageTime = new_message_time;  	}  	//Handle IRC styled /me messages. diff --git a/indra/newview/llchathistory.h b/indra/newview/llchathistory.h index d2cfa53d8b..8ca7dd1d58 100644 --- a/indra/newview/llchathistory.h +++ b/indra/newview/llchathistory.h @@ -114,6 +114,7 @@ class LLChatHistory : public LLTextEditor  	private:  		std::string mLastFromName; +		LLUUID mLastFromID;  		LLDate mLastMessageTime;  		std::string mMessageHeaderFilename;  		std::string mMessageSeparatorFilename; diff --git a/indra/newview/llchatitemscontainerctrl.cpp b/indra/newview/llchatitemscontainerctrl.cpp index efdaff3f6a..92df281307 100644 --- a/indra/newview/llchatitemscontainerctrl.cpp +++ b/indra/newview/llchatitemscontainerctrl.cpp @@ -122,7 +122,6 @@ void LLNearbyChatToastPanel::addMessage(LLSD& notification)  		if(notification["chat_style"].asInteger()== CHAT_STYLE_IRC)  		{ -			messageText = messageText.substr(3);  			style_params.font.style = "ITALIC";  		}  		else if( chat_type == CHAT_TYPE_SHOUT) @@ -208,7 +207,6 @@ void LLNearbyChatToastPanel::init(LLSD& notification)  		if(notification["chat_style"].asInteger()== CHAT_STYLE_IRC)  		{ -			messageText = messageText.substr(3);  			style_params.font.style = "ITALIC";  		}  		else if( chat_type == CHAT_TYPE_SHOUT) diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp index 5481ca97cd..d3058e67af 100644 --- a/indra/newview/llimview.cpp +++ b/indra/newview/llimview.cpp @@ -165,7 +165,7 @@ LLIMModel::LLIMSession::LLIMSession(const LLUUID& session_id, const std::string&  	if(mVoiceChannel)  	{ -		mVoiceChannel->setStateChangedCallback(boost::bind(&LLIMSession::onVoiceChannelStateChanged, this, _1, _2)); +		mVoiceChannelStateChangeConnection = mVoiceChannel->setStateChangedCallback(boost::bind(&LLIMSession::onVoiceChannelStateChanged, this, _1, _2));  	}  	mSpeakers = new LLIMSpeakerMgr(mVoiceChannel); @@ -270,9 +270,11 @@ LLIMModel::LLIMSession::~LLIMSession()  		}  	} +	mVoiceChannelStateChangeConnection.disconnect(); +  	// HAVE to do this here -- if it happens in the LLVoiceChannel destructor it will call the wrong version (since the object's partially deconstructed at that point).  	mVoiceChannel->deactivate(); -	 +  	delete mVoiceChannel;  	mVoiceChannel = NULL;  } @@ -1392,13 +1394,13 @@ void LLIncomingCallDialog::processCallResponse(S32 response)  		}  		else  		{ -			LLUUID session_id = gIMMgr->addSession( +			LLUUID new_session_id = gIMMgr->addSession(  				mPayload["session_name"].asString(),  				type,  				session_id); -			if (session_id != LLUUID::null) +			if (new_session_id != LLUUID::null)  			{ -				LLIMFloater::show(session_id); +				LLIMFloater::show(new_session_id);  			}  			std::string url = gAgent.getRegion()->getCapability( @@ -1486,13 +1488,13 @@ bool inviteUserResponse(const LLSD& notification, const LLSD& response)  			}  			else  			{ -				LLUUID session_id = gIMMgr->addSession( +				LLUUID new_session_id = gIMMgr->addSession(  					payload["session_name"].asString(),  					type,  					session_id); -				if (session_id != LLUUID::null) +				if (new_session_id != LLUUID::null)  				{ -					LLIMFloater::show(session_id); +					LLIMFloater::show(new_session_id);  				}  				std::string url = gAgent.getRegion()->getCapability( diff --git a/indra/newview/llimview.h b/indra/newview/llimview.h index 66f92c83a5..8a0f57deb0 100644 --- a/indra/newview/llimview.h +++ b/indra/newview/llimview.h @@ -72,6 +72,9 @@ public:  		LLUUID mOtherParticipantID;  		std::vector<LLUUID> mInitialTargetIDs; +		// connection to voice channel state change signal +		boost::signals2::connection mVoiceChannelStateChangeConnection; +  		//does NOT include system messages  		S32 mNumUnread; diff --git a/indra/newview/lllocationinputctrl.cpp b/indra/newview/lllocationinputctrl.cpp index d97f1d4d18..09c215e660 100644 --- a/indra/newview/lllocationinputctrl.cpp +++ b/indra/newview/lllocationinputctrl.cpp @@ -896,7 +896,7 @@ bool LLLocationInputCtrl::onLocationContextMenuItemEnabled(const LLSD& userdata)  	}  	else if (item == "can_select_all")  	{ -		return mTextEntry->canSelectAll(); +		return mTextEntry->canSelectAll() && (mTextEntry->getLength() > 0);  	}  	else if(item == "show_coordinates")  	{ diff --git a/indra/newview/llnearbychat.cpp b/indra/newview/llnearbychat.cpp index ee3be0a5e3..18e5169930 100644 --- a/indra/newview/llnearbychat.cpp +++ b/indra/newview/llnearbychat.cpp @@ -54,10 +54,11 @@  #include "llstylemap.h"  #include "lldraghandle.h" -#include "lltrans.h" +  #include "llbottomtray.h"  #include "llnearbychatbar.h"  #include "llfloaterreg.h" +#include "lltrans.h"  static const S32 RESIZE_BAR_THICKNESS = 3; @@ -146,6 +147,7 @@ std::string appendTime()  	return timeStr;  } +  void	LLNearbyChat::addMessage(const LLChat& chat,bool archive)  {  	if (chat.mChatType == CHAT_TYPE_DEBUG_MSG) @@ -167,18 +169,15 @@ void	LLNearbyChat::addMessage(const LLChat& chat,bool archive)  		}  	} +	LLChat& tmp_chat = const_cast<LLChat&>(chat); + +	if(tmp_chat.mTimeStr.empty()) +		tmp_chat.mTimeStr = appendTime(); +  	bool use_plain_text_chat_history = gSavedSettings.getBOOL("PlainTextChatHistory");  	if (!chat.mMuted)  	{ -		std::string message = chat.mText; - - -		LLChat& tmp_chat = const_cast<LLChat&>(chat); - -		if(tmp_chat.mTimeStr.empty()) -			tmp_chat.mTimeStr = appendTime(); -		  		if (chat.mChatStyle == CHAT_STYLE_IRC)  		{  			LLColor4 txt_color = LLUIColorTable::instance().getColor("White"); @@ -191,17 +190,9 @@ void	LLNearbyChat::addMessage(const LLChat& chat,bool archive)  			append_style_params.readonly_color(txt_color);  			append_style_params.font.name(font_name);  			append_style_params.font.size(font_size); -			if (chat.mFromName.size() > 0) -			{ -				append_style_params.font.style = "ITALIC"; -				LLChat add_chat=chat; -				add_chat.mText = chat.mFromName + " "; -				mChatHistory->appendMessage(add_chat, use_plain_text_chat_history, append_style_params); -			} -			 -			message = message.substr(3);  			append_style_params.font.style = "ITALIC"; -			mChatHistory->appendText(message, FALSE, append_style_params); + +			mChatHistory->appendMessage(chat, use_plain_text_chat_history, append_style_params);  		}  		else  		{ diff --git a/indra/newview/llnearbychathandler.cpp b/indra/newview/llnearbychathandler.cpp index b0b6db682c..169560f688 100644 --- a/indra/newview/llnearbychathandler.cpp +++ b/indra/newview/llnearbychathandler.cpp @@ -318,6 +318,8 @@ void LLNearbyChatHandler::initChannel()  	mChannel->init(channel_right_bound - channel_width, channel_right_bound);  } + +  void LLNearbyChatHandler::processChat(const LLChat& chat_msg)  {  	if(chat_msg.mMuted == TRUE) @@ -327,6 +329,22 @@ void LLNearbyChatHandler::processChat(const LLChat& chat_msg)  	if(chat_msg.mText.empty())  		return;//don't process empty messages + +	LLChat& tmp_chat = const_cast<LLChat&>(chat_msg); + +	if (tmp_chat.mChatStyle == CHAT_STYLE_IRC) +	{ +		if(!tmp_chat.mFromName.empty()) +			tmp_chat.mText = tmp_chat.mFromName + " " + tmp_chat.mText.substr(3); +		else +			tmp_chat.mText = tmp_chat.mText.substr(3); +	} +	 +	{ +		//sometimes its usefull to have no name at all... +		//if(tmp_chat.mFromName.empty() && tmp_chat.mFromID!= LLUUID::null) +		//	tmp_chat.mFromName = tmp_chat.mFromID.asString(); +	}  	LLNearbyChat* nearby_chat = LLFloaterReg::getTypedInstance<LLNearbyChat>("nearby_chat", LLSD());  	nearby_chat->addMessage(chat_msg); diff --git a/indra/newview/llpanelgroupnotices.cpp b/indra/newview/llpanelgroupnotices.cpp index 5834c50fbb..6210973dae 100644 --- a/indra/newview/llpanelgroupnotices.cpp +++ b/indra/newview/llpanelgroupnotices.cpp @@ -304,6 +304,9 @@ BOOL LLPanelGroupNotices::postBuild()  void LLPanelGroupNotices::activate()  { +	if(mNoticesList) +		mNoticesList->deleteAllItems(); +	  	BOOL can_send = gAgent.hasPowerInGroup(mGroupID,GP_NOTICES_SEND);  	BOOL can_receive = gAgent.hasPowerInGroup(mGroupID,GP_NOTICES_RECEIVE); diff --git a/indra/newview/llpanelimcontrolpanel.cpp b/indra/newview/llpanelimcontrolpanel.cpp index 405c95fc22..8c19865550 100644 --- a/indra/newview/llpanelimcontrolpanel.cpp +++ b/indra/newview/llpanelimcontrolpanel.cpp @@ -71,6 +71,11 @@ void LLPanelChatControlPanel::onVoiceChannelStateChanged(const LLVoiceChannel::E  	childSetVisible("call_btn", ! is_call_started);  } +LLPanelChatControlPanel::~LLPanelChatControlPanel() +{ +	mVoiceChannelStateChangeConnection.disconnect(); +} +  BOOL LLPanelChatControlPanel::postBuild()  {  	childSetAction("call_btn", boost::bind(&LLPanelChatControlPanel::onCallButtonClicked, this)); @@ -113,7 +118,9 @@ void LLPanelChatControlPanel::setSessionId(const LLUUID& session_id)  	mSessionId = session_id;  	LLVoiceChannel* voice_channel = LLIMModel::getInstance()->getVoiceChannel(mSessionId);  	if(voice_channel) -		voice_channel->setStateChangedCallback(boost::bind(&LLPanelChatControlPanel::onVoiceChannelStateChanged, this, _1, _2)); +	{ +		mVoiceChannelStateChangeConnection = voice_channel->setStateChangedCallback(boost::bind(&LLPanelChatControlPanel::onVoiceChannelStateChanged, this, _1, _2)); +	}  }  LLPanelIMControlPanel::LLPanelIMControlPanel() diff --git a/indra/newview/llpanelimcontrolpanel.h b/indra/newview/llpanelimcontrolpanel.h index a590232a0b..871779b273 100644 --- a/indra/newview/llpanelimcontrolpanel.h +++ b/indra/newview/llpanelimcontrolpanel.h @@ -47,7 +47,7 @@ public:  	LLPanelChatControlPanel() :  		mSessionId(LLUUID()),  		mInitialized(false) {}; -	~LLPanelChatControlPanel() {}; +	~LLPanelChatControlPanel();  	virtual BOOL postBuild();  	virtual void draw(); @@ -64,6 +64,9 @@ public:  private:  	LLUUID mSessionId;  	bool   mInitialized; + +	// connection to voice channel state change signal +	boost::signals2::connection mVoiceChannelStateChangeConnection;  }; diff --git a/indra/newview/llpanellandmarks.cpp b/indra/newview/llpanellandmarks.cpp index 4ce6d14faa..d731da0ec7 100644 --- a/indra/newview/llpanellandmarks.cpp +++ b/indra/newview/llpanellandmarks.cpp @@ -122,8 +122,7 @@ void LLLandmarksPanel::onSearchEdit(const std::string& string)  	for (accordion_tabs_t::const_iterator iter = mAccordionTabs.begin(); iter != mAccordionTabs.end(); ++iter)  	{  		LLAccordionCtrlTab* tab = *iter; -		if (tab && !tab->getVisible()) -			tab->setVisible(TRUE); +		tab->setVisible(TRUE);  		// expand accordion to see matched items in each one. See EXT-2014.  		tab->changeOpenClose(false); @@ -132,7 +131,9 @@ void LLLandmarksPanel::onSearchEdit(const std::string& string)  		if (NULL == inventory_list) continue;  		if (inventory_list->getFilter()) +		{  			filter_list(inventory_list, string); +		}  	}  	if (sFilterSubString != string) @@ -333,8 +334,12 @@ void LLLandmarksPanel::initLandmarksInventoryPanel()  	initLandmarksPanel(mLandmarksInventoryPanel); +	// Check if mLandmarksInventoryPanel is properly initialized and has a Filter created. +	// In case of a dummy widget getFilter() will return NULL.  	if (mLandmarksInventoryPanel->getFilter()) +	{  		mLandmarksInventoryPanel->setShowFolderState(LLInventoryFilter::SHOW_ALL_FOLDERS); +	}  	// subscribe to have auto-rename functionality while creating New Folder  	mLandmarksInventoryPanel->setSelectCallback(boost::bind(&LLInventoryPanel::onSelectionChange, mLandmarksInventoryPanel, _1, _2)); @@ -362,6 +367,8 @@ void LLLandmarksPanel::initLibraryInventoryPanel()  void LLLandmarksPanel::initLandmarksPanel(LLInventorySubTreePanel* inventory_list)  { +	// In case of a dummy widget further we have no Folder View widget and no Filter, +	// so further initialization leads to crash.  	if (!inventory_list->getFilter())  		return; @@ -388,8 +395,6 @@ void LLLandmarksPanel::initLandmarksPanel(LLInventorySubTreePanel* inventory_lis  void LLLandmarksPanel::initAccordion(const std::string& accordion_tab_name, LLInventorySubTreePanel* inventory_list)  {  	LLAccordionCtrlTab* accordion_tab = getChild<LLAccordionCtrlTab>(accordion_tab_name); -	if (!accordion_tab) -		return;  	mAccordionTabs.push_back(accordion_tab);  	accordion_tab->setDropDownStateChangedCallback( @@ -744,8 +749,8 @@ void LLLandmarksPanel::updateFilteredAccordions()  	for (accordion_tabs_t::const_iterator iter = mAccordionTabs.begin(); iter != mAccordionTabs.end(); ++iter)  	{  		accordion_tab = *iter; -		if (accordion_tab && !accordion_tab->getVisible()) -			accordion_tab->setVisible(TRUE); + +		accordion_tab->setVisible(TRUE);  		inventory_list = dynamic_cast<LLInventorySubTreePanel*> (accordion_tab->getAccordionView());  		if (NULL == inventory_list) continue; diff --git a/indra/newview/llpanelpeoplemenus.cpp b/indra/newview/llpanelpeoplemenus.cpp index 7dea5eaf67..57f3d86d53 100644 --- a/indra/newview/llpanelpeoplemenus.cpp +++ b/indra/newview/llpanelpeoplemenus.cpp @@ -97,7 +97,7 @@ LLContextMenu* NearbyMenu::createMenu()  		registrar.add("Avatar.Profile",			boost::bind(&LLAvatarActions::showProfile,				id));  		registrar.add("Avatar.AddFriend",		boost::bind(&LLAvatarActions::requestFriendshipDialog,	id));  		registrar.add("Avatar.IM",				boost::bind(&LLAvatarActions::startIM,					id)); -		registrar.add("Avatar.Call",			boost::bind(&LLAvatarActions::startIM,					id));	// *TODO: unimplemented +		registrar.add("Avatar.Call",			boost::bind(&LLAvatarActions::startCall,				id));  		registrar.add("Avatar.OfferTeleport",	boost::bind(&NearbyMenu::offerTeleport,					this));  		registrar.add("Avatar.ShowOnMap",		boost::bind(&LLAvatarActions::startIM,					id));	// *TODO: unimplemented  		registrar.add("Avatar.Share",			boost::bind(&LLAvatarActions::startIM,					id));	// *TODO: unimplemented @@ -117,7 +117,7 @@ LLContextMenu* NearbyMenu::createMenu()  		// registrar.add("Avatar.AddFriend",	boost::bind(&LLAvatarActions::requestFriendshipDialog,	mUUIDs)); // *TODO: unimplemented  		registrar.add("Avatar.IM",			boost::bind(&LLAvatarActions::startConference,			mUUIDs)); -		// registrar.add("Avatar.Call",		boost::bind(&LLAvatarActions::startConference,			mUUIDs)); // *TODO: unimplemented +		registrar.add("Avatar.Call",		boost::bind(&LLAvatarActions::startAdhocCall,			mUUIDs));  		// registrar.add("Avatar.Share",		boost::bind(&LLAvatarActions::startIM,					mUUIDs)); // *TODO: unimplemented  		// registrar.add("Avatar.Pay",		boost::bind(&LLAvatarActions::pay,						mUUIDs)); // *TODO: unimplemented  		enable_registrar.add("Avatar.EnableItem",	boost::bind(&NearbyMenu::enableContextMenuItem,	this, _2)); diff --git a/indra/newview/llpanelplaces.cpp b/indra/newview/llpanelplaces.cpp index cd4bcb6c0a..f7f3c5830d 100644 --- a/indra/newview/llpanelplaces.cpp +++ b/indra/newview/llpanelplaces.cpp @@ -261,6 +261,10 @@ void LLPanelPlaces::onOpen(const LLSD& key)  		}  		mLandmarkInfo->displayParcelInfo(LLUUID(), mPosGlobal); + +		// Disable Save button because there is no item to save yet. +		// The button will be enabled in onLandmarkLoaded callback. +		mSaveBtn->setEnabled(FALSE);  	}  	else if (mPlaceInfoType == LANDMARK_INFO_TYPE)  	{ @@ -380,11 +384,16 @@ void LLPanelPlaces::onLandmarkLoaded(LLLandmark* landmark)  	landmark->getRegionID(region_id);  	landmark->getGlobalPos(mPosGlobal);  	mLandmarkInfo->displayParcelInfo(region_id, mPosGlobal); + +	mSaveBtn->setEnabled(TRUE);  }  void LLPanelPlaces::onFilterEdit(const std::string& search_string, bool force_filter)  { -	if (force_filter || LLPanelPlacesTab::sFilterSubString != search_string) +	if (!mActivePanel) +		return; + +	if (force_filter || mActivePanel->getFilterSubString() != search_string)  	{  		std::string string = search_string; @@ -392,8 +401,7 @@ void LLPanelPlaces::onFilterEdit(const std::string& search_string, bool force_fi  		LLStringUtil::toUpper(string);  		LLStringUtil::trimHead(string); -		if (mActivePanel) -			mActivePanel->onSearchEdit(string); +		mActivePanel->onSearchEdit(string);  	}  } @@ -403,7 +411,7 @@ void LLPanelPlaces::onTabSelected()  	if (!mActivePanel)  		return; -	onFilterEdit(LLPanelPlacesTab::sFilterSubString, true); +	onFilterEdit(mActivePanel->getFilterSubString(), true);  	mActivePanel->updateVerbs();  } @@ -814,7 +822,7 @@ void LLPanelPlaces::changedInventory(U32 mask)  	// Filter applied to show all items.  	if (mActivePanel) -		mActivePanel->onSearchEdit(LLPanelPlacesTab::sFilterSubString); +		mActivePanel->onSearchEdit(mActivePanel->getFilterSubString());  	// we don't need to monitor inventory changes anymore,  	// so remove the observer diff --git a/indra/newview/llpanelplacestab.h b/indra/newview/llpanelplacestab.h index b4d839452e..ce77a42259 100644 --- a/indra/newview/llpanelplacestab.h +++ b/indra/newview/llpanelplacestab.h @@ -56,13 +56,15 @@ public:  										const LLUUID& snapshot_id,  										bool teleport); -public: -	// Search string for filtering landmarks and teleport history locations -	static std::string		sFilterSubString; +	const std::string& getFilterSubString() { return sFilterSubString; } +	void setFilterSubString(const std::string& string) { sFilterSubString = string; }  protected:  	LLButton*				mTeleportBtn;  	LLButton*				mShowOnMapBtn; + +	// Search string for filtering landmarks and teleport history locations +	static std::string		sFilterSubString;  };  #endif //LL_LLPANELPLACESTAB_H diff --git a/indra/newview/llscriptfloater.cpp b/indra/newview/llscriptfloater.cpp index 155172128b..088884178b 100644 --- a/indra/newview/llscriptfloater.cpp +++ b/indra/newview/llscriptfloater.cpp @@ -62,15 +62,15 @@ LLUUID notification_id_to_object_id(const LLUUID& notification_id)  //////////////////////////////////////////////////////////////////////////  LLScriptFloater::LLScriptFloater(const LLSD& key) -: LLTransientDockableFloater(NULL, true, key) +: LLDockableFloater(NULL, true, key)  , mScriptForm(NULL) -, mObjectId(key.asUUID())  {  }  bool LLScriptFloater::toggle(const LLUUID& object_id)  { -	LLScriptFloater* floater = LLFloaterReg::findTypedInstance<LLScriptFloater>("script_floater", object_id); +	LLUUID notification_id = LLScriptFloaterManager::getInstance()->findNotificationId(object_id); +	LLScriptFloater* floater = LLFloaterReg::findTypedInstance<LLScriptFloater>("script_floater", notification_id);  	// show existing floater  	if(floater) @@ -97,7 +97,10 @@ bool LLScriptFloater::toggle(const LLUUID& object_id)  LLScriptFloater* LLScriptFloater::show(const LLUUID& object_id)  { -	LLScriptFloater* floater = LLFloaterReg::showTypedInstance<LLScriptFloater>("script_floater", object_id); +	LLUUID notification_id = LLScriptFloaterManager::getInstance()->findNotificationId(object_id); +	 +	LLScriptFloater* floater = LLFloaterReg::showTypedInstance<LLScriptFloater>("script_floater", notification_id); +	floater->setObjectId(object_id);  	floater->createForm(object_id);  	if (floater->getDockControl() == NULL) @@ -156,19 +159,22 @@ void LLScriptFloater::createForm(const LLUUID& object_id)  void LLScriptFloater::onClose(bool app_quitting)  { -	LLScriptFloaterManager::getInstance()->removeNotificationByObjectId(getObjectId()); +	if(getObjectId().notNull()) +	{ +		LLScriptFloaterManager::getInstance()->removeNotificationByObjectId(getObjectId()); +	}  }  void LLScriptFloater::setDocked(bool docked, bool pop_on_undock /* = true */)  { -	LLTransientDockableFloater::setDocked(docked, pop_on_undock); +	LLDockableFloater::setDocked(docked, pop_on_undock);  	hideToastsIfNeeded();  }  void LLScriptFloater::setVisible(BOOL visible)  { -	LLTransientDockableFloater::setVisible(visible); +	LLDockableFloater::setVisible(visible);  	hideToastsIfNeeded();  } @@ -206,7 +212,7 @@ void LLScriptFloaterManager::onAddNotification(const LLUUID& notification_id)  	script_notification_map_t::iterator it = mNotifications.find(object_id);  	if(it != mNotifications.end())  	{ -		onRemoveNotification(notification_id); +		onRemoveNotification(it->second.notification_id);  	}  	LLNotificationData nd = {notification_id}; @@ -228,7 +234,7 @@ void LLScriptFloaterManager::onAddNotification(const LLUUID& notification_id)  void LLScriptFloaterManager::onRemoveNotification(const LLUUID& notification_id)  { -	LLUUID object_id = notification_id_to_object_id(notification_id); +	LLUUID object_id = findObjectId(notification_id);  	if(object_id.isNull())  	{  		llwarns << "Invalid notification, no object id" << llendl; @@ -241,22 +247,24 @@ void LLScriptFloaterManager::onRemoveNotification(const LLUUID& notification_id)  	LLUUID channel_id(gSavedSettings.getString("NotificationChannelUUID"));  	LLScreenChannel* channel = dynamic_cast<LLScreenChannel*>  		(LLChannelManager::getInstance()->findChannelByID(channel_id)); -	if(channel) +	LLUUID n_toast_id = findNotificationToastId(object_id); +	if(channel && n_toast_id.notNull())  	{ -		channel->killToastByNotificationID(findNotificationToastId(object_id)); +		channel->killToastByNotificationID(n_toast_id);  	} -	mNotifications.erase(object_id); -  	// remove related chiclet  	LLBottomTray::getInstance()->getChicletPanel()->removeChiclet(object_id);  	// close floater -	LLScriptFloater* floater = LLFloaterReg::findTypedInstance<LLScriptFloater>("script_floater", object_id); +	LLScriptFloater* floater = LLFloaterReg::findTypedInstance<LLScriptFloater>("script_floater", notification_id);  	if(floater)  	{ +		floater->setObjectId(LLUUID::null);  		floater->closeFloater();  	} + +	mNotifications.erase(object_id);  }  void LLScriptFloaterManager::removeNotificationByObjectId(const LLUUID& object_id) @@ -301,6 +309,22 @@ void LLScriptFloaterManager::setNotificationToastId(const LLUUID& object_id, con  	}  } +LLUUID LLScriptFloaterManager::findObjectId(const LLUUID& notification_id) +{ +	if(notification_id.notNull()) +	{ +		script_notification_map_t::const_iterator it = mNotifications.begin(); +		for(; mNotifications.end() != it; ++it) +		{ +			if(notification_id == it->second.notification_id) +			{ +				return it->first; +			} +		} +	} +	return LLUUID::null; +} +  LLUUID LLScriptFloaterManager::findNotificationId(const LLUUID& object_id)  {  	script_notification_map_t::const_iterator it = mNotifications.find(object_id); diff --git a/indra/newview/llscriptfloater.h b/indra/newview/llscriptfloater.h index 0e1a7f36b7..8b5a266691 100644 --- a/indra/newview/llscriptfloater.h +++ b/indra/newview/llscriptfloater.h @@ -43,6 +43,9 @@ class LLToastNotifyPanel;   */  class LLScriptFloaterManager : public LLSingleton<LLScriptFloaterManager>  { +	// *TODO +	// LLScriptFloaterManager and LLScriptFloater will need some refactoring after we  +	// know how script notifications should look like.  public:  	/** @@ -69,6 +72,8 @@ public:  	 */  	void toggleScriptFloater(const LLUUID& object_id); +	LLUUID findObjectId(const LLUUID& notification_id); +  	LLUUID findNotificationId(const LLUUID& object_id);  	LLUUID findNotificationToastId(const LLUUID& object_id); @@ -102,7 +107,7 @@ private:   * LLScriptFloater will create script form based on notification data and    * will auto fit the form.   */ -class LLScriptFloater : public LLTransientDockableFloater +class LLScriptFloater : public LLDockableFloater  {  public: @@ -125,6 +130,8 @@ public:  	const LLUUID& getObjectId() { return mObjectId; } +	void setObjectId(const LLUUID& id) { mObjectId = id; } +  	/**  	 * Close notification if script floater is closed.  	 */ @@ -154,8 +161,6 @@ protected:  	 */  	static void hideToastsIfNeeded(); -	void setObjectId(const LLUUID& id) { mObjectId = id; } -  private:  	LLToastNotifyPanel* mScriptForm;  	LLUUID mObjectId; diff --git a/indra/newview/llteleporthistory.cpp b/indra/newview/llteleporthistory.cpp index cc4689062e..1315887c37 100644 --- a/indra/newview/llteleporthistory.cpp +++ b/indra/newview/llteleporthistory.cpp @@ -167,7 +167,10 @@ void LLTeleportHistory::onHistoryChanged()  void LLTeleportHistory::purgeItems()  { -	mItems.erase(mItems.begin(), mItems.end()-1); +	if (mItems.size() > 0) +	{ +		mItems.erase(mItems.begin(), mItems.end()-1); +	}  	// reset the count  	mRequestedItem = -1;  	mCurrentItem = 0; diff --git a/indra/newview/lltexturefetch.cpp b/indra/newview/lltexturefetch.cpp index 9bb2a4ad0a..ef49d7f057 100644 --- a/indra/newview/lltexturefetch.cpp +++ b/indra/newview/lltexturefetch.cpp @@ -736,7 +736,8 @@ bool LLTextureFetchWorker::doWork(S32 param)  			}  			else  			{ -				llwarns << "Region not found for host: " << mHost << llendl; +				// This will happen if not logged in or if a region deoes not have HTTP Texture enabled +				//llwarns << "Region not found for host: " << mHost << llendl;  			}  		}  		if (!mUrl.empty()) @@ -943,11 +944,14 @@ bool LLTextureFetchWorker::doWork(S32 param)  		{  			llerrs << "Decode entered with invalid mFormattedImage. ID = " << mID << llendl;  		} +		if (mLoadedDiscard < 0) +		{ +			llerrs << "Decode entered with invalid mLoadedDiscard. ID = " << mID << llendl; +		}  		setPriority(LLWorkerThread::PRIORITY_LOW | mWorkPriority); // Set priority first since Responder may change it  		mRawImage = NULL;  		mAuxImage = NULL;  		llassert_always(mFormattedImage.notNull()); -		llassert_always(mLoadedDiscard >= 0);  		S32 discard = mHaveAllData ? 0 : mLoadedDiscard;  		U32 image_priority = LLWorkerThread::PRIORITY_NORMAL | mWorkPriority;  		mDecoded  = FALSE; diff --git a/indra/newview/llviewerfloaterreg.cpp b/indra/newview/llviewerfloaterreg.cpp index b5454e7298..7c9bd582dd 100644 --- a/indra/newview/llviewerfloaterreg.cpp +++ b/indra/newview/llviewerfloaterreg.cpp @@ -250,7 +250,6 @@ void LLViewerFloaterReg::registerFloaters()  	LLFloaterReg::add("upload_sound", "floater_sound_preview.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSoundPreview>, "upload");  	LLFloaterReg::add("volume_pulldown", "floater_volume_pulldown.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterVolumePulldown>); -	LLFloaterReg::add("voice_call", "floater_call.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterCall>);  	LLFloaterReg::add("voice_controls", "floater_voice_controls.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLCallFloater>);  	LLFloaterReg::add("whitelist_entry", "floater_whitelist_entry.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterWhiteListEntry>);	 diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index 2ae8aca6ad..85b6051502 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -5519,17 +5519,6 @@ void process_script_dialog(LLMessageSystem* msg, void**)  		notification = LLNotifications::instance().add(  			LLNotification::Params("ScriptDialogGroup").substitutions(args).payload(payload).form_elements(form.asLLSD()));  	} - -	// "ScriptDialog" and "ScriptDialogGroup" are handles by LLScriptFloaterManager. -	// We want to inform user that there is a script floater, lets add "ScriptToast" -	LLNotification::Params p("ScriptToast"); -	p.substitutions(args).payload(payload).functor.function(boost::bind( -		LLScriptFloaterManager::onToastButtonClick, _1, _2)); - -	notification = LLNotifications::instance().add(p); - -	LLScriptFloaterManager::getInstance()->setNotificationToastId( -		object_id, notification->getID());  }  //--------------------------------------------------------------------------- diff --git a/indra/newview/llvoicechannel.cpp b/indra/newview/llvoicechannel.cpp index a0396bc790..608060174a 100644 --- a/indra/newview/llvoicechannel.cpp +++ b/indra/newview/llvoicechannel.cpp @@ -408,28 +408,6 @@ void LLVoiceChannel::doSetState(const EState& new_state)  		mStateChangedCallback(old_state, mState);  } -void LLVoiceChannel::toggleCallWindowIfNeeded(EState state) -{ -	LLFloaterCall* floater = dynamic_cast<LLFloaterCall*>(LLFloaterReg::getInstance("voice_call", mSessionID)); -	if (!floater) -		return; - -	if (state == STATE_CONNECTED) -	{ -		floater->init(mSessionID); -		floater->openFloater(mSessionID); -	} -	// By checking that current state is CONNECTED we make sure that the call window -	// has been shown, hence there's something to hide. This helps when user presses -	// the "End call" button right after initiating the call. -	// *TODO: move this check to LLFloaterCall? -	else if (state == STATE_HUNG_UP && mState == STATE_CONNECTED) -	{ -		floater->reset(); -		floater->closeFloater(); -	} -} -  //static  void LLVoiceChannel::initClass()  { @@ -630,9 +608,6 @@ void LLVoiceChannelGroup::handleError(EStatusType status)  void LLVoiceChannelGroup::setState(EState state)  { -	// HACK: Open/close the call window if needed. -	toggleCallWindowIfNeeded(state); -  	switch(state)  	{  	case STATE_RINGING: @@ -886,9 +861,6 @@ void LLVoiceChannelP2P::setSessionHandle(const std::string& handle, const std::s  void LLVoiceChannelP2P::setState(EState state)  { -	// *HACK: Open/close the call window if needed. -	toggleCallWindowIfNeeded(state); -	  	llinfos << "P2P CALL STATE CHANGE: incoming=" << int(mReceivedCall) << " oldstate=" << mState << " newstate=" << state << llendl;  	if (mReceivedCall) // incoming call diff --git a/indra/newview/llvoicechannel.h b/indra/newview/llvoicechannel.h index fe0114d687..1bed329ba2 100644 --- a/indra/newview/llvoicechannel.h +++ b/indra/newview/llvoicechannel.h @@ -101,7 +101,6 @@ protected:  	 * Use this method if you want mStateChangedCallback to be executed while state is changed  	 */  	void doSetState(const EState& state); -	void toggleCallWindowIfNeeded(EState state);  	void setURI(std::string uri);  	std::string	mURI; diff --git a/indra/newview/skins/default/xui/en/menu_people_nearby.xml b/indra/newview/skins/default/xui/en/menu_people_nearby.xml index 643336cf6c..c3a2540b2e 100644 --- a/indra/newview/skins/default/xui/en/menu_people_nearby.xml +++ b/indra/newview/skins/default/xui/en/menu_people_nearby.xml @@ -27,7 +27,6 @@           function="Avatar.IM" />      </menu_item_call>      <menu_item_call -     enabled="false"       label="Call"       layout="topleft"       name="Call"> diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml index ae8a1599a9..37136af680 100644 --- a/indra/newview/skins/default/xui/en/menu_viewer.xml +++ b/indra/newview/skins/default/xui/en/menu_viewer.xml @@ -3268,6 +3268,17 @@          </menu>          <menu_item_separator           layout="topleft" /> +        <menu_item_check +         label="HTTP Textures" +         layout="topleft" +         name="HTTP Textures"> +            <menu_item_check.on_check +             function="CheckControl" +             parameter="ImagePipelineUseHTTP" /> +            <menu_item_check.on_click +             function="ToggleControl" +             parameter="ImagePipelineUseHTTP" /> +        </menu_item_check>          <menu_item_call           label="Compress Images"           layout="topleft" diff --git a/indra/newview/skins/default/xui/en/panel_my_profile.xml b/indra/newview/skins/default/xui/en/panel_my_profile.xml index fe3e010cf9..3c87331199 100644 --- a/indra/newview/skins/default/xui/en/panel_my_profile.xml +++ b/indra/newview/skins/default/xui/en/panel_my_profile.xml @@ -416,6 +416,7 @@           left="10"           label="Edit Profile"           name="edit_profile_btn" +         tool_tip="Edit your personal information"           width="130" />          <button           follows="bottom|right" @@ -423,6 +424,7 @@           label="Edit Appearance"           left_pad="10"           name="edit_appearance_btn" +         tool_tip="Create/edit your appearance: physical data, clothes and etc."           right="-10"           width="130" />   </panel> diff --git a/indra/newview/skins/default/xui/en/panel_picks.xml b/indra/newview/skins/default/xui/en/panel_picks.xml index 4c2bd67337..52bc72fe86 100644 --- a/indra/newview/skins/default/xui/en/panel_picks.xml +++ b/indra/newview/skins/default/xui/en/panel_picks.xml @@ -106,7 +106,7 @@               layout="topleft"               left_pad="15"               name="new_btn" -             tool_tip="Create new pick at current location" +             tool_tip="Create new pick or classified at current location"               top="5"               width="18" />              <button @@ -138,6 +138,7 @@           left="5"           name="info_btn"           tab_stop="false" +         tool_tip="Show pic information"           top="0"           width="55" />          <button @@ -149,6 +150,7 @@           left_pad="5"           name="teleport_btn"           tab_stop="false" +         tool_tip="Teleport to the corresponding area"           top="0"           width="77" />          <button @@ -160,6 +162,7 @@           left_pad="5"           name="show_on_map_btn"           tab_stop="false" +         tool_tip="Show corresponding area on the world map"           top="0"           width="50" />          </panel> diff --git a/indra/newview/skins/default/xui/en/panel_profile.xml b/indra/newview/skins/default/xui/en/panel_profile.xml index 947bb67152..6be203ef9c 100644 --- a/indra/newview/skins/default/xui/en/panel_profile.xml +++ b/indra/newview/skins/default/xui/en/panel_profile.xml @@ -287,7 +287,7 @@           mouse_opaque="false"           name="add_friend"           top="5" -         width="76" /> +         width="77" />          <button           follows="bottom|left"           height="19" @@ -296,7 +296,7 @@           name="im"           top="5"           left_pad="5" -         width="31" /> +         width="33" />          <button           follows="bottom|left"           height="19" @@ -315,7 +315,7 @@           name="show_on_map_btn"           top="5"           left_pad="5" -         width="42" /> +         width="44" />          <button           follows="bottom|left"           height="19" @@ -324,7 +324,7 @@           name="teleport"           left_pad="5"           top="5" -         width="64" /> +         width="67" />          <button           follows="bottom|right"           height="19" diff --git a/indra/viewer_components/login/tests/lllogin_test.cpp b/indra/viewer_components/login/tests/lllogin_test.cpp index 56c21016bd..6255f7ed15 100644 --- a/indra/viewer_components/login/tests/lllogin_test.cpp +++ b/indra/viewer_components/login/tests/lllogin_test.cpp @@ -231,6 +231,7 @@ namespace tut  		ensure_equals("Online state", listener.lastEvent()["state"].asString(), "online");  	} +	/*      template<> template<>      void llviewerlogin_object::test<2>()      { @@ -416,7 +417,8 @@ namespace tut  		ensure_equals("Failed to offline", listener.lastEvent()["state"].asString(), "offline");  	} -    template<> template<> + *FIX:Mani Disabled unit boost::coro is patched  +	template<> template<>      void llviewerlogin_object::test<5>()      {          DEBUG; @@ -451,4 +453,5 @@ namespace tut  		ensure_equals("SRV Failure", listener.lastEvent()["change"].asString(), "fail.login");   	} +*/  } | 
