diff options
34 files changed, 249 insertions, 138 deletions
| diff --git a/indra/llcommon/llfasttimer.h b/indra/llcommon/llfasttimer.h index cd76bfe709..8af79c90fd 100644 --- a/indra/llcommon/llfasttimer.h +++ b/indra/llcommon/llfasttimer.h @@ -1,11 +1,11 @@ -/**  +/**   * @file llfasttimer.h   * @brief Declaration of a fast timer.   *   * $LicenseInfo:firstyear=2004&license=viewergpl$ - *  + *   * Copyright (c) 2004-2009, Linden Research, Inc. - *  + *   * Second Life Viewer Source Code   * The source code in this file ("Source Code") is provided by Linden Lab   * to you under the terms of the GNU General Public License, version 2.0 @@ -13,17 +13,17 @@   * ("Other License"), formally executed by you and Linden Lab.  Terms of   * the GPL can be found in doc/GPL-license.txt in this distribution, or   * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 - *  + *   * There are special exceptions to the terms and conditions of the GPL as   * it is applied to this Source Code. View the full text of the exception   * in the file doc/FLOSS-exception.txt in this software distribution, or   * online at   * http://secondlifegrid.net/programs/open_source/licensing/flossexception - *  + *   * By copying, modifying or distributing this software, you acknowledge   * that you have read and understood your obligations described above,   * and agree to abide by those obligations. - *  + *   * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO   * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,   * COMPLETENESS OR PERFORMANCE. @@ -69,7 +69,7 @@  inline U32 get_cpu_clock_count_32()  {  	U32 ret_val; -	__asm  +	__asm  	{          _emit   0x0f          _emit   0x31 @@ -85,7 +85,7 @@ inline U32 get_cpu_clock_count_32()  inline U64 get_cpu_clock_count_64()  {  	U64 ret_val; -	__asm  +	__asm  	{          _emit   0x0f          _emit   0x31 @@ -99,21 +99,21 @@ inline U64 get_cpu_clock_count_64()  #else  #define LL_INLINE  #endif -
 -#if (LL_LINUX || LL_SOLARIS || LL_DARWIN) && (defined(__i386__) || defined(__amd64__))
 -inline U32 get_cpu_clock_count_32()
 -{																	
 -	U64 x;															
 -	__asm__ volatile (".byte 0x0f, 0x31": "=A"(x));					
 -	return (U32)x >> 8;													
 -}
 -
 -inline U32 get_cpu_clock_count_64()
 -{																	
 -	U64 x;
 -	__asm__ volatile (".byte 0x0f, 0x31": "=A"(x));
 -	return x >> 8;
 -}
 + +#if (LL_LINUX || LL_SOLARIS || LL_DARWIN) && (defined(__i386__) || defined(__amd64__)) +inline U32 get_cpu_clock_count_32() +{ +	U64 x; +	__asm__ volatile (".byte 0x0f, 0x31": "=A"(x)); +	return (U32)x >> 8; +} + +inline U32 get_cpu_clock_count_64() +{ +	U64 x; +	__asm__ volatile (".byte 0x0f, 0x31": "=A"(x)); +	return x >> 8; +}  #endif  #if ( LL_DARWIN && !(defined(__i386__) || defined(__amd64__))) || (LL_SOLARIS && defined(__sparc__)) @@ -128,7 +128,7 @@ inline U32 get_cpu_clock_count_32()  }  inline U32 get_cpu_clock_count_64() -{																	 +{  	return get_clock_count();  }  #endif @@ -158,7 +158,7 @@ public:  	};  	// stores a "named" timer instance to be reused via multiple LLFastTimer stack instances -	class LL_COMMON_API NamedTimer  +	class LL_COMMON_API NamedTimer  	:	public LLInstanceTracker<NamedTimer>  	{  		friend class DeclareTimer; @@ -193,7 +193,7 @@ public:  		FrameState& getFrameState() const; -	private:  +	private:  		friend class LLFastTimer;  		friend class NamedTimerFactory; @@ -204,14 +204,14 @@ public:  		// recursive call to gather total time from children  		static void accumulateTimings(); -		// updates cumulative times and hierarchy,  +		// updates cumulative times and hierarchy,  		// can be called multiple times in a frame, at any point  		static void processTimes();  		static void buildHierarchy();  		static void resetFrame();  		static void reset(); -	 +  		//  		// members  		// @@ -247,7 +247,7 @@ public:  	private:  		NamedTimer&		mTimer; -		FrameState*		mFrameState;  +		FrameState*		mFrameState;  	};  public: @@ -267,7 +267,7 @@ public:  		frame_state->mCalls++;  		// keep current parent as long as it is active when we are  		frame_state->mMoveUpTree |= (frame_state->mParent->mActiveCount == 0); -	 +  		LLFastTimer::CurTimerData* cur_timer_data = &LLFastTimer::sCurTimerData;  		mLastTimerData = *cur_timer_data;  		cur_timer_data->mCurTimer = this; @@ -305,7 +305,7 @@ public:  		U64 timer_end = get_cpu_clock_count_64();  		sTimerCycles += timer_end - timer_start;  		sTimerCalls++; -#endif	 +#endif  	}  public: @@ -321,13 +321,13 @@ public:  	typedef std::vector<FrameState> info_list_t;  	static info_list_t& getFrameStateList(); -	 +  	// call this once a frame to reset timers  	static void nextFrame();  	// dumps current cumulative frame stats to log  	// call nextFrame() to reset timers -	static void dumpCurTimes();  +	static void dumpCurTimes();  	// call this to reset timer hierarchy, averages, etc.  	static void reset(); 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/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 69336243da..53ac1dc0b9 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -3664,17 +3664,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/llchiclet.cpp b/indra/newview/llchiclet.cpp index 1d739f07b1..5497d6121f 100644 --- a/indra/newview/llchiclet.cpp +++ b/indra/newview/llchiclet.cpp @@ -1293,11 +1293,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(); -	(*it)->die(); +	chiclet->die();  }  void LLChicletPanel::removeChiclet(S32 index) 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 c24c224133..cdb9b8edb8 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/llimview.cpp b/indra/newview/llimview.cpp index 6064415a10..3ff156eca3 100644 --- a/indra/newview/llimview.cpp +++ b/indra/newview/llimview.cpp @@ -45,6 +45,7 @@  #include "lluictrlfactory.h"  #include "llagent.h" +#include "llappviewer.h"  #include "llavatariconctrl.h"  #include "llbottomtray.h"  #include "llcallingcard.h" @@ -1855,7 +1856,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/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/llpanelclassified.cpp b/indra/newview/llpanelclassified.cpp index e29320ffc2..3f5d80c123 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("ClassifiedInsufficientFunds"); +			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/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/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/llspeakingindicatormanager.cpp b/indra/newview/llspeakingindicatormanager.cpp index b450d38b5a..5e1d408e8d 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/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/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index d96d7df24a..3f556e5608 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 5279c4174a..31a18a2e98 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -908,6 +908,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 +1364,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 +1409,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 +1837,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; @@ -3076,7 +3078,7 @@ void process_agent_movement_complete(LLMessageSystem* msg, void**)  		{  			// Chat the "back" SLURL. (DEV-4907) -			//should go to history only so leave commented +			//TODO* CHAT: how to show this?  			//LLSD args;  			//args["MESSAGE"] = message;  			//LLNotificationsUtil::add("SystemMessage", args); diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml index 21fe2bb242..a98a049c17 100644 --- a/indra/newview/skins/default/xui/en/menu_viewer.xml +++ b/indra/newview/skins/default/xui/en/menu_viewer.xml @@ -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 1ec004b194..dddd178aea 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="ClassifiedInsufficientFunds" +   type="alertmodal"> +Insufficient 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_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_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/widgets/chiclet_im_adhoc.xml b/indra/newview/skins/default/xui/en/widgets/chiclet_im_adhoc.xml index 2bec5b8a29..328d521636 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" +     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..60658899ee 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" +     height="23"       font_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..b5b8f0d07a 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" +     height="23"       font_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" /> | 
