diff options
78 files changed, 522 insertions, 269 deletions
| diff --git a/etc/message.xml b/etc/message.xml index da08e12aa1..c17ae3656d 100644 --- a/etc/message.xml +++ b/etc/message.xml @@ -50,7 +50,7 @@  				<key>OpenCircuit</key>  				<map>  					<key>flavor</key> -					<string>template</string> +					<string>llsd</string>  					<key>trusted-sender</key>  					<boolean>false</boolean>  				</map> diff --git a/indra/llrender/llimagegl.cpp b/indra/llrender/llimagegl.cpp index f8d7ea00e0..d873005fd9 100644 --- a/indra/llrender/llimagegl.cpp +++ b/indra/llrender/llimagegl.cpp @@ -428,49 +428,56 @@ LLImageGL::~LLImageGL()  void LLImageGL::init(BOOL usemipmaps)  { -#ifdef DEBUG_MISS -	mMissed				= FALSE; -#endif +	// keep these members in the same order as declared in llimagehl.h +	// so that it is obvious by visual inspection if we forgot to +	// init a field. + +	mTextureMemory = 0; +	mLastBindTime = 0.f; + +	mPickMask = NULL; +	mUseMipMaps = usemipmaps; +	mHasExplicitFormat = FALSE; +	mAutoGenMips = FALSE; + +	mIsMask = FALSE; +	mNeedsAlphaAndPickMask = TRUE ; +	mAlphaStride = 0 ; +	mAlphaOffset = 0 ; + +	mGLTextureCreated = FALSE ; +	mTexName = 0; +	mWidth = 0; +	mHeight	= 0; +	mCurrentDiscardLevel = -1;	 -	mPickMask		  = NULL; -	mTextureMemory    = 0; -	mLastBindTime     = 0.f; +	mDiscardLevelInAtlas = -1 ; +	mTexelsInAtlas = 0 ; +	mTexelsInGLTexture = 0 ; -	mTarget			  = GL_TEXTURE_2D; -	mBindTarget		  = LLTexUnit::TT_TEXTURE; -	mUseMipMaps		  = usemipmaps; -	mHasMipMaps		  = false; -	mAutoGenMips	  = FALSE; -	mTexName          = 0; -	mIsResident       = 0; +	mTarget = GL_TEXTURE_2D; +	mBindTarget = LLTexUnit::TT_TEXTURE; +	mHasMipMaps = false; + +	mIsResident = 0; + +	mComponents = 0; +	mMaxDiscardLevel = MAX_DISCARD_LEVEL;  	mTexOptionsDirty = true;  	mAddressMode = LLTexUnit::TAM_WRAP;  	mFilterOption = LLTexUnit::TFO_ANISOTROPIC; -	mWidth				= 0; -	mHeight				= 0; -	mComponents			= 0; -	 -	mMaxDiscardLevel = MAX_DISCARD_LEVEL; -	mCurrentDiscardLevel = -1;	  	mFormatInternal = -1;  	mFormatPrimary = (LLGLenum) 0;  	mFormatType = GL_UNSIGNED_BYTE;  	mFormatSwapBytes = FALSE; -	mHasExplicitFormat = FALSE; - -	mGLTextureCreated = FALSE ; -	mIsMask = FALSE; -	mCategory = -1 ; -	mAlphaStride = 0 ; -	mAlphaOffset = 0 ; -	mNeedsAlphaAndPickMask = TRUE ; +#ifdef DEBUG_MISS +	mMissed	= FALSE; +#endif -	mDiscardLevelInAtlas = -1 ; -	mTexelsInAtlas = 0 ; -	mTexelsInGLTexture = 0 ; +	mCategory = -1;  }  void LLImageGL::cleanup() @@ -1669,7 +1676,7 @@ void LLImageGL::updatePickMask(S32 width, S32 height, const U8* data_in)  	}  	if (mFormatType != GL_UNSIGNED_BYTE || -		mFormatPrimary != GL_RGBA) +	    mFormatPrimary != GL_RGBA)  	{  		//cannot generate a pick mask for this texture  		delete [] mPickMask; diff --git a/indra/llrender/llimagegl.h b/indra/llrender/llimagegl.h index 937065043c..facfb7bd62 100644 --- a/indra/llrender/llimagegl.h +++ b/indra/llrender/llimagegl.h @@ -224,7 +224,7 @@ protected:  	bool	mTexOptionsDirty;  	LLTexUnit::eTextureAddressMode		mAddressMode;	// Defaults to TAM_WRAP -	LLTexUnit::eTextureFilterOptions	mFilterOption;	// Defaults to TFO_TRILINEAR +	LLTexUnit::eTextureFilterOptions	mFilterOption;	// Defaults to TFO_ANISOTROPIC  	LLGLint  mFormatInternal; // = GL internalformat  	LLGLenum mFormatPrimary;  // = GL format (pixel data format) diff --git a/indra/llui/llaccordionctrltab.cpp b/indra/llui/llaccordionctrltab.cpp index 9d6ba57c29..4bfe44135a 100644 --- a/indra/llui/llaccordionctrltab.cpp +++ b/indra/llui/llaccordionctrltab.cpp @@ -157,7 +157,8 @@ void LLAccordionCtrlTab::LLAccordionCtrlTabHeader::draw()  	// because the user's mental model of focus is that it goes away after  	// the accordion is closed.  	if (getParent()->hasFocus() -		&& !(collapsible && !expanded)) +		/*&& !(collapsible && !expanded)*/ // WHY?? +		)  	{  		mImageHeaderFocused->draw(0,0,width,height);  	} diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp index 3734a22f7e..4f519afa06 100644 --- a/indra/llui/llfloater.cpp +++ b/indra/llui/llfloater.cpp @@ -2388,10 +2388,12 @@ void LLFloaterView::adjustToFitScreen(LLFloater* floater, BOOL allow_partial_out  			new_height = llmax(new_height, min_height);  			LLRect new_rect; -			new_rect.setLeftTopAndSize(view_rect.mTop,view_rect.mLeft,new_width, new_height); +			new_rect.setLeftTopAndSize(view_rect.mLeft,view_rect.mTop,new_width, new_height);  			floater->reshape( new_width, new_height, TRUE );  			floater->setRect(new_rect); + +			floater->translateIntoRect( getLocalRect(), false );  		}  	} diff --git a/indra/llui/llscrolllistctrl.cpp b/indra/llui/llscrolllistctrl.cpp index a53a30b501..4e84013db0 100644 --- a/indra/llui/llscrolllistctrl.cpp +++ b/indra/llui/llscrolllistctrl.cpp @@ -142,6 +142,7 @@ LLScrollListCtrl::Params::Params()  	contents(""),  	scroll_bar_bg_visible("scroll_bar_bg_visible"),  	scroll_bar_bg_color("scroll_bar_bg_color") +	, border("border")  {  	name = "scroll_list";  	mouse_opaque = true; @@ -231,10 +232,8 @@ LLScrollListCtrl::LLScrollListCtrl(const LLScrollListCtrl::Params& p)  	if (p.has_border)  	{  		LLRect border_rect = getLocalRect(); -		LLViewBorder::Params params; -		params.name("dig border"); +		LLViewBorder::Params params = p.border;  		params.rect(border_rect); -		params.bevel_style(LLViewBorder::BEVEL_IN);  		mBorder = LLUICtrlFactory::create<LLViewBorder> (params);  		addChild(mBorder);  	} diff --git a/indra/llui/llscrolllistctrl.h b/indra/llui/llscrolllistctrl.h index 78bc60db6e..907dc90bea 100644 --- a/indra/llui/llscrolllistctrl.h +++ b/indra/llui/llscrolllistctrl.h @@ -51,6 +51,7 @@  #include "lldate.h"  #include "llscrolllistitem.h"  #include "llscrolllistcolumn.h" +#include "llviewborder.h"  class LLScrollListCell;  class LLTextBox; @@ -109,6 +110,8 @@ public:  							scroll_bar_bg_color;  		Optional<Contents> contents; + +		Optional<LLViewBorder::Params> border;  		Params();  	}; diff --git a/indra/media_plugins/webkit/media_plugin_webkit.cpp b/indra/media_plugins/webkit/media_plugin_webkit.cpp index 084cdd9561..42d680ade6 100644 --- a/indra/media_plugins/webkit/media_plugin_webkit.cpp +++ b/indra/media_plugins/webkit/media_plugin_webkit.cpp @@ -175,6 +175,15 @@ private:  		}  		std::string application_dir = std::string( cwd ); +#if LL_DARWIN +	// When running under the Xcode debugger, there's a setting called "Break on Debugger()/DebugStr()" which defaults to being turned on. +	// This causes the environment variable USERBREAK to be set to 1, which causes these legacy calls to break into the debugger. +	// This wouldn't cause any problems except for the fact that the current release version of the Flash plugin has a call to Debugger() in it +	// which gets hit when the plugin is probed by webkit. +	// Unsetting the environment variable here works around this issue. +	unsetenv("USERBREAK"); +#endif +  #if LL_WINDOWS  		//*NOTE:Mani - On windows, at least, the component path is the  		// location of this dll's image file.  diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 4886deaede..ccafbae156 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -285,7 +285,7 @@        <key>Type</key>        <string>Boolean</string>        <key>Value</key> -      <integer>0</integer> +      <integer>1</integer>      </map>      <key>AudioStreamingMusic</key>      <map> @@ -296,7 +296,7 @@        <key>Type</key>        <string>Boolean</string>        <key>Value</key> -      <integer>0</integer> +      <integer>1</integer>      </map>      <key>AudioStreamingVideo</key>      <map> @@ -307,7 +307,7 @@        <key>Type</key>        <string>Boolean</string>        <key>Value</key> -      <integer>0</integer> +      <integer>1</integer>      </map>    <key>AuditTexture</key>    <map> @@ -1154,7 +1154,7 @@        <key>Type</key>        <string>S32</string>        <key>Value</key> -      <integer>1</integer> +      <integer>5</integer>      </map>      <key>CameraAngle</key>      <map> @@ -3629,7 +3629,7 @@        <key>Type</key>        <string>String</string>        <key>Value</key> -      <string>http://viewer-help.secondlife.com/[LANGUAGE]/[CHANNEL]/[VERSION]/[TOPIC]/[DEBUG_MODE]</string> +      <string>http://viewer-help.secondlife.com/[LANGUAGE]/[CHANNEL]/[VERSION]/[TOPIC][DEBUG_MODE]</string>      </map>      <key>HomeSidePanelURL</key>      <map> @@ -3686,17 +3686,6 @@        <key>Value</key>        <string />      </map> -    <key>IMInChat</key> -    <map> -      <key>Comment</key> -      <string>Copy IM into chat console</string> -      <key>Persist</key> -      <integer>1</integer> -      <key>Type</key> -      <string>Boolean</string> -      <key>Value</key> -      <integer>0</integer> -    </map>      <key>IMShowTimestamps</key>      <map>        <key>Comment</key> diff --git a/indra/newview/llcallfloater.cpp b/indra/newview/llcallfloater.cpp index f909c9e6c1..21496aaa89 100644 --- a/indra/newview/llcallfloater.cpp +++ b/indra/newview/llcallfloater.cpp @@ -54,6 +54,7 @@  #include "lllayoutstack.h"  static void get_voice_participants_uuids(std::vector<LLUUID>& speakers_uuids); +void reshape_floater(LLCallFloater* floater, S32 delta_height);  class LLNonAvatarCaller : public LLAvatarListItem  { @@ -314,8 +315,33 @@ void LLCallFloater::updateSession()  	//hide "Leave Call" button for nearby chat  	bool is_local_chat = mVoiceType == VC_LOCAL_CHAT; -	childSetVisible("leave_call_btn_panel", !is_local_chat); -	 + +	LLPanel* leave_panel = findChild<LLPanel>("leave_call_btn_panel"); +	if (leave_panel) +	{ +		S32 delta = 0; +		bool visible = !is_local_chat; +		if ((bool)leave_panel->getVisible() != visible) +		{ +			delta = visible +				? leave_panel->getRect().getHeight() +				: -leave_panel->getRect().getHeight(); +		} +		leave_panel->setVisible(visible); +		if (delta) +		{ +			LLLayoutStack* stack = getChild<LLLayoutStack>("my_call_stack"); +			BOOL animate = stack->getAnimate(); +			// Disable animation to prevent layout updating in several frames. +			// We need this to get work reshapeToFitContent properly, otherwise +			// the height of leave_call_btn_panel won't be completely included. +			stack->setAnimate(FALSE); +			reshape_floater(this, delta); +			// Restore animate state. +			stack->setAnimate(animate); +		} +	} +  	refreshParticipantList();  	updateAgentModeratorState(); diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp index 977f5c2bd0..a46cd84b60 100644 --- a/indra/newview/llchathistory.cpp +++ b/indra/newview/llchathistory.cpp @@ -609,3 +609,11 @@ void LLChatHistory::draw()  	LLUICtrl::draw();  } +void LLChatHistory::reshape(S32 width, S32 height, BOOL called_from_parent) +{ +	bool is_scrolled_to_end = mEditor->scrolledToEnd(); +	LLUICtrl::reshape( width, height, called_from_parent ); +	// update scroll +	if (is_scrolled_to_end) +		mEditor->setCursorAndScrollToEnd(); +} diff --git a/indra/newview/llchathistory.h b/indra/newview/llchathistory.h index 260015e2dc..f2d403f639 100644 --- a/indra/newview/llchathistory.h +++ b/indra/newview/llchathistory.h @@ -119,6 +119,7 @@ class LLChatHistory : public LLUICtrl  		 */  		void appendMessage(const LLChat& chat, const bool use_plain_text_chat_history = false, const LLStyle::Params& input_append_params = LLStyle::Params());  		/*virtual*/ void clear(); +		/*virtual*/ void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE);  	private:  		std::string mLastFromName; diff --git a/indra/newview/llchiclet.cpp b/indra/newview/llchiclet.cpp index f21fbbe6f5..8da207f887 100644 --- a/indra/newview/llchiclet.cpp +++ b/indra/newview/llchiclet.cpp @@ -47,6 +47,7 @@  #include "llnotificationsutil.h"  #include "lloutputmonitorctrl.h"  #include "llscriptfloater.h" +#include "llspeakers.h"  #include "lltextbox.h"  #include "llvoiceclient.h"  #include "llgroupmgr.h" @@ -1293,10 +1294,12 @@ void LLChicletPanel::onChicletClick(LLUICtrl*ctrl,const LLSD¶m)  void LLChicletPanel::removeChiclet(chiclet_list_t::iterator it)  { -	mScrollArea->removeChild(*it); +	LLChiclet* chiclet = *it; +	mScrollArea->removeChild(chiclet);  	mChicletList.erase(it);  	arrange(); +	chiclet->die();  }  void LLChicletPanel::removeChiclet(S32 index) diff --git a/indra/newview/llchiclet.h b/indra/newview/llchiclet.h index ae5b2148db..bb4846aa57 100644 --- a/indra/newview/llchiclet.h +++ b/indra/newview/llchiclet.h @@ -325,7 +325,7 @@ public:  	}; -	/*virtual*/ ~LLIMChiclet() {}; +	virtual ~LLIMChiclet() {};  	/**  	 * Sets IM session name. This name will be displayed in chiclet tooltip. diff --git a/indra/newview/llcompilequeue.cpp b/indra/newview/llcompilequeue.cpp index 72074955d1..47f1b7c9f5 100644 --- a/indra/newview/llcompilequeue.cpp +++ b/indra/newview/llcompilequeue.cpp @@ -446,10 +446,20 @@ void LLFloaterCompileQueue::scriptArrived(LLVFS *vfs, const LLUUID& asset_id,  		if( LL_ERR_ASSET_REQUEST_NOT_IN_DATABASE == status )  		{ +			//TODO* CHAT: how to show this? +			//LLSD args; +			//args["MESSAGE"] = LLTrans::getString("CompileQueueScriptNotFound); +			//LLNotificationsUtil::add("SystemMessage", args); +			  			buffer = LLTrans::getString("CompileQueueProblemDownloading") + (": ") + data->mScriptName;  		}  		else if (LL_ERR_INSUFFICIENT_PERMISSIONS == status)  		{ +			//TODO* CHAT: how to show this? +			//LLSD args; +			//args["MESSAGE"] = LLTrans::getString("CompileQueueScriptNotFound); +			//LLNotificationsUtil::add("SystemMessage", args); +  			buffer = LLTrans::getString("CompileQueueInsufficientPermFor") + (": ") + data->mScriptName;  		}  		else diff --git a/indra/newview/llfloaterchat.cpp b/indra/newview/llfloaterchat.cpp index fc1230d576..882d12f68e 100644 --- a/indra/newview/llfloaterchat.cpp +++ b/indra/newview/llfloaterchat.cpp @@ -311,7 +311,7 @@ void LLFloaterChat::onClickToggleShowMute(LLUICtrl* caller, void *data)  }  // Put a line of chat in all the right places -void LLFloaterChat::addChat(const LLChat& chat, BOOL from_instant_message, BOOL local_agent) +void LLFloaterChat::addChat(const LLChat& chat, BOOL local_agent)  {  	triggerAlerts(chat.mText); @@ -321,19 +321,7 @@ void LLFloaterChat::addChat(const LLChat& chat, BOOL from_instant_message, BOOL  	//if(chat.mSourceType == CHAT_SOURCE_AGENT && chat.mFromID.notNull())  	//	LLRecentPeople::instance().add(chat.mFromID); -	bool add_chat = true; -	bool log_chat = true; -	if(from_instant_message) -	{ -		if (!gSavedSettings.getBOOL("IMInChat")) -			add_chat = false; -		//log_chat = false; -} -	 -	if (add_chat) -	{ -		addChatHistory(chat, log_chat); -	} +	addChatHistory(chat, true);  }  // Moved from lltextparser.cpp to break llui/llaudio library dependency. diff --git a/indra/newview/llfloaterchat.h b/indra/newview/llfloaterchat.h index 84fc199bfa..4437a0a5c2 100644 --- a/indra/newview/llfloaterchat.h +++ b/indra/newview/llfloaterchat.h @@ -61,7 +61,7 @@ public:  	//  *TODO:Skinning - move these to LLChat (or LLViewerChat?)  	// Add chat to console and history list.  	// Color based on source, type, distance. -	static void addChat(const LLChat& chat, BOOL from_im = FALSE, BOOL local_agent = FALSE); +	static void addChat(const LLChat& chat, BOOL local_agent = FALSE);  	// Add chat to history alone.  	static void addChatHistory(const LLChat& chat, bool log_to_file = true); diff --git a/indra/newview/llfloatermediasettings.cpp b/indra/newview/llfloatermediasettings.cpp index 5cfd56193e..976af121ae 100644 --- a/indra/newview/llfloatermediasettings.cpp +++ b/indra/newview/llfloatermediasettings.cpp @@ -192,6 +192,9 @@ void LLFloaterMediaSettings::initValues( const LLSD& media_settings, bool editab  	sInstance->mPanelMediaSettingsGeneral->getValues( sInstance->mInitialValues );  	sInstance->mPanelMediaSettingsSecurity->getValues( sInstance->mInitialValues );  	sInstance->mPanelMediaSettingsPermissions->getValues( sInstance->mInitialValues ); +	 +	sInstance->mApplyBtn->setEnabled(editable); +	sInstance->mOKBtn->setEnabled(editable);  }  //////////////////////////////////////////////////////////////////////////////// @@ -266,8 +269,11 @@ const std::string LLFloaterMediaSettings::getHomeUrl()  // virtual   void LLFloaterMediaSettings::draw()  { -	// Set the enabled state of the "Apply" button if values changed -	childSetEnabled( "Apply", haveValuesChanged() ); +	if (NULL != mApplyBtn) +	{ +		// Set the enabled state of the "Apply" button if values changed +		mApplyBtn->setEnabled( haveValuesChanged() ); +	}  	LLFloater::draw();  } diff --git a/indra/newview/llfloatertools.cpp b/indra/newview/llfloatertools.cpp index 1287e14961..241497aeaf 100644 --- a/indra/newview/llfloatertools.cpp +++ b/indra/newview/llfloatertools.cpp @@ -1134,7 +1134,8 @@ void LLFloaterTools::getMediaState()  				}  				// XXX DISABLE this for now, because when the fetch finally   				// does come in, the state of this floater doesn't properly -				// update.  This needs more thought. +				// update.  Re-selecting fixes the problem, but there is  +				// contention as to whether this is a sufficient solution.  //				if (object->isMediaDataBeingFetched())  //				{  //					LL_INFOS("LLFloaterTools: media") diff --git a/indra/newview/llimfloater.cpp b/indra/newview/llimfloater.cpp index d7c60ff34e..5dc7f900e7 100644 --- a/indra/newview/llimfloater.cpp +++ b/indra/newview/llimfloater.cpp @@ -57,7 +57,7 @@  #include "lltransientfloatermgr.h"  #include "llinventorymodel.h"  #include "llrootview.h" - +#include "llspeakers.h"  LLIMFloater::LLIMFloater(const LLUUID& session_id) diff --git a/indra/newview/llimpanel.cpp b/indra/newview/llimpanel.cpp index fad28015a8..0e3b78df7f 100644 --- a/indra/newview/llimpanel.cpp +++ b/indra/newview/llimpanel.cpp @@ -40,6 +40,7 @@  #include "llfontgl.h"  #include "llrect.h"  #include "llerror.h" +#include "llmultifloater.h"  #include "llstring.h"  #include "message.h"  #include "lltextbox.h" diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp index b53d36a074..950a4001c7 100644 --- a/indra/newview/llimview.cpp +++ b/indra/newview/llimview.cpp @@ -42,46 +42,30 @@  #include "llhttpclient.h"  #include "llsdutil_math.h"  #include "llstring.h" +#include "lltrans.h"  #include "lluictrlfactory.h"  #include "llagent.h" +#include "llagentui.h" +#include "llappviewer.h"  #include "llavatariconctrl.h"  #include "llbottomtray.h"  #include "llcallingcard.h"  #include "llchat.h" -#include "llchiclet.h" -#include "llresmgr.h"  #include "llfloaterchatterbox.h" -#include "llavataractions.h" -#include "llhttpnode.h"  #include "llimfloater.h" -#include "llimpanel.h"  #include "llgroupiconctrl.h" -#include "llresizebar.h" -#include "lltabcontainer.h" -#include "llviewercontrol.h" -#include "llfloater.h"  #include "llmutelist.h" -#include "llresizehandle.h" -#include "llkeyboard.h" -#include "llui.h" -#include "llviewermenu.h" -#include "llcallingcard.h" -#include "lltoolbar.h" +#include "llrecentpeople.h"  #include "llviewermessage.h"  #include "llviewerwindow.h"  #include "llnotifications.h"  #include "llnotificationsutil.h"  #include "llnearbychat.h" -#include "llviewerregion.h" -#include "llvoicechannel.h" -#include "lltrans.h" -#include "llrecentpeople.h" -#include "llsyswellwindow.h" - -//#include "llfirstuse.h" -#include "llagentui.h" +#include "llspeakers.h" //for LLIMSpeakerMgr  #include "lltextutil.h" +#include "llviewercontrol.h" +  const static std::string IM_TIME("time");  const static std::string IM_TEXT("message"); @@ -1859,7 +1843,7 @@ void LLIncomingCallDialog::onStartIM(void* user_data)  void LLIncomingCallDialog::processCallResponse(S32 response)  { -	if (!gIMMgr) +	if (!gIMMgr || gDisconnected)  		return;  	LLUUID session_id = mPayload["session_id"].asUUID(); diff --git a/indra/newview/llimview.h b/indra/newview/llimview.h index e72bda6c2b..a226d66b12 100644 --- a/indra/newview/llimview.h +++ b/indra/newview/llimview.h @@ -33,22 +33,19 @@  #ifndef LL_LLIMVIEW_H  #define LL_LLIMVIEW_H -#include "lldarray.h" -#include "lldockablefloater.h" -#include "llspeakers.h" //for LLIMSpeakerMgr -#include "llimpanel.h" //for voice channels -#include "llmodaldialog.h"  #include "lldockablefloater.h"  #include "llinstantmessage.h" -#include "lluuid.h" -#include "llmultifloater.h" +  #include "lllogchat.h" +#include "llvoicechannel.h"  class LLFloaterChatterBox;  class LLUUID;  class LLFloaterIMPanel;  class LLFriendObserver;  class LLCallDialogManager;	 +class LLIMSpeakerMgr; +  class LLIMModel :  public LLSingleton<LLIMModel>  { diff --git a/indra/newview/lllandmarklist.cpp b/indra/newview/lllandmarklist.cpp index bd9d22c327..ce84474c05 100644 --- a/indra/newview/lllandmarklist.cpp +++ b/indra/newview/lllandmarklist.cpp @@ -59,6 +59,13 @@ LLLandmark* LLLandmarkList::getAsset(const LLUUID& asset_uuid, loaded_callback_t  	LLLandmark* landmark = get_ptr_in_map(mList, asset_uuid);  	if(landmark)  	{ +		LLVector3d dummy; +		if(cb && !landmark->getGlobalPos(dummy)) +		{ +			// landmark is not completely loaded yet +			loaded_callback_map_t::value_type vt(asset_uuid, cb); +			mLoadedCallbackMap.insert(vt); +		}  		return landmark;  	}  	else diff --git a/indra/newview/llmutelist.cpp b/indra/newview/llmutelist.cpp index cf4a08ce76..7ee4c64f8f 100644 --- a/indra/newview/llmutelist.cpp +++ b/indra/newview/llmutelist.cpp @@ -64,6 +64,7 @@  #include "llviewerwindow.h"  #include "llworld.h" //for particle system banning  #include "llchat.h" +#include "llimpanel.h"  #include "llimview.h"  #include "llnotifications.h"  #include "lluistring.h" diff --git a/indra/newview/llnamebox.cpp b/indra/newview/llnamebox.cpp index d434017804..cd810b9793 100644 --- a/indra/newview/llnamebox.cpp +++ b/indra/newview/llnamebox.cpp @@ -53,6 +53,7 @@ LLNameBox::LLNameBox(const Params& p)  {  	mNameID = LLUUID::null;  	mLink = p.link; +	mInitialValue = p.initial_value().asString();  	LLNameBox::sInstances.insert(this);  	setText(LLStringUtil::null);  } @@ -67,17 +68,23 @@ void LLNameBox::setNameID(const LLUUID& name_id, BOOL is_group)  	mNameID = name_id;  	std::string name; +	BOOL got_name = FALSE;  	if (!is_group)  	{ -		gCacheName->getFullName(name_id, name); +		got_name = gCacheName->getFullName(name_id, name);  	}  	else  	{ -		gCacheName->getGroupName(name_id, name); +		got_name = gCacheName->getGroupName(name_id, name);  	} -	setName(name, is_group); +	// Got the name already? Set it. +	// Otherwise it will be set later in refresh(). +	if (got_name) +		setName(name, is_group); +	else +		setText(mInitialValue);  }  void LLNameBox::refresh(const LLUUID& id, const std::string& firstname, diff --git a/indra/newview/llnamebox.h b/indra/newview/llnamebox.h index 0109525e85..48b54faec8 100644 --- a/indra/newview/llnamebox.h +++ b/indra/newview/llnamebox.h @@ -76,6 +76,7 @@ private:  private:  	LLUUID mNameID;  	BOOL mLink; +	std::string mInitialValue;  }; diff --git a/indra/newview/llnamelistctrl.cpp b/indra/newview/llnamelistctrl.cpp index 7e6145f578..6375362ae2 100644 --- a/indra/newview/llnamelistctrl.cpp +++ b/indra/newview/llnamelistctrl.cpp @@ -74,12 +74,12 @@ void LLNameListCtrl::addNameItem(const LLUUID& agent_id, EAddPosition pos,  {  	//llinfos << "LLNameListCtrl::addNameItem " << agent_id << llendl; -	std::string fullname; -	gCacheName->getFullName(agent_id, fullname); - -	fullname.append(suffix); +	NameItem item; +	item.value = agent_id; +	item.enabled = enabled; +	item.target = INDIVIDUAL; -	addStringUUIDItem(fullname, agent_id, pos, enabled); +	addNameItemRow(item, pos);  }  // virtual, public @@ -130,11 +130,12 @@ BOOL LLNameListCtrl::handleDragAndDrop(  	return handled;  } -void LLNameListCtrl::showAvatarInspector(const LLUUID& avatar_id) +void LLNameListCtrl::showInspector(const LLUUID& avatar_id, bool is_group)  { -	LLSD key; -	key["avatar_id"] = avatar_id; -	LLFloaterReg::showInstance("inspect_avatar", key); +	if (is_group) +		LLFloaterReg::showInstance("inspect_group", LLSD().with("group_id", avatar_id)); +	else +		LLFloaterReg::showInstance("inspect_avatar", LLSD().with("avatar_id", avatar_id));  }  //virtual @@ -147,7 +148,7 @@ BOOL LLNameListCtrl::handleToolTip(S32 x, S32 y, MASK mask)  		&& column_index == mNameColumnIndex)  	{  		// ...this is the column with the avatar name -		LLUUID avatar_id = hit_item->getValue().asUUID(); +		LLUUID avatar_id = getItemId(hit_item);  		if (avatar_id.notNull())  		{  			// ...valid avatar id @@ -164,9 +165,12 @@ BOOL LLNameListCtrl::handleToolTip(S32 x, S32 y, MASK mask)  				LLCoordGL pos( sticky_rect.mRight - 16, sticky_rect.mTop );  				LLPointer<LLUIImage> icon = LLUI::getUIImage("Info_Small"); +				// Should we show a group or an avatar inspector? +				bool is_group = hit_item->getValue()["is_group"].asBoolean(); +  				LLToolTip::Params params;  				params.background_visible( false ); -				params.click_callback( boost::bind(&LLNameListCtrl::showAvatarInspector, this, avatar_id) ); +				params.click_callback( boost::bind(&LLNameListCtrl::showInspector, this, avatar_id, is_group) );  				params.delay_time(0.0f);		// spawn instantly on hover  				params.image( icon );  				params.message(""); @@ -220,9 +224,22 @@ LLScrollListItem* LLNameListCtrl::addElement(const LLSD& element, EAddPosition p  } -LLScrollListItem* LLNameListCtrl::addNameItemRow(const LLNameListCtrl::NameItem& name_item, EAddPosition pos) +LLScrollListItem* LLNameListCtrl::addNameItemRow( +	const LLNameListCtrl::NameItem& name_item, +	EAddPosition pos, +	std::string& suffix)  { -	LLScrollListItem* item = LLScrollListCtrl::addRow(name_item, pos); +	LLUUID id = name_item.value().asUUID(); +	LLScrollListItem* item = NULL; + +	// Store item type so that we can invoke the proper inspector. +	// *TODO Vadim: Is there a more proper way of storing additional item data? +	{ +		LLNameListCtrl::NameItem name_item_(name_item); +		name_item_.value = LLSD().with("uuid", id).with("is_group", name_item.target() == GROUP); +		item = LLScrollListCtrl::addRow(name_item_, pos); +	} +  	if (!item) return NULL;  	// use supplied name by default @@ -230,7 +247,7 @@ LLScrollListItem* LLNameListCtrl::addNameItemRow(const LLNameListCtrl::NameItem&  	switch(name_item.target)  	{  	case GROUP: -		gCacheName->getGroupName(name_item.value().asUUID(), fullname); +		gCacheName->getGroupName(id, fullname);  		// fullname will be "nobody" if group not found  		break;  	case SPECIAL: @@ -239,7 +256,7 @@ LLScrollListItem* LLNameListCtrl::addNameItemRow(const LLNameListCtrl::NameItem&  	case INDIVIDUAL:  		{  			std::string name; -			if (gCacheName->getFullName(name_item.value().asUUID(), name)) +			if (gCacheName->getFullName(id, name))  			{  				fullname = name;  			} @@ -249,6 +266,12 @@ LLScrollListItem* LLNameListCtrl::addNameItemRow(const LLNameListCtrl::NameItem&  		break;  	} +	// Append optional suffix. +	if (!suffix.empty()) +	{ +		fullname.append(suffix); +	} +  	LLScrollListCell* cell = item->getColumn(mNameColumnIndex);  	if (cell)  	{ @@ -270,15 +293,24 @@ LLScrollListItem* LLNameListCtrl::addNameItemRow(const LLNameListCtrl::NameItem&  // public  void LLNameListCtrl::removeNameItem(const LLUUID& agent_id)  { -	BOOL item_exists = selectByID( agent_id ); -	if(item_exists) +	// Find the item specified with agent_id. +	S32 idx = -1; +	for (item_list::iterator it = getItemList().begin(); it != getItemList().end(); it++)  	{ -		S32 index = getItemIndex(getFirstSelected()); -		if(index >= 0) +		LLScrollListItem* item = *it; +		if (getItemId(item) == agent_id)  		{ -			deleteSingleItem(index); +			idx = getItemIndex(item); +			break;  		}  	} + +	// Remove it. +	if (idx >= 0) +	{ +		selectNthItem(idx); // not sure whether this is needed, taken from previous implementation +		deleteSingleItem(idx); +	}  }  // public @@ -303,7 +335,7 @@ void LLNameListCtrl::refresh(const LLUUID& id, const std::string& first,  	for (iter = getItemList().begin(); iter != getItemList().end(); iter++)  	{  		LLScrollListItem* item = *iter; -		if (item->getUUID() == id) +		if (getItemId(item) == id)  		{  			LLScrollListCell* cell = (LLScrollListCell*)item->getColumn(0);  			cell = item->getColumn(mNameColumnIndex); @@ -343,3 +375,9 @@ void LLNameListCtrl::updateColumns()  		}  	}  } + +// static +LLUUID LLNameListCtrl::getItemId(LLScrollListItem* item) +{ +	return item->getValue()["uuid"].asUUID(); +} diff --git a/indra/newview/llnamelistctrl.h b/indra/newview/llnamelistctrl.h index d0f0ec4d21..192a3a5afa 100644 --- a/indra/newview/llnamelistctrl.h +++ b/indra/newview/llnamelistctrl.h @@ -94,7 +94,7 @@ public:  	void addNameItem(NameItem& item, EAddPosition pos = ADD_BOTTOM);  	/*virtual*/ LLScrollListItem* addElement(const LLSD& element, EAddPosition pos = ADD_BOTTOM, void* userdata = NULL); -	LLScrollListItem* addNameItemRow(const NameItem& value, EAddPosition pos = ADD_BOTTOM); +	LLScrollListItem* addNameItemRow(const NameItem& value, EAddPosition pos = ADD_BOTTOM, std::string& suffix = LLStringUtil::null);  	// Add a user to the list by name.  It will be added, the name   	// requested from the cache, and updated as necessary. @@ -121,7 +121,8 @@ public:  	/*virtual*/ void updateColumns();  private: -	void showAvatarInspector(const LLUUID& avatar_id); +	void showInspector(const LLUUID& avatar_id, bool is_group); +	static LLUUID getItemId(LLScrollListItem* item);  private:  	S32    			mNameColumnIndex; diff --git a/indra/newview/llpanelclassified.cpp b/indra/newview/llpanelclassified.cpp index e29320ffc2..01b3f3bb7f 100644 --- a/indra/newview/llpanelclassified.cpp +++ b/indra/newview/llpanelclassified.cpp @@ -72,6 +72,7 @@  #include "llviewerwindow.h"	// for window width, height  #include "llappviewer.h"	// abortQuit()  #include "lltrans.h" +#include "llstatusbar.h"  const S32 MINIMUM_PRICE_FOR_LISTING = 50;	// L$  const S32 MATURE_UNDEFINED = -1; @@ -1364,6 +1365,7 @@ static const S32 CB_ITEM_PG	   = 1;  LLPanelClassifiedEdit::LLPanelClassifiedEdit()   : LLPanelClassifiedInfo()   , mIsNew(false) + , mCanClose(false)  {  } @@ -1559,7 +1561,7 @@ void LLPanelClassifiedEdit::resetControls()  bool LLPanelClassifiedEdit::canClose()  { -	return isValidName(); +	return mCanClose;  }  void LLPanelClassifiedEdit::sendUpdate() @@ -1676,12 +1678,23 @@ void LLPanelClassifiedEdit::onChange()  void LLPanelClassifiedEdit::onSaveClick()  { +	mCanClose = false; +  	if(!isValidName())  	{  		notifyInvalidName();  		return;  	} +	if(isNew()) +	{ +		if(gStatusBar->getBalance() < getPriceForListing()) +		{ +			LLNotificationsUtil::add("ClassifiedInsuffisientFunds"); +			return; +		} +	} +	mCanClose = true;  	sendUpdate();  	resetDirty();  } diff --git a/indra/newview/llpanelclassified.h b/indra/newview/llpanelclassified.h index 10fdf60bbe..e46806f576 100644 --- a/indra/newview/llpanelclassified.h +++ b/indra/newview/llpanelclassified.h @@ -340,6 +340,7 @@ protected:  private:  	bool mIsNew; +	bool mCanClose;  };  #endif // LL_LLPANELCLASSIFIED_H diff --git a/indra/newview/llpanelimcontrolpanel.cpp b/indra/newview/llpanelimcontrolpanel.cpp index a2d30662f3..c0b2a40d46 100644 --- a/indra/newview/llpanelimcontrolpanel.cpp +++ b/indra/newview/llpanelimcontrolpanel.cpp @@ -46,6 +46,7 @@  #include "llimview.h"  #include "llvoicechannel.h"  #include "llsidetray.h" +#include "llspeakers.h"  #include "lltrans.h"  void LLPanelChatControlPanel::onCallButtonClicked() diff --git a/indra/newview/llpanellandmarkinfo.cpp b/indra/newview/llpanellandmarkinfo.cpp index 597b8bdb2d..9654e17659 100644 --- a/indra/newview/llpanellandmarkinfo.cpp +++ b/indra/newview/llpanellandmarkinfo.cpp @@ -185,6 +185,13 @@ void LLPanelLandmarkInfo::processParcelInfo(const LLParcelData& parcel_data)  		region_z = llround(mPosRegion.mV[VZ]);  	} +	LLSD info; +	info["update_verbs"] = true; +	info["global_x"] = parcel_data.global_x; +	info["global_y"] = parcel_data.global_y; +	info["global_z"] = parcel_data.global_z; +	notifyParent(info); +  	if (mInfoType == CREATE_LANDMARK)  	{  		if (parcel_data.name.empty()) diff --git a/indra/newview/llpaneloutfitsinventory.cpp b/indra/newview/llpaneloutfitsinventory.cpp index df73c27f54..fd5ce7a46d 100644 --- a/indra/newview/llpaneloutfitsinventory.cpp +++ b/indra/newview/llpaneloutfitsinventory.cpp @@ -569,8 +569,6 @@ void LLPanelOutfitsInventory::initTabPanels()  	myoutfits_panel->setShowFolderState(LLInventoryFilter::SHOW_NON_EMPTY_FOLDERS);  	mTabPanels[1] = myoutfits_panel; -	mActivePanel = mTabPanels[0]; -  	for (tabpanels_vec_t::iterator iter = mTabPanels.begin();  		 iter != mTabPanels.end();  		 ++iter) @@ -581,6 +579,7 @@ void LLPanelOutfitsInventory::initTabPanels()  	mAppearanceTabs = getChild<LLTabContainer>("appearance_tabs");  	mAppearanceTabs->setCommitCallback(boost::bind(&LLPanelOutfitsInventory::onTabChange, this)); +	mActivePanel = (LLInventoryPanel*)mAppearanceTabs->getCurrentPanel();  }  void LLPanelOutfitsInventory::onTabSelectionChange(LLInventoryPanel* tab_panel, const std::deque<LLFolderViewItem*> &items, BOOL user_action) diff --git a/indra/newview/llpanelpick.cpp b/indra/newview/llpanelpick.cpp index e7615929c8..5ac0587550 100644 --- a/indra/newview/llpanelpick.cpp +++ b/indra/newview/llpanelpick.cpp @@ -448,7 +448,7 @@ BOOL LLPanelPickEdit::postBuild()  {  	LLPanelPickInfo::postBuild(); -	mSnapshotCtrl->setOnSelectCallback(boost::bind(&LLPanelPickEdit::onPickChanged, this, _1)); +	mSnapshotCtrl->setCommitCallback(boost::bind(&LLPanelPickEdit::onSnapshotChanged, this));  	LLLineEditor* line_edit = getChild<LLLineEditor>("pick_name");  	line_edit->setKeystrokeCallback(boost::bind(&LLPanelPickEdit::onPickChanged, this, _1), NULL); @@ -537,16 +537,14 @@ void LLPanelPickEdit::sendUpdate()  	}  } +void LLPanelPickEdit::onSnapshotChanged() +{ +	enableSaveButton(true); +} +  void LLPanelPickEdit::onPickChanged(LLUICtrl* ctrl)  { -	if(isDirty()) -	{ -		enableSaveButton(true); -	} -	else -	{ -		enableSaveButton(false); -	} +	enableSaveButton(isDirty());  }  void LLPanelPickEdit::resetData() @@ -613,10 +611,6 @@ void LLPanelPickEdit::initTexturePickerMouseEvents()  	mSnapshotCtrl->setMouseEnterCallback(boost::bind(&LLPanelPickEdit::onTexturePickerMouseEnter, this, _1));  	mSnapshotCtrl->setMouseLeaveCallback(boost::bind(&LLPanelPickEdit::onTexturePickerMouseLeave, this, _1)); -	// *WORKAROUND: Needed for EXT-1625: enabling save button each time when picker is opened, even if  -	// texture wasn't changed (see Steve's comment). -	mSnapshotCtrl->setMouseDownCallback(boost::bind(&LLPanelPickEdit::enableSaveButton, this, true)); -	  	text_icon->setVisible(FALSE);  } diff --git a/indra/newview/llpanelpick.h b/indra/newview/llpanelpick.h index 62c3b20c0d..4f27760a8d 100644 --- a/indra/newview/llpanelpick.h +++ b/indra/newview/llpanelpick.h @@ -222,6 +222,11 @@ protected:  	void sendUpdate();  	/** +	 * Called when snapshot image changes. +	 */ +	void onSnapshotChanged(); +	 +	/**  	 * Callback for Pick snapshot, name and description changed event.  	 */  	void onPickChanged(LLUICtrl* ctrl); diff --git a/indra/newview/llpanelplaces.cpp b/indra/newview/llpanelplaces.cpp index 685104a8b1..a71c8d8958 100644 --- a/indra/newview/llpanelplaces.cpp +++ b/indra/newview/llpanelplaces.cpp @@ -449,6 +449,22 @@ void LLPanelPlaces::setItem(LLInventoryItem* item)  	}  } +S32 LLPanelPlaces::notifyParent(const LLSD& info) +{ +	if(info.has("update_verbs")) +	{ +		if(mPosGlobal.isExactlyZero()) +		{ +			mPosGlobal.setVec(info["global_x"], info["global_y"], info["global_z"]); +		} + +		updateVerbs(); +		 +		return 1; +	} +	return LLPanel::notifyParent(info); +} +  void LLPanelPlaces::onLandmarkLoaded(LLLandmark* landmark)  {  	if (!mLandmarkInfo) @@ -460,6 +476,8 @@ void LLPanelPlaces::onLandmarkLoaded(LLLandmark* landmark)  	mLandmarkInfo->displayParcelInfo(region_id, mPosGlobal);  	mSaveBtn->setEnabled(TRUE); + +	updateVerbs();  }  void LLPanelPlaces::onFilterEdit(const std::string& search_string, bool force_filter) diff --git a/indra/newview/llpanelplaces.h b/indra/newview/llpanelplaces.h index b134cf0cba..27b5911ebb 100644 --- a/indra/newview/llpanelplaces.h +++ b/indra/newview/llpanelplaces.h @@ -75,6 +75,8 @@ public:  	std::string getPlaceInfoType() { return mPlaceInfoType; } +	/*virtual*/ S32 notifyParent(const LLSD& info); +  private:  	void onLandmarkLoaded(LLLandmark* landmark);  	void onFilterEdit(const std::string& search_string, bool force_filter); diff --git a/indra/newview/llpanelteleporthistory.cpp b/indra/newview/llpanelteleporthistory.cpp index 571745ee02..1b8fb49641 100644 --- a/indra/newview/llpanelteleporthistory.cpp +++ b/indra/newview/llpanelteleporthistory.cpp @@ -1036,7 +1036,7 @@ void LLTeleportHistoryPanel::setAccordionCollapsedByUser(LLUICtrl* acc_tab, bool  bool LLTeleportHistoryPanel::isAccordionCollapsedByUser(LLUICtrl* acc_tab)  {  	LLSD param = acc_tab->getValue(); -	if(!param.has("acc_collapsed")) +	if(!param.has(COLLAPSED_BY_USER))  	{  		return false;  	} diff --git a/indra/newview/llparticipantlist.cpp b/indra/newview/llparticipantlist.cpp index 0d8c847d27..dcb7e9e878 100644 --- a/indra/newview/llparticipantlist.cpp +++ b/indra/newview/llparticipantlist.cpp @@ -581,7 +581,7 @@ void LLParticipantList::LLParticipantListMenu::moderateVoiceOtherParticipants(co  bool LLParticipantList::LLParticipantListMenu::enableContextMenuItem(const LLSD& userdata)  {  	std::string item = userdata.asString(); -	if (item == "can_mute_text" || "can_block" == item) +	if (item == "can_mute_text" || "can_block" == item || "can_share" == item || "can_im" == item)  	{  		return mUUIDs.front() != gAgentID;  	} diff --git a/indra/newview/llpreviewgesture.cpp b/indra/newview/llpreviewgesture.cpp index 2a40cbaba0..84bdaafacf 100644 --- a/indra/newview/llpreviewgesture.cpp +++ b/indra/newview/llpreviewgesture.cpp @@ -364,6 +364,12 @@ BOOL LLPreviewGesture::postBuild()  	LLTextBox* text;  	LLCheckBoxCtrl* check; +	edit = getChild<LLLineEditor>("name"); +	edit->setKeystrokeCallback(onKeystrokeCommit, this); + +	edit = getChild<LLLineEditor>("desc"); +	edit->setKeystrokeCallback(onKeystrokeCommit, this); +  	edit = getChild<LLLineEditor>("trigger_editor");  	edit->setKeystrokeCallback(onKeystrokeCommit, this);  	edit->setCommitCallback(onCommitSetDirty, this); diff --git a/indra/newview/llspeakingindicatormanager.cpp b/indra/newview/llspeakingindicatormanager.cpp index 2f3b288a47..0aeef6ac40 100644 --- a/indra/newview/llspeakingindicatormanager.cpp +++ b/indra/newview/llspeakingindicatormanager.cpp @@ -36,7 +36,6 @@  #include "llspeakingindicatormanager.h" -#include "llagentdata.h"  #include "llvoicechannel.h"  #include "llvoiceclient.h" @@ -134,7 +133,7 @@ private:  //////////////////////////////////////////////////////////////////////////  void SpeakingIndicatorManager::registerSpeakingIndicator(const LLUUID& speaker_id, LLSpeakingIndicator* const speaking_indicator)  { -	if (speaker_id == gAgentID) return; +	// do not exclude agent's indicators. They should be processed in the same way as others. See EXT-3889.  	LL_DEBUGS("SpeakingIndicator") << "Registering indicator: " << speaker_id << LL_ENDL;  	speaking_indicator_value_t value_type(speaker_id, speaking_indicator); diff --git a/indra/newview/lltexlayer.cpp b/indra/newview/lltexlayer.cpp index 72ef383be9..4a7d784c3e 100644 --- a/indra/newview/lltexlayer.cpp +++ b/indra/newview/lltexlayer.cpp @@ -1139,7 +1139,7 @@ LLTexLayerInterface::LLTexLayerInterface(const LLTexLayerInterface &layer, LLWea  BOOL LLTexLayerInterface::setInfo(const LLTexLayerInfo *info, LLWearable* wearable  ) // This sets mInfo and calls initialization functions  { -	llassert(mInfo == NULL); +	//llassert(mInfo == NULL); // nyx says this is probably bogus but needs investigating  	mInfo = info;  	//mID = info->mID; // No ID diff --git a/indra/newview/lltexturectrl.cpp b/indra/newview/lltexturectrl.cpp index b980f65e68..9c4825763b 100644 --- a/indra/newview/lltexturectrl.cpp +++ b/indra/newview/lltexturectrl.cpp @@ -878,6 +878,7 @@ LLTextureCtrl::LLTextureCtrl(const LLTextureCtrl::Params& p)  {  	setAllowNoTexture(p.allow_no_texture);  	setCanApplyImmediately(p.can_apply_immediately); +	mCommitOnSelection = !p.no_commit_on_selection;  	LLTextBox::Params params(p.caption_text);  	params.name(p.label); @@ -1122,7 +1123,11 @@ void LLTextureCtrl::onFloaterCommit(ETexturePickOp op)  			}  			else  			{ -				onCommit(); +				// If the "no_commit_on_selection" parameter is set +				// we commit only when user presses OK in the picker +				// (i.e. op == TEXTURE_SELECT) or changes texture via DnD. +				if (mCommitOnSelection || op == TEXTURE_SELECT) +					onCommit();  			}  		}  	} diff --git a/indra/newview/lltexturectrl.h b/indra/newview/lltexturectrl.h index fb1d591e32..023329a9b2 100644 --- a/indra/newview/lltexturectrl.h +++ b/indra/newview/lltexturectrl.h @@ -74,6 +74,7 @@ public:  		Optional<std::string>	default_image_name;  		Optional<bool>			allow_no_texture;  		Optional<bool>			can_apply_immediately; +		Optional<bool>			no_commit_on_selection; // don't commit unless it's DnD or OK button press  		Optional<S32>			label_width;  		Optional<LLUIColor>		border_color; @@ -88,6 +89,7 @@ public:  			default_image_name("default_image_name"),  			allow_no_texture("allow_no_texture"),  			can_apply_immediately("can_apply_immediately"), +			no_commit_on_selection("no_commit_on_selection", false),  		    label_width("label_width", -1),  			border_color("border_color"),  			multiselect_text("multiselect_text"), @@ -204,6 +206,7 @@ private:  	PermissionMask			 mImmediateFilterPermMask;  	PermissionMask			 mNonImmediateFilterPermMask;  	BOOL					 mCanApplyImmediately; +	BOOL					 mCommitOnSelection;  	BOOL					 mNeedsRawImageData;  	LLViewBorder*			 mBorder;  	BOOL					 mValid; diff --git a/indra/newview/lltoolpie.cpp b/indra/newview/lltoolpie.cpp index da7e8cd767..da68af1597 100644 --- a/indra/newview/lltoolpie.cpp +++ b/indra/newview/lltoolpie.cpp @@ -1515,7 +1515,7 @@ BOOL LLToolPie::pickRightMouseDownCallback()  			}  			else  			{ -				mute_msg = LLTrans::getString("MuteObject"); +				mute_msg = LLTrans::getString("MuteObject2");  			}  			gMenuHolder->childSetText("Object Mute", mute_msg); diff --git a/indra/newview/llviewerhelputil.cpp b/indra/newview/llviewerhelputil.cpp index ffc5761372..967a2925e3 100644 --- a/indra/newview/llviewerhelputil.cpp +++ b/indra/newview/llviewerhelputil.cpp @@ -64,7 +64,7 @@ std::string LLViewerHelpUtil::buildHelpURL( const std::string &topic)  {  	LLSD substitution;  	substitution["TOPIC"] = helpURLEncode(topic); -	substitution["DEBUG_MODE"] = gAgent.isGodlike() ? "debug" : ""; +	substitution["DEBUG_MODE"] = gAgent.isGodlike() ? "/debug" : "";  	// get the help URL and expand all of the substitutions  	// (also adds things like [LANGUAGE], [VERSION], [OS], etc.) diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp index ef596f9297..04d67fe750 100644 --- a/indra/newview/llviewermedia.cpp +++ b/indra/newview/llviewermedia.cpp @@ -1246,7 +1246,24 @@ void LLViewerMediaImpl::loadURI()  {  	if(mMediaSource)  	{ -		mMediaSource->loadURI( mMediaURL ); +		// *HACK: we don't know if the URI coming in is properly escaped +		// (the contract doesn't specify whether it is escaped or not. +		// but LLQtWebKit expects it to be, so we do our best to encode +		// special characters) +		// The strings below were taken right from http://www.ietf.org/rfc/rfc1738.txt +		// Note especially that '%' and '/' are there. +		std::string uri = LLURI::escape(mMediaURL, +										"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" +										"0123456789" +										"$-_.+" +										"!*'()," +										"{}|\\^~[]`" +										"<>#%" +										";/?:@&=", +										false); +		llinfos << "Asking media source to load URI: " << uri << llendl; +		 +		mMediaSource->loadURI( uri );  		if(mPreviousMediaState == MEDIA_PLAYING)  		{ diff --git a/indra/newview/llviewermedia.h b/indra/newview/llviewermedia.h index 668f3b563d..ff18ed605a 100644 --- a/indra/newview/llviewermedia.h +++ b/indra/newview/llviewermedia.h @@ -330,6 +330,7 @@ public:  	bool isNavigateSuspended() { return mNavigateSuspended; };  	void cancelMimeTypeProbe(); +	  private:  	// a single media url with some data and an impl.  	LLPluginClassMedia* mMediaSource; diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index ba26a51b8b..6262bca432 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -6373,8 +6373,57 @@ class LLToolsSelectedScriptAction : public view_listener_t  void handle_selected_texture_info(void*)  { -	//useless without LLFloaterChat -	//as since we don't use LLFloaterChat... +	for (LLObjectSelection::valid_iterator iter = LLSelectMgr::getInstance()->getSelection()->valid_begin(); +   		iter != LLSelectMgr::getInstance()->getSelection()->valid_end(); iter++) +	{ +		LLSelectNode* node = *iter; +	   	 +   		std::string msg; +   		msg.assign("Texture info for: "); +   		msg.append(node->mName); + +		//TODO* CHAT: how to show this? +		//LLSD args; +		//args["MESSAGE"] = msg; +		//LLNotificationsUtil::add("SystemMessage", args); +	    +   		U8 te_count = node->getObject()->getNumTEs(); +   		// map from texture ID to list of faces using it +   		typedef std::map< LLUUID, std::vector<U8> > map_t; +   		map_t faces_per_texture; +   		for (U8 i = 0; i < te_count; i++) +   		{ +   			if (!node->isTESelected(i)) continue; +	    +   			LLViewerTexture* img = node->getObject()->getTEImage(i); +   			LLUUID image_id = img->getID(); +   			faces_per_texture[image_id].push_back(i); +   		} +   		// Per-texture, dump which faces are using it. +   		map_t::iterator it; +   		for (it = faces_per_texture.begin(); it != faces_per_texture.end(); ++it) +   		{ +   			LLUUID image_id = it->first; +   			U8 te = it->second[0]; +   			LLViewerTexture* img = node->getObject()->getTEImage(te); +   			S32 height = img->getHeight(); +   			S32 width = img->getWidth(); +   			S32 components = img->getComponents(); +   			msg = llformat("%dx%d %s on face ", +   								width, +   								height, +   								(components == 4 ? "alpha" : "opaque")); +   			for (U8 i = 0; i < it->second.size(); ++i) +   			{ +   				msg.append( llformat("%d ", (S32)(it->second[i]))); +   			} + +			//TODO* CHAT: how to show this? +			//LLSD args; +			//args["MESSAGE"] = msg; +			//LLNotificationsUtil::add("SystemMessage", args); +   		} +	}  }  void handle_test_male(void*) diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index 9b15a5154f..52f1de5ffa 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -78,6 +78,7 @@  #include "llstatenums.h"  #include "llstatusbar.h"  #include "llimview.h" +#include "llspeakers.h"  #include "lltrans.h"  #include "llviewerfoldertype.h"  #include "lluri.h" @@ -908,6 +909,14 @@ void open_inventory_offer(const std::vector<LLUUID>& items, const std::string& f  						LLSideTray::getInstance()->showPanel("panel_places",   								LLSD().with("type", "landmark").with("id", item->getUUID()));  					} +					else if("group_offer" == from_name) +					{ +						// do not open inventory when we open group notice attachment because  +						// we already opened landmark info panel +						// "group_offer" is passed by LLOpenTaskGroupOffer + +						continue; +					}  					else if(from_name.empty())  					{  						// we receive a message from LLOpenTaskOffer, it mean that new landmark has been added. @@ -1356,7 +1365,7 @@ bool LLOfferInfo::inventory_task_offer_callback(const LLSD& notification, const  			if (check_offer_throttle(mFromName, true))  			{  				log_message = chatHistory_string + " " + LLTrans::getString("InvOfferGaveYou") + " " + mDesc + LLTrans::getString("."); -				//TODO* should go to history only - how? +				//TODO* CHAT: how to show this?  				//LLSD args;  				//args["MESSAGE"] = log_message;  				//LLNotificationsUtil::add("SystemMessage", args); @@ -1401,7 +1410,7 @@ bool LLOfferInfo::inventory_task_offer_callback(const LLSD& notification, const  			// send the message  			msg->sendReliable(mHost); -			//TODO* should go to message history only... +			//TODO* CHAT: how to show this?  			//log_message = LLTrans::getString("InvOfferYouDecline") + " " + mDesc + " " + LLTrans::getString("InvOfferFrom") + " " + mFromName +".";  			//LLSD args;  			//args["MESSAGE"] = log_message; @@ -1829,17 +1838,11 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)  				// history.  Pretend the chat is from a local agent,  				// so it will go into the history but not be shown on screen. -				//TODO* should go to message hisyory only +				//TODO* CHAT: how to show this?  				//and this is not system message...  				//LLSD args;  				//args["MESSAGE"] = buffer;  				//LLNotificationsUtil::add("SystemMessage", args); - -				/* -				chat.mText = buffer; -				BOOL local_agent = TRUE; -				LLFloaterChat::addChat( chat, TRUE, local_agent ); -				*/  			}  		}  		break; @@ -3075,10 +3078,11 @@ void process_agent_movement_complete(LLMessageSystem* msg, void**)  		if (avatarp)  		{  			// Chat the "back" SLURL. (DEV-4907) -                        //should go to history only so leave commented                -		        //LLSD args;                                                  -		        //args["MESSAGE"] = message;                                  -		        //LLNotificationsUtil::add("SystemMessage", args);            + +			//TODO* CHAT: how to show this? +			//LLSD args; +			//args["MESSAGE"] = message; +			//LLNotificationsUtil::add("SystemMessage", args);  			// Set the new position  			avatarp->setPositionAgent(agent_pos); diff --git a/indra/newview/llvoicevivox.cpp b/indra/newview/llvoicevivox.cpp index 9f1fe0c11f..03b03b3884 100644 --- a/indra/newview/llvoicevivox.cpp +++ b/indra/newview/llvoicevivox.cpp @@ -59,6 +59,7 @@  #include "llparcel.h"  #include "llviewerparcelmgr.h"  //#include "llfirstuse.h" +#include "llspeakers.h"  #include "llviewerwindow.h"  #include "llviewercamera.h" diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp index d23bcf9006..d5dd19e470 100644 --- a/indra/newview/llvovolume.cpp +++ b/indra/newview/llvovolume.cpp @@ -2116,11 +2116,19 @@ viewer_media_t LLVOVolume::getMediaImpl(U8 face_id) const  F64 LLVOVolume::getTotalMediaInterest() const  { +	// If this object is currently focused, this object has "high" interest  	if (LLViewerMediaFocus::getInstance()->getFocusedObjectID() == getID())  		return F64_MAX;  	F64 interest = (F64)-1.0;  // means not interested; -    int i = 0; +     +	// If this object is selected, this object has "high" interest, but since  +	// there can be more than one, we still add in calculated impl interest +	// XXX Sadly, 'contains()' doesn't take a const :( +	if (LLSelectMgr::getInstance()->getSelection()->contains(const_cast<LLVOVolume*>(this))) +		interest = F64_MAX / 2.0; +	 +	int i = 0;  	const int end = getNumTEs();  	for ( ; i < end; ++i)  	{ diff --git a/indra/newview/skins/default/xui/en/favorites_bar_button.xml b/indra/newview/skins/default/xui/en/favorites_bar_button.xml index dfb0695ec3..6adf2a5950 100644 --- a/indra/newview/skins/default/xui/en/favorites_bar_button.xml +++ b/indra/newview/skins/default/xui/en/favorites_bar_button.xml @@ -3,7 +3,6 @@  <!-- All buttons in the Favorites bar will be created from this one -->  <button   follows="left|bottom" - font_halign="center"   halign="center"   height="15"   image_disabled="transparent.j2c" diff --git a/indra/newview/skins/default/xui/en/floater_aaa.xml b/indra/newview/skins/default/xui/en/floater_aaa.xml index cb4cbd229a..0b48ba9321 100644 --- a/indra/newview/skins/default/xui/en/floater_aaa.xml +++ b/indra/newview/skins/default/xui/en/floater_aaa.xml @@ -18,7 +18,7 @@   single_instance="true"    width="320">    <string name="nudge_parabuild">Nudge 1</string> -  <string name="test_the_vlt">This string is extracted.</string> +  <string name="test_the_vlt">This string CHANGE is extracted.</string>    <chat_history     allow_html="true"     bg_readonly_color="ChatHistoryBgColor" diff --git a/indra/newview/skins/default/xui/en/floater_outfit_save_as.xml b/indra/newview/skins/default/xui/en/floater_outfit_save_as.xml index c3d84de9a7..16079b30cb 100644 --- a/indra/newview/skins/default/xui/en/floater_outfit_save_as.xml +++ b/indra/newview/skins/default/xui/en/floater_outfit_save_as.xml @@ -1,7 +1,5 @@  <?xml version="1.0" encoding="utf-8" standalone="yes" ?>  <floater - legacy_header_height="18" - border="true"   can_close="false"   can_minimize="false"   height="100" @@ -9,7 +7,7 @@   name="modal container"   width="240">      <button -     height="20" +     height="23"       label="Save"       label_selected="Save"       layout="topleft" @@ -18,7 +16,7 @@       top="70"       width="82" />      <button -     height="20" +     height="23"       label="Cancel"       label_selected="Cancel"       layout="topleft" @@ -30,14 +28,15 @@       type="string"       length="1"       follows="left|top" -     font="SansSerif" -     height="16" +     height="30"       layout="topleft"       left="20" +     word_wrap="true"       name="Save item as:"       top="10"       width="200"> -        Save outfit as: +        Save what I'm wearing +as a new Outfit:      </text>      <line_editor       type="string" @@ -45,15 +44,15 @@       border_style="line"       border_thickness="1"       follows="left|top" -     font="SansSerif"       handle_edit_keys_directly="true" -     height="20" +     height="23"       layout="topleft"       left_delta="0" +     show_text_as_tentative="false" +     top_pad="0"       max_length="63"       name="name ed" -     top_pad="4"       width="200"> -        [DESC] +        [DESC] (new)      </line_editor>  </floater> diff --git a/indra/newview/skins/default/xui/en/floater_wearable_save_as.xml b/indra/newview/skins/default/xui/en/floater_wearable_save_as.xml index 9a95e3dfef..b4b57f2dbc 100644 --- a/indra/newview/skins/default/xui/en/floater_wearable_save_as.xml +++ b/indra/newview/skins/default/xui/en/floater_wearable_save_as.xml @@ -1,7 +1,6 @@  <?xml version="1.0" encoding="utf-8" standalone="yes" ?>  <floater - legacy_header_height="18" - border="true" + legacy_header_height="0"   can_close="false"   can_minimize="false"   height="100" @@ -9,7 +8,7 @@   name="modal container"   width="240">      <button -     height="20" +     height="23"       label="Save"       label_selected="Save"       layout="topleft" @@ -18,7 +17,7 @@       top="70"       width="82" />      <button -     height="20" +     height="23"       label="Cancel"       label_selected="Cancel"       layout="topleft" @@ -30,14 +29,14 @@       type="string"       length="1"       follows="left|top" -     font="SansSerif" -     height="16" +     height="30"       layout="topleft" +     word_wrap="true"       left="20"       name="Save item as:"       top="10"       width="200"> -        Save item as: +        Save item to my inventory as:      </text>      <line_editor       type="string" @@ -45,14 +44,13 @@       border_style="line"       border_thickness="1"       follows="left|top" -     font="SansSerif"       handle_edit_keys_directly="true" -     height="20" +     height="23"       layout="topleft"       left_delta="0"       max_length="63"       name="name ed" -     top_pad="4" +     top_pad="0"       width="200">          New [DESC]      </line_editor> diff --git a/indra/newview/skins/default/xui/en/floater_world_map.xml b/indra/newview/skins/default/xui/en/floater_world_map.xml index 8904d4f49c..65c9c2a8fa 100644 --- a/indra/newview/skins/default/xui/en/floater_world_map.xml +++ b/indra/newview/skins/default/xui/en/floater_world_map.xml @@ -77,7 +77,7 @@       top_delta="6"       left_pad="5"       layout="topleft" -     name="person_label" +     name="me_label"       width="90">          Me      </text> @@ -196,7 +196,7 @@       height="16"       layout="topleft"       left_pad="0" -     name="auction_label" +     name="by_owner_label"       top_delta="3"       width="100">         by owner diff --git a/indra/newview/skins/default/xui/en/menu_participant_list.xml b/indra/newview/skins/default/xui/en/menu_participant_list.xml index 31263fbea8..805ffbae66 100644 --- a/indra/newview/skins/default/xui/en/menu_participant_list.xml +++ b/indra/newview/skins/default/xui/en/menu_participant_list.xml @@ -47,6 +47,9 @@       name="IM">          <menu_item_call.on_click           function="Avatar.IM" /> +        <menu_item_call.on_enable +         function="ParticipantList.EnableItem" +         parameter="can_im" />      </menu_item_call>      <menu_item_call       label="Call" @@ -65,6 +68,9 @@       name="Share">          <menu_item_call.on_click           function="Avatar.Share" /> +        <menu_item_call.on_enable +         function="ParticipantList.EnableItem" +         parameter="can_share" />      </menu_item_call>      <menu_item_call       label="Pay" diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml index 45100eb1ff..a98a049c17 100644 --- a/indra/newview/skins/default/xui/en/menu_viewer.xml +++ b/indra/newview/skins/default/xui/en/menu_viewer.xml @@ -293,7 +293,7 @@             create_jump_keys="true"             label="Show"             layout="topleft" -           name="Land" +           name="LandShow"             tear_off="true">           <menu_item_check           label="Move Controls" @@ -1603,17 +1603,6 @@               function="ToggleControl"               parameter="MouseSmooth" />          </menu_item_check> -        <menu_item_check -         label="Show IMs in Nearby Chat" -         layout="topleft" -         name="IMInChat"> -            <menu_item_check.on_check -             function="CheckControl" -             parameter="IMInChat" /> -            <menu_item_check.on_click -             function="ToggleControl" -             parameter="IMInChat" /> -        </menu_item_check>          <menu_item_separator           layout="topleft" />          <menu diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml index 598c5fd8ca..c981220c01 100644 --- a/indra/newview/skins/default/xui/en/notifications.xml +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -770,6 +770,16 @@ Save changes to classified [NAME]?       notext="Don't Save"       yestext="Save"/>    </notification> +   +  <notification +   icon="alertmodal.tga" +   name="ClassifiedInsuffisientFunds" +   type="alertmodal"> +Insuffisient funds to create classified. +    <usetemplate +     name="okbutton" +     yestext="OK"/> +  </notification>    <notification     icon="alertmodal.tga" diff --git a/indra/newview/skins/default/xui/en/panel_edit_pick.xml b/indra/newview/skins/default/xui/en/panel_edit_pick.xml index 15eff4b67c..8e39697a16 100644 --- a/indra/newview/skins/default/xui/en/panel_edit_pick.xml +++ b/indra/newview/skins/default/xui/en/panel_edit_pick.xml @@ -61,6 +61,7 @@       height="197"       width="280"       layout="topleft" +     no_commit_on_selection="true"       top="20"       left="10"       name="pick_snapshot" /> diff --git a/indra/newview/skins/default/xui/en/panel_edit_profile.xml b/indra/newview/skins/default/xui/en/panel_edit_profile.xml index 172cf18fc4..8268937e7f 100644 --- a/indra/newview/skins/default/xui/en/panel_edit_profile.xml +++ b/indra/newview/skins/default/xui/en/panel_edit_profile.xml @@ -304,8 +304,10 @@              <name_box               follows="left|top|right"               height="30" +             initial_value="(retrieving)"               layout="topleft"               left="0" +             link="true"               name="partner_text"               top="0"               width="285" diff --git a/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml b/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml index 8188048821..5b0a7107e4 100644 --- a/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml +++ b/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml @@ -88,6 +88,7 @@ background_visible="true"       initial_value="(retrieving)"       layout="topleft"       left_delta="0" +     link="true"       name="founder_name"       top_pad="2"       use_ellipses="true" 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 27c1af1860..2659156ba8 100644 --- a/indra/newview/skins/default/xui/en/panel_my_profile.xml +++ b/indra/newview/skins/default/xui/en/panel_my_profile.xml @@ -267,6 +267,7 @@                <name_box                 follows="left|top"                 height="10" +               initial_value="(retrieving)"                 layout="topleft"                 left="0"                 link="true" diff --git a/indra/newview/skins/default/xui/en/panel_navigation_bar.xml b/indra/newview/skins/default/xui/en/panel_navigation_bar.xml index 58cb5fed5d..bfc97ed5da 100644 --- a/indra/newview/skins/default/xui/en/panel_navigation_bar.xml +++ b/indra/newview/skins/default/xui/en/panel_navigation_bar.xml @@ -127,7 +127,11 @@            label="Search [SECOND_LIFE]"            name="search_combo_editor"/>           <combo_list -          draw_border="true" /> +          draw_border="true" +          border.highlight_light_color="FocusColor" +          border.highlight_dark_color="FocusColor" +          border.shadow_light_color="FocusColor" +          border.shadow_dark_color="FocusColor"/>          </search_combo_box>  	</panel>      <favorites_bar diff --git a/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml index fd540bdc7e..8895484326 100644 --- a/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml +++ b/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml @@ -21,22 +21,8 @@       halign="center"       width="313">           <inventory_panel -     follows="all" - background_visible="true" - background_opaque="true" -        label="WEARING" -        help_topic="now_wearing_tab" -        allow_multi_select="true" -        border="false" -        left="0" -        top="0" -        mouse_opaque="true" -        name="cof_accordionpanel" -        start_folder="Current Outfit" -     width="313" /> -         <inventory_panel - background_visible="true" - background_opaque="true" +           background_visible="true" +           background_opaque="true"             label="MY OUTFITS"             help_topic="my_outfits_tab"             allow_multi_select="true" @@ -48,6 +34,20 @@             mouse_opaque="true"             name="outfitslist_tab"             start_folder="My Outfits" />  +         <inventory_panel +           follows="all" +           background_visible="true" +           background_opaque="true" +           label="WEARING" +           help_topic="now_wearing_tab" +          allow_multi_select="true" +           border="false" +           left="0" +           top="0" +           mouse_opaque="true" +           name="cof_accordionpanel" +           start_folder="Current Outfit" +           width="313" />     </tab_container>  	<panel  	  background_visible="true" @@ -103,5 +103,15 @@         top="26"        tool_tip="Wear selected outfit"        width="120" /> +	 <button +	  follows="bottom|left" +		height="23"  +		label="M"  +		layout="topleft" +        right="-140" +		name="look_edit_btn" +        top="26" +        visible="false"  +		width="20" />  	 </panel>  </panel> diff --git a/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml index 1e7acb566f..141678f7eb 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml @@ -34,7 +34,14 @@       name="background"       tool_tip="Choose color for bubble chat"       top_delta="1" -     width="44" /> +     width="44"> +        <color_swatch.init_callback +		     function="Pref.getUIColor" +		     parameter="BackgroundChatColor" /> +		    <color_swatch.commit_callback +		     function="Pref.applyUIColor" +		     parameter="BackgroundChatColor" /> +    </color_swatch>      <slider       control_name="ChatBubbleOpacity"       follows="left|top" diff --git a/indra/newview/skins/default/xui/en/panel_profile.xml b/indra/newview/skins/default/xui/en/panel_profile.xml index 597b6410cd..2b907ed251 100644 --- a/indra/newview/skins/default/xui/en/panel_profile.xml +++ b/indra/newview/skins/default/xui/en/panel_profile.xml @@ -247,6 +247,7 @@                <name_box                 follows="left|top"                 height="10" +               initial_value="(retrieving)"                 layout="topleft"                 left="0"                 link="true" diff --git a/indra/newview/skins/default/xui/en/panel_status_bar.xml b/indra/newview/skins/default/xui/en/panel_status_bar.xml index bfca2f2e46..7a6089c74e 100644 --- a/indra/newview/skins/default/xui/en/panel_status_bar.xml +++ b/indra/newview/skins/default/xui/en/panel_status_bar.xml @@ -53,7 +53,7 @@       label_shadow="false"       name="buycurrency"       tool_tip="My Balance" -     top="5" +     top="3"       width="100" />      <button       auto_resize="true" @@ -71,7 +71,7 @@       name="buyL"       pad_right="20px"       tool_tip="Click to buy more L$" -     top="5" +     top="2"       width="100" />      <text       type="string" @@ -80,7 +80,7 @@       follows="right|bottom"       halign="right"       height="16" -     top="7" +     top="5"       layout="topleft"       left_pad="0"       name="TimeText" @@ -96,7 +96,7 @@       image_unselected="Audio_Off"       is_toggle="true"       left_pad="18" -     top="4" +     top="2"       name="volume_btn"       tool_tip="Global Volume Control"       width="16" /> diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml index 02dc507781..b378944e48 100644 --- a/indra/newview/skins/default/xui/en/strings.xml +++ b/indra/newview/skins/default/xui/en/strings.xml @@ -2170,7 +2170,7 @@ this texture in your inventory  		Unknown file extension .%s  Expected .wav, .tga, .bmp, .jpg, .jpeg, or .bvh  	</string> -  <string name="MuteObject">Block</string> +  <string name="MuteObject2">Block</string>    <string name="MuteAvatar">Block</string>    <string name="UnmuteObject">Unblock</string>    <string name="UnmuteAvatar">Unblock</string> diff --git a/indra/newview/skins/default/xui/en/widgets/chiclet_im_adhoc.xml b/indra/newview/skins/default/xui/en/widgets/chiclet_im_adhoc.xml index 2bec5b8a29..e5cad0df2e 100644 --- a/indra/newview/skins/default/xui/en/widgets/chiclet_im_adhoc.xml +++ b/indra/newview/skins/default/xui/en/widgets/chiclet_im_adhoc.xml @@ -1,11 +1,11 @@  <?xml version="1.0" encoding="utf-8" standalone="yes" ?>  <chiclet_im_adhoc - height="25" + height="23"   name="im_adhoc_chiclet"   show_speaker="false"   width="25">      <chiclet_im_adhoc.chiclet_button  -     height="25" +     height="23"       image_selected="PushButton_Selected"       image_unselected="PushButton_Off"       name="chiclet_button" @@ -14,27 +14,27 @@      <chiclet_im_adhoc.speaker       auto_update="true"       draw_border="false" -     height="25" +     height="23"       left="25"       name="speaker"       visible="false"       width="20" />      <chiclet_im_adhoc.avatar_icon -     bottom="3" +     bottom="2"       follows="left|top|bottom"       height="19"       left="3"       mouse_opaque="true"       name="adhoc_icon" -     width="19" /> +     width="18" />      <chiclet_im_adhoc.unread_notifications -     font_halign="center" -     height="25" +     halign="center" +     height="23"       left="25"       mouse_opaque="false"       name="unread"       text_color="white" -     v_pad="5" +     v_pad="3"       visible="false"       width="20" />      <chiclet_im_adhoc.new_message_icon diff --git a/indra/newview/skins/default/xui/en/widgets/chiclet_im_group.xml b/indra/newview/skins/default/xui/en/widgets/chiclet_im_group.xml index 1d7f3208af..70e4ea8d26 100644 --- a/indra/newview/skins/default/xui/en/widgets/chiclet_im_group.xml +++ b/indra/newview/skins/default/xui/en/widgets/chiclet_im_group.xml @@ -1,11 +1,11 @@  <?xml version="1.0" encoding="utf-8" standalone="yes" ?>  <chiclet_im_group - height="25" + height="23"   name="im_group_chiclet"   show_speaker="false"   width="25">      <chiclet_im_group.chiclet_button  -     height="25" +     height="23"       image_selected="PushButton_Selected"       image_unselected="PushButton_Off"       name="chiclet_button" @@ -14,28 +14,28 @@      <chiclet_im_group.speaker       auto_update="true"       draw_border="false" -     height="25" +     height="23"       left="25"       name="speaker"       visible="false"       width="20" />      <chiclet_im_group.group_icon -     bottom="3" +     bottom="2"       default_icon="Generic_Group"       follows="left|top|bottom" -     height="19" +     height="18"       left="3"       mouse_opaque="false"       name="group_icon"       width="19" />      <chiclet_im_group.unread_notifications -     height="25" -     font_halign="center" +     height="23" +     halign="center"       left="25"       mouse_opaque="false"       name="unread"       text_color="white" -     v_pad="5" +     v_pad="3"       visible="false"       width="20"/>      <chiclet_im_group.new_message_icon diff --git a/indra/newview/skins/default/xui/en/widgets/chiclet_im_p2p.xml b/indra/newview/skins/default/xui/en/widgets/chiclet_im_p2p.xml index e6289f7cef..ec6500cf80 100644 --- a/indra/newview/skins/default/xui/en/widgets/chiclet_im_p2p.xml +++ b/indra/newview/skins/default/xui/en/widgets/chiclet_im_p2p.xml @@ -1,11 +1,11 @@  <?xml version="1.0" encoding="utf-8" standalone="yes" ?>  <chiclet_im_p2p - height="25" + height="23"   name="im_p2p_chiclet"   show_speaker="false"   width="25">      <chiclet_im_p2p.chiclet_button  -     height="25" +     height="23"       image_selected="PushButton_Selected"       image_unselected="PushButton_Off"       name="chiclet_button" @@ -14,27 +14,27 @@      <chiclet_im_p2p.speaker       auto_update="true"       draw_border="false" -     height="25" +     height="23"       left="25"       name="speaker"       visible="false"       width="20"/>      <chiclet_im_p2p.avatar_icon -     bottom="3" +     bottom="2"       follows="left|top|bottom" -     height="19" +     height="18"       left="3"       mouse_opaque="false"       name="avatar_icon"       width="19" />      <chiclet_im_p2p.unread_notifications -     height="25" -     font_halign="center" +     height="23" +     halign="center"       left="25"       mouse_opaque="false"       name="unread"       text_color="white" -     v_pad="5" +     v_pad="3"       visible="false"       width="20"/>      <chiclet_im_p2p.new_message_icon diff --git a/indra/newview/skins/default/xui/en/widgets/chiclet_offer.xml b/indra/newview/skins/default/xui/en/widgets/chiclet_offer.xml index 138b50c968..1bf9bc9e71 100644 --- a/indra/newview/skins/default/xui/en/widgets/chiclet_offer.xml +++ b/indra/newview/skins/default/xui/en/widgets/chiclet_offer.xml @@ -1,20 +1,20 @@  <?xml version="1.0" encoding="utf-8" standalone="yes" ?>  <chiclet_offer - height="25" + height="23"   name="offer_chiclet"   width="25">   <chiclet_offer.chiclet_button  -  height="25" +  height="23"    image_selected="PushButton_Selected"    image_unselected="PushButton_Off"    name="chiclet_button"    tab_stop="false"    width="25"/>   <chiclet_offer.icon -  bottom="3" +  bottom="2"    default_icon="Generic_Object_Small"    follows="all" -  height="19" +  height="18"    left="3"    mouse_opaque="false"    name="chiclet_icon" diff --git a/indra/newview/skins/default/xui/en/widgets/chiclet_script.xml b/indra/newview/skins/default/xui/en/widgets/chiclet_script.xml index ecf149dc76..38d9904d13 100644 --- a/indra/newview/skins/default/xui/en/widgets/chiclet_script.xml +++ b/indra/newview/skins/default/xui/en/widgets/chiclet_script.xml @@ -1,19 +1,19 @@  <?xml version="1.0" encoding="utf-8" standalone="yes" ?>  <chiclet_script - height="25" + height="23"   name="script_chiclet"   width="25">   <chiclet_script.chiclet_button  -  height="25" +  height="23"    image_selected="PushButton_Selected"    image_unselected="PushButton_Off"    name="chiclet_button"    tab_stop="false"    width="25"/>   <chiclet_script.icon -  bottom="3" +  bottom="2"    follows="all" -  height="19" +  height="18"    image_name="Generic_Object_Small"    left="3"    mouse_opaque="false" diff --git a/indra/newview/skins/default/xui/en/widgets/scroll_list.xml b/indra/newview/skins/default/xui/en/widgets/scroll_list.xml index 4520768216..63166f32b7 100644 --- a/indra/newview/skins/default/xui/en/widgets/scroll_list.xml +++ b/indra/newview/skins/default/xui/en/widgets/scroll_list.xml @@ -15,4 +15,6 @@               background_visible="true"               heading_height="23"               draw_border="false" -             draw_heading="false" /> +             draw_heading="false" +             border.name="dig border" +             border.bevel_style="in" /> diff --git a/scripts/messages/message_template.msg b/scripts/messages/message_template.msg index a5a99d79f0..c50ae4ad80 100644 --- a/scripts/messages/message_template.msg +++ b/scripts/messages/message_template.msg @@ -53,7 +53,7 @@ version 2.0  // OpenCircuit - Tells the recipient's messaging system to open the descibed circuit  { -	OpenCircuit Fixed 0xFFFFFFFC NotTrusted Unencoded +	OpenCircuit Fixed 0xFFFFFFFC NotTrusted Unencoded UDPBlackListed  	{  		CircuitInfo		Single  		{	IP			IPADDR	} | 
