diff options
| author | Tofu Linden <tofu.linden@lindenlab.com> | 2010-04-15 10:31:05 +0100 | 
|---|---|---|
| committer | Tofu Linden <tofu.linden@lindenlab.com> | 2010-04-15 10:31:05 +0100 | 
| commit | 90800c84c4836d2eb0425ed09b7dd83e86a106db (patch) | |
| tree | 141636931b3185afc81dc005601a6513905a5f3a | |
| parent | d3d180f5db0350d6a8b930227b17d5001e673295 (diff) | |
| parent | 9f0f610682e0bcceb88eaddcb7a02acfcf3d05ce (diff) | |
merge from viewer-trunk
43 files changed, 663 insertions, 229 deletions
| diff --git a/indra/llwindow/llwindowwin32.cpp b/indra/llwindow/llwindowwin32.cpp index 5ee56a2a99..e2da3d1ad8 100644 --- a/indra/llwindow/llwindowwin32.cpp +++ b/indra/llwindow/llwindowwin32.cpp @@ -1544,16 +1544,14 @@ void LLWindowWin32::initCursors()  	mCursor[ UI_CURSOR_TOOLZOOMIN ] = LoadCursor(module, TEXT("TOOLZOOMIN"));  	mCursor[ UI_CURSOR_TOOLPICKOBJECT3 ] = LoadCursor(module, TEXT("TOOLPICKOBJECT3"));  	mCursor[ UI_CURSOR_PIPETTE ] = LoadCursor(module, TEXT("TOOLPIPETTE")); +	mCursor[ UI_CURSOR_TOOLSIT ]	= LoadCursor(module, TEXT("TOOLSIT")); +	mCursor[ UI_CURSOR_TOOLBUY ]	= LoadCursor(module, TEXT("TOOLBUY")); +	mCursor[ UI_CURSOR_TOOLOPEN ]	= LoadCursor(module, TEXT("TOOLOPEN"));  	// Color cursors -	gDirUtilp->getExpandedFilename(LL_PATH_EXECUTABLE, "res", "toolbuy.cur"); - -	mCursor[UI_CURSOR_TOOLSIT] = LoadCursorFromFile(utf8str_to_utf16str(gDirUtilp->findSkinnedFilename("textures", "toolsit.cur")).c_str()); -	mCursor[UI_CURSOR_TOOLBUY] = LoadCursorFromFile(utf8str_to_utf16str(gDirUtilp->findSkinnedFilename("textures", "toolbuy.cur")).c_str()); -	mCursor[UI_CURSOR_TOOLOPEN] = LoadCursorFromFile(utf8str_to_utf16str(gDirUtilp->findSkinnedFilename("textures", "toolopen.cur")).c_str()); -	mCursor[UI_CURSOR_TOOLPLAY] = loadColorCursor(TEXT("TOOLPLAY")); -	mCursor[UI_CURSOR_TOOLPAUSE] = loadColorCursor(TEXT("TOOLPAUSE")); -	mCursor[UI_CURSOR_TOOLMEDIAOPEN] = loadColorCursor(TEXT("TOOLMEDIAOPEN")); +	mCursor[ UI_CURSOR_TOOLPLAY ]		= loadColorCursor(TEXT("TOOLPLAY")); +	mCursor[ UI_CURSOR_TOOLPAUSE ]		= loadColorCursor(TEXT("TOOLPAUSE")); +	mCursor[ UI_CURSOR_TOOLMEDIAOPEN ]	= loadColorCursor(TEXT("TOOLMEDIAOPEN"));  	// Note: custom cursors that are not found make LoadCursor() return NULL.  	for( S32 i = 0; i < UI_CURSOR_COUNT; i++ ) diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index e6b266e0a7..a9e6a65b2b 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -1174,6 +1174,9 @@ if (WINDOWS)          res/toolpickobject2.cur          res/toolpickobject3.cur          res/toolpipette.cur +        res/toolbuy.cur +        res/toolopen.cur +        res/toolsit.cur          )      set_source_files_properties(${viewer_RESOURCE_FILES} diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 5eeb09f9f4..fb01aacf9e 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -4,13 +4,14 @@      <key>AFKTimeout</key>      <map>        <key>Comment</key> -      <string>Time before automatically setting AFK (away from keyboard) mode (seconds, 0=never)</string> +      <string>Time before automatically setting AFK (away from keyboard) mode (seconds, 0=never).  +        Valid values are: 0, 120, 300, 600, 1800</string>        <key>Persist</key>        <integer>1</integer>        <key>Type</key>        <string>S32</string>        <key>Value</key> -      <real>0</real> +      <real>300</real>      </map>      <key>AdvanceSnapshot</key>      <map> diff --git a/indra/newview/llavatarlist.cpp b/indra/newview/llavatarlist.cpp index 407c5b6153..c7a5691d70 100644 --- a/indra/newview/llavatarlist.cpp +++ b/indra/newview/llavatarlist.cpp @@ -32,13 +32,18 @@  #include "llviewerprecompiledheaders.h" +// common +#include "lltrans.h" +  #include "llavatarlist.h"  #include "llagentdata.h" // for comparator  // newview +#include "llavatariconctrl.h"  #include "llcallingcard.h" // for LLAvatarTracker  #include "llcachename.h"  #include "llrecentpeople.h" +#include "lltextutil.h"  #include "lluuid.h"  #include "llvoiceclient.h"  #include "llviewercontrol.h"	// for gSavedSettings @@ -193,6 +198,18 @@ void LLAvatarList::setDirty(bool val /*= true*/, bool force_refresh /*= false*/)  	}  } +void LLAvatarList::addAvalineItem(const LLUUID& item_id, const LLUUID& session_id, const std::string& item_name) +{ +	LL_DEBUGS("Avaline") << "Adding avaline item into the list: " << item_name << "|" << item_id << ", session: " << session_id << LL_ENDL; +	LLAvalineListItem* item = new LLAvalineListItem; +	item->setAvatarId(item_id, session_id, true, false); +	item->setName(item_name); + +	addItem(item, item_id); +	mIDs.push_back(item_id); +	sort(); +} +  //////////////////////////////////////////////////////////////////////////  // PROTECTED SECTION  ////////////////////////////////////////////////////////////////////////// @@ -471,3 +488,61 @@ bool LLAvatarItemAgentOnTopComparator::doCompare(const LLAvatarListItem* avatar_  	}  	return LLAvatarItemNameComparator::doCompare(avatar_item1,avatar_item2);  } + +/************************************************************************/ +/*             class LLAvalineListItem                                  */ +/************************************************************************/ +LLAvalineListItem::LLAvalineListItem(bool hide_number/* = true*/) : LLAvatarListItem(false) +, mIsHideNumber(hide_number) +{ +	// should not use buildPanel from the base class to ensure LLAvalineListItem::postBuild is called. +	LLUICtrlFactory::getInstance()->buildPanel(this, "panel_avatar_list_item.xml"); +} + +BOOL LLAvalineListItem::postBuild() +{ +	BOOL rv = LLAvatarListItem::postBuild(); + +	if (rv) +	{ +		setOnline(true); +		showLastInteractionTime(false); +		setShowProfileBtn(false); +		setShowInfoBtn(false); +		mAvatarIcon->setValue("Avaline_Icon"); +		mAvatarIcon->setToolTip(std::string("")); +	} +	return rv; +} + +// to work correctly this method should be called AFTER setAvatarId for avaline callers with hidden phone number +void LLAvalineListItem::setName(const std::string& name) +{ +	if (mIsHideNumber) +	{ +		static U32 order = 0; +		typedef std::map<LLUUID, U32> avaline_callers_nums_t; +		static avaline_callers_nums_t mAvalineCallersNums; + +		llassert(getAvatarId() != LLUUID::null); + +		const LLUUID &uuid = getAvatarId(); + +		if (mAvalineCallersNums.find(uuid) == mAvalineCallersNums.end()) +		{ +			mAvalineCallersNums[uuid] = ++order; +			LL_DEBUGS("Avaline") << "Set name for new avaline caller: " << uuid << ", order: " << order << LL_ENDL; +		} +		LLStringUtil::format_map_t args; +		args["[ORDER]"] = llformat("%u", mAvalineCallersNums[uuid]); +		std::string hidden_name = LLTrans::getString("AvalineCaller", args); + +		LL_DEBUGS("Avaline") << "Avaline caller: " << uuid << ", name: " << hidden_name << LL_ENDL; +		LLAvatarListItem::setName(hidden_name); +	} +	else +	{ +		const std::string& formatted_phone = LLTextUtil::formatPhoneNumber(name); +		LLAvatarListItem::setName(formatted_phone); +	} +} diff --git a/indra/newview/llavatarlist.h b/indra/newview/llavatarlist.h index 0203617867..528f796b8b 100644 --- a/indra/newview/llavatarlist.h +++ b/indra/newview/llavatarlist.h @@ -96,6 +96,8 @@ public:  	virtual S32 notifyParent(const LLSD& info); +	void addAvalineItem(const LLUUID& item_id, const LLUUID& session_id, const std::string& item_name); +  protected:  	void refresh(); @@ -175,4 +177,27 @@ protected:  	virtual bool doCompare(const LLAvatarListItem* avatar_item1, const LLAvatarListItem* avatar_item2) const;  }; +/** + * Represents Avaline caller in Avatar list in Voice Control Panel and group chats. + */ +class LLAvalineListItem : public LLAvatarListItem +{ +public: + +	/** +	 * Constructor +	 * +	 * @param hide_number - flag indicating if number should be hidden. +	 *		In this case It will be shown as "Avaline Caller 1", "Avaline Caller 1", etc. +	 */ +	LLAvalineListItem(bool hide_number = true); + +	/*virtual*/ BOOL postBuild(); + +	/*virtual*/ void setName(const std::string& name); + +private: +	bool mIsHideNumber; +}; +  #endif // LL_LLAVATARLIST_H diff --git a/indra/newview/llavatarlistitem.cpp b/indra/newview/llavatarlistitem.cpp index 44f88cce29..2a51eeacfc 100644 --- a/indra/newview/llavatarlistitem.cpp +++ b/indra/newview/llavatarlistitem.cpp @@ -212,21 +212,25 @@ void LLAvatarListItem::setState(EItemState item_style)  	mAvatarIcon->setColor(item_icon_color_map[item_style]);  } -void LLAvatarListItem::setAvatarId(const LLUUID& id, const LLUUID& session_id, bool ignore_status_changes) +void LLAvatarListItem::setAvatarId(const LLUUID& id, const LLUUID& session_id, bool ignore_status_changes/* = false*/, bool is_resident/* = true*/)  {  	if (mAvatarId.notNull())  		LLAvatarTracker::instance().removeParticularFriendObserver(mAvatarId, this);  	mAvatarId = id; -	mAvatarIcon->setValue(id);  	mSpeakingIndicator->setSpeakerId(id, session_id);  	// We'll be notified on avatar online status changes  	if (!ignore_status_changes && mAvatarId.notNull())  		LLAvatarTracker::instance().addParticularFriendObserver(mAvatarId, this); -	// Set avatar name. -	gCacheName->get(id, FALSE, boost::bind(&LLAvatarListItem::onNameCache, this, _2, _3)); +	if (is_resident) +	{ +		mAvatarIcon->setValue(id); + +		// Set avatar name. +		gCacheName->get(id, FALSE, boost::bind(&LLAvatarListItem::onNameCache, this, _2, _3)); +	}  }  void LLAvatarListItem::showLastInteractionTime(bool show) diff --git a/indra/newview/llavatarlistitem.h b/indra/newview/llavatarlistitem.h index 2db6484a30..3ba2c7a3e3 100644 --- a/indra/newview/llavatarlistitem.h +++ b/indra/newview/llavatarlistitem.h @@ -100,7 +100,7 @@ public:  	void setName(const std::string& name);  	void setHighlight(const std::string& highlight);  	void setState(EItemState item_style); -	void setAvatarId(const LLUUID& id, const LLUUID& session_id, bool ignore_status_changes = false); +	void setAvatarId(const LLUUID& id, const LLUUID& session_id, bool ignore_status_changes = false, bool is_resident = true);  	void setLastInteractionTime(U32 secs_since);  	//Show/hide profile/info btn, translating speaker indicator and avatar name coordinates accordingly  	void setShowProfileBtn(bool show); diff --git a/indra/newview/llfloateravatarpicker.cpp b/indra/newview/llfloateravatarpicker.cpp index 01a699506e..d1e99fbd61 100644 --- a/indra/newview/llfloateravatarpicker.cpp +++ b/indra/newview/llfloateravatarpicker.cpp @@ -451,8 +451,8 @@ void LLFloaterAvatarPicker::processAvatarPickerReply(LLMessageSystem* msg, void*  	LLFloaterAvatarPicker* floater = LLFloaterReg::findTypedInstance<LLFloaterAvatarPicker>("avatar_picker"); -	// these are not results from our last request -	if (query_id != floater->mQueryID) +	// floater is closed or these are not results from our last request +	if (NULL == floater || query_id != floater->mQueryID)  	{  		return;  	} diff --git a/indra/newview/llfloaterevent.cpp b/indra/newview/llfloaterevent.cpp index 97ebab3425..560cc29080 100644 --- a/indra/newview/llfloaterevent.cpp +++ b/indra/newview/llfloaterevent.cpp @@ -113,7 +113,6 @@ BOOL LLFloaterEvent::postBuild()  	mTBDuration = getChild<LLTextBox>("event_duration");  	mTBDesc = getChild<LLExpandableTextBox>("event_desc"); -	mTBDesc->setEnabled(FALSE);  	mTBRunBy = getChild<LLTextBox>("event_runby");  	mTBLocation = getChild<LLTextBox>("event_location"); diff --git a/indra/newview/llimfloater.cpp b/indra/newview/llimfloater.cpp index 3ec8d11fb0..19dbc564d1 100644 --- a/indra/newview/llimfloater.cpp +++ b/indra/newview/llimfloater.cpp @@ -499,8 +499,8 @@ void LLIMFloater::setVisible(BOOL visible)  	{  		//only if floater was construced and initialized from xml  		updateMessages(); -		//prevent steal focus when IM opened in multitab mode -		if (!isChatMultiTab()) +		//prevent stealing focus when opening a background IM tab (EXT-5387, checking focus for EXT-6781) +		if (!isChatMultiTab() || hasFocus())  		{  			mInputEditor->setFocus(TRUE);  		} diff --git a/indra/newview/llmoveview.cpp b/indra/newview/llmoveview.cpp index 0f22a50093..4ccf5e1c7b 100644 --- a/indra/newview/llmoveview.cpp +++ b/indra/newview/llmoveview.cpp @@ -200,7 +200,8 @@ void LLFloaterMove::setFlyingMode(BOOL fly)  	if (instance)  	{  		instance->setFlyingModeImpl(fly); -		instance->showModeButtons(!fly); +		BOOL is_sitting = isAgentAvatarValid() && gAgentAvatarp->isSitting(); +		instance->showModeButtons(!fly && !is_sitting);  	}  	if (fly)  	{ diff --git a/indra/newview/llpanelprimmediacontrols.cpp b/indra/newview/llpanelprimmediacontrols.cpp index ab2f9284f7..83244edb8e 100644 --- a/indra/newview/llpanelprimmediacontrols.cpp +++ b/indra/newview/llpanelprimmediacontrols.cpp @@ -31,7 +31,6 @@  #include "llviewerprecompiledheaders.h" -//LLPanelPrimMediaControls  #include "llagent.h"  #include "llagentcamera.h"  #include "llparcel.h" @@ -65,9 +64,12 @@  #include "llvovolume.h"  #include "llweb.h"  #include "llwindow.h" -  #include "llfloatertools.h"  // to enable hide if build tools are up +#if defined(LL_DARWIN) || (defined(LL_WINDOW) && (! defined(LL_RELEASE_FOR_DOWNLOAD)) ) +#define PER_MEDIA_VOLUME +#endif +  // Functions pulled from pipeline.cpp  glh::matrix4f glh_get_current_modelview();  glh::matrix4f glh_get_current_projection(); @@ -464,11 +466,18 @@ void LLPanelPrimMediaControls::updateShape()  			mSkipBackCtrl->setVisible(FALSE);  			mSkipBackCtrl->setEnabled(FALSE); +#ifdef PER_MEDIA_VOLUME +			mVolumeCtrl->setVisible(has_focus); +			mVolumeCtrl->setEnabled(has_focus); +			mVolumeSliderCtrl->setEnabled(has_focus && shouldVolumeSliderBeVisible()); +			mVolumeSliderCtrl->setVisible(has_focus && shouldVolumeSliderBeVisible()); +#else  			mVolumeCtrl->setVisible(FALSE);  			mVolumeSliderCtrl->setVisible(FALSE);  			mVolumeCtrl->setEnabled(FALSE);  			mVolumeSliderCtrl->setEnabled(FALSE); -			 +#endif +  			if (mMediaPanelScroll)  			{  				mMediaPanelScroll->setVisible(has_focus); diff --git a/indra/newview/llparticipantlist.cpp b/indra/newview/llparticipantlist.cpp index 026be882ed..53f92f7ad1 100644 --- a/indra/newview/llparticipantlist.cpp +++ b/indra/newview/llparticipantlist.cpp @@ -50,6 +50,145 @@  static const LLAvatarItemAgentOnTopComparator AGENT_ON_TOP_NAME_COMPARATOR; +// See EXT-4301. +/** + * class LLAvalineUpdater - observe the list of voice participants in session and check + *  presence of Avaline Callers among them. + * + * LLAvalineUpdater is a LLVoiceClientParticipantObserver. It provides two kinds of validation: + *	- whether Avaline caller presence among participants; + *	- whether watched Avaline caller still exists in voice channel. + * Both validations have callbacks which will notify subscriber if any of event occur. + * + * @see findAvalineCaller() + * @see checkIfAvalineCallersExist() + */ +class LLAvalineUpdater : public LLVoiceClientParticipantObserver +{ +public: +	typedef boost::function<void(const LLUUID& speaker_id)> process_avaline_callback_t; + +	LLAvalineUpdater(process_avaline_callback_t found_cb, process_avaline_callback_t removed_cb) +		: mAvalineFoundCallback(found_cb) +		, mAvalineRemovedCallback(removed_cb) +	{ +		LLVoiceClient::getInstance()->addObserver(this); +	} +	~LLAvalineUpdater() +	{ +		if (LLVoiceClient::instanceExists()) +		{ +			LLVoiceClient::getInstance()->removeObserver(this); +		} +	} + +	/** +	 * Adds UUID of Avaline caller to watch. +	 * +	 * @see checkIfAvalineCallersExist(). +	 */ +	void watchAvalineCaller(const LLUUID& avaline_caller_id) +	{ +		mAvalineCallers.insert(avaline_caller_id); +	} + +	void onChange() +	{ +		uuid_set_t participant_uuids; +		LLVoiceClient::getInstance()->getParticipantsUUIDSet(participant_uuids); + + +		// check whether Avaline caller exists among voice participants +		// and notify Participant List +		findAvalineCaller(participant_uuids); + +		// check whether watched Avaline callers still present among voice participant +		// and remove if absents. +		checkIfAvalineCallersExist(participant_uuids); +	} + +private: +	typedef std::set<LLUUID> uuid_set_t; + +	/** +	 * Finds Avaline callers among voice participants and calls mAvalineFoundCallback. +	 * +	 * When Avatar is in group call with Avaline caller and then ends call Avaline caller stays +	 * in Group Chat floater (exists in LLSpeakerMgr). If Avatar starts call with that group again +	 * Avaline caller is added to voice channel AFTER Avatar is connected to group call. +	 * But Voice Control Panel (VCP) is filled from session LLSpeakerMgr and there is no information +	 * if a speaker is Avaline caller. +	 * +	 * In this case this speaker is created as avatar and will be recreated when it appears in +	 * Avatar's Voice session. +	 * +	 * @see LLParticipantList::onAvalineCallerFound() +	 */ +	void findAvalineCaller(const uuid_set_t& participant_uuids) +	{ +		uuid_set_t::const_iterator it = participant_uuids.begin(), it_end = participant_uuids.end(); + +		for(; it != it_end; ++it) +		{ +			const LLUUID& participant_id = *it; +			if (!LLVoiceClient::getInstance()->isParticipantAvatar(participant_id)) +			{ +				LL_DEBUGS("Avaline") << "Avaline caller found among voice participants: " << participant_id << LL_ENDL; + +				if (mAvalineFoundCallback) +				{ +					mAvalineFoundCallback(participant_id); +				} +			} +		} +	} + +	/** +	 * Finds Avaline callers which are not anymore among voice participants and calls mAvalineRemovedCallback. +	 * +	 * The problem is when Avaline caller ends a call it is removed from Voice Client session but +	 * still exists in LLSpeakerMgr. Server does not send such information. +	 * This method implements a HUCK to notify subscribers that watched Avaline callers by class +	 * are not anymore in the call. +	 * +	 * @see LLParticipantList::onAvalineCallerRemoved() +	 */ +	void checkIfAvalineCallersExist(const uuid_set_t& participant_uuids) +	{ +		uuid_set_t::iterator it = mAvalineCallers.begin(); +		uuid_set_t::const_iterator participants_it_end = participant_uuids.end(); + +		while (it != mAvalineCallers.end()) +		{ +			const LLUUID participant_id = *it; +			LL_DEBUGS("Avaline") << "Check avaline caller: " << participant_id << LL_ENDL; +			bool not_found = participant_uuids.find(participant_id) == participants_it_end; +			if (not_found) +			{ +				LL_DEBUGS("Avaline") << "Watched Avaline caller is not found among voice participants: " << participant_id << LL_ENDL; + +				// notify Participant List +				if (mAvalineRemovedCallback) +				{ +					mAvalineRemovedCallback(participant_id); +				} + +				// remove from the watch list +				mAvalineCallers.erase(it++); +			} +			else +			{ +				++it; +			} +		} +	} + +	process_avaline_callback_t mAvalineFoundCallback; +	process_avaline_callback_t mAvalineRemovedCallback; + +	uuid_set_t mAvalineCallers; +}; +  LLParticipantList::LLParticipantList(LLSpeakerMgr* data_source, LLAvatarList* avatar_list,  bool use_context_menu/* = true*/,  		bool exclude_agent /*= true*/, bool can_toggle_icons /*= true*/):  	mSpeakerMgr(data_source), @@ -59,6 +198,9 @@ LLParticipantList::LLParticipantList(LLSpeakerMgr* data_source, LLAvatarList* av  ,	mExcludeAgent(exclude_agent)  ,	mValidateSpeakerCallback(NULL)  { +	mAvalineUpdater = new LLAvalineUpdater(boost::bind(&LLParticipantList::onAvalineCallerFound, this, _1), +		boost::bind(&LLParticipantList::onAvalineCallerRemoved, this, _1)); +  	mSpeakerAddListener = new SpeakerAddListener(*this);  	mSpeakerRemoveListener = new SpeakerRemoveListener(*this);  	mSpeakerClearListener = new SpeakerClearListener(*this); @@ -137,6 +279,9 @@ LLParticipantList::~LLParticipantList()  	}  	mAvatarList->setContextMenu(NULL); +	mAvatarList->setComparator(NULL); + +	delete mAvalineUpdater;  }  void LLParticipantList::setSpeakingIndicatorsVisible(BOOL visible) @@ -210,6 +355,55 @@ void LLParticipantList::onAvatarListRefreshed(LLUICtrl* ctrl, const LLSD& param)  	}  } +/* +Seems this method is not necessary after onAvalineCallerRemoved was implemented; + +It does nothing because list item is always created with correct class type for Avaline caller. +For now Avaline Caller is removed from the LLSpeakerMgr List when it is removed from the Voice Client +session. +This happens in two cases: if Avaline Caller ends call itself or if Resident ends group call. + +Probably Avaline caller should be removed from the LLSpeakerMgr list ONLY if it ends call itself. +Asked in EXT-4301. +*/ +void LLParticipantList::onAvalineCallerFound(const LLUUID& participant_id) +{ +	LLPanel* item = mAvatarList->getItemByValue(participant_id); + +	if (NULL == item) +	{ +		LL_WARNS("Avaline") << "Something wrong. Unable to find item for: " << participant_id << LL_ENDL; +		return; +	} + +	if (typeid(*item) == typeid(LLAvalineListItem)) +	{ +		LL_DEBUGS("Avaline") << "Avaline caller has already correct class type for: " << participant_id << LL_ENDL; +		// item representing an Avaline caller has a correct type already. +		return; +	} + +	LL_DEBUGS("Avaline") << "remove item from the list and re-add it: " << participant_id << LL_ENDL; + +	// remove UUID from LLAvatarList::mIDs to be able add it again. +	uuid_vec_t& ids = mAvatarList->getIDs(); +	uuid_vec_t::iterator pos = std::find(ids.begin(), ids.end(), participant_id); +	ids.erase(pos); + +	// remove item directly +	mAvatarList->removeItem(item); + +	// re-add avaline caller with a correct class instance. +	addAvatarIDExceptAgent(participant_id); +} + +void LLParticipantList::onAvalineCallerRemoved(const LLUUID& participant_id) +{ +	LL_DEBUGS("Avaline") << "Removing avaline caller from the list: " << participant_id << LL_ENDL; + +	mSpeakerMgr->removeAvalineSpeaker(participant_id); +} +  void LLParticipantList::setSortOrder(EParticipantSortOrder order)  {  	if ( mSortOrder != order ) @@ -355,8 +549,20 @@ void LLParticipantList::addAvatarIDExceptAgent(const LLUUID& avatar_id)  	if (mExcludeAgent && gAgent.getID() == avatar_id) return;  	if (mAvatarList->contains(avatar_id)) return; -	mAvatarList->getIDs().push_back(avatar_id); -	mAvatarList->setDirty(); +	bool is_avatar = LLVoiceClient::getInstance()->isParticipantAvatar(avatar_id); + +	if (is_avatar) +	{ +		mAvatarList->getIDs().push_back(avatar_id); +		mAvatarList->setDirty(); +	} +	else +	{ +		LLVoiceClient::participantState *participant = LLVoiceClient::getInstance()->findParticipantByID(avatar_id); + +		mAvatarList->addAvalineItem(avatar_id, mSpeakerMgr->getSessionID(), participant ? participant->mAccountName : LLTrans::getString("AvatarNameWaiting")); +		mAvalineUpdater->watchAvalineCaller(avatar_id); +	}  	adjustParticipant(avatar_id);  } diff --git a/indra/newview/llparticipantlist.h b/indra/newview/llparticipantlist.h index 953dff4551..9e5a2cbc1f 100644 --- a/indra/newview/llparticipantlist.h +++ b/indra/newview/llparticipantlist.h @@ -38,6 +38,7 @@  class LLSpeakerMgr;  class LLAvatarList;  class LLUICtrl; +class LLAvalineUpdater;  class LLParticipantList  { @@ -235,6 +236,9 @@ class LLParticipantList  		void onAvatarListDoubleClicked(LLUICtrl* ctrl);  		void onAvatarListRefreshed(LLUICtrl* ctrl, const LLSD& param); +		void onAvalineCallerFound(const LLUUID& participant_id); +		void onAvalineCallerRemoved(const LLUUID& participant_id); +  		/**  		 * Adjusts passed participant to work properly.  		 * @@ -272,4 +276,5 @@ class LLParticipantList  		LLPointer<LLAvatarItemRecentSpeakerComparator> mSortByRecentSpeakers;  		validate_speaker_callback_t mValidateSpeakerCallback; +		LLAvalineUpdater* mAvalineUpdater;  }; diff --git a/indra/newview/llspeakers.h b/indra/newview/llspeakers.h index b924fb2f2c..2bb160b7ce 100644 --- a/indra/newview/llspeakers.h +++ b/indra/newview/llspeakers.h @@ -234,6 +234,14 @@ public:  	LLVoiceChannel* getVoiceChannel() { return mVoiceChannel; }  	const LLUUID getSessionID(); +	/** +	 * Removes avaline speaker. +	 * +	 * This is a HACK due to server does not send information that Avaline caller ends call. +	 * It can be removed when server is updated. See EXT-4301 for details +	 */ +	bool removeAvalineSpeaker(const LLUUID& speaker_id) { return removeSpeaker(speaker_id); } +  protected:  	virtual void updateSpeakerList();  	void setSpeakerNotInChannel(LLSpeaker* speackerp); diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp index dd4192f270..58138d9917 100644 --- a/indra/newview/llviewermedia.cpp +++ b/indra/newview/llviewermedia.cpp @@ -1286,7 +1286,30 @@ void LLViewerMedia::setOpenIDCookie()  {  	if(!sOpenIDCookie.empty())  	{ -		getCookieStore()->setCookiesFromHost(sOpenIDCookie, sOpenIDURL.mAuthority); +		// The LLURL can give me the 'authority', which is of the form: [username[:password]@]hostname[:port] +		// We want just the hostname for the cookie code, but LLURL doesn't seem to have a way to extract that. +		// We therefore do it here. +		std::string authority = sOpenIDURL.mAuthority; +		std::string::size_type host_start = authority.find('@');  +		if(host_start == std::string::npos) +		{ +			// no username/password +			host_start = 0; +		} +		else +		{ +			// Hostname starts after the @.  +			// (If the hostname part is empty, this may put host_start at the end of the string.  In that case, it will end up passing through an empty hostname, which is correct.) +			++host_start; +		} +		std::string::size_type host_end = authority.rfind(':');  +		if((host_end == std::string::npos) || (host_end < host_start)) +		{ +			// no port +			host_end = authority.size(); +		} +		 +		getCookieStore()->setCookiesFromHost(sOpenIDCookie, authority.substr(host_start, host_end - host_start));  	}  } diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index 0488c9ae3b..0cd69d892f 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -32,6 +32,7 @@  #include "llviewerprecompiledheaders.h"  #include "llviewermessage.h" +#include "boost/lexical_cast.hpp"  #include "llanimationstates.h"  #include "llaudioengine.h"  @@ -1856,6 +1857,53 @@ protected:  	}  }; +static void parse_lure_bucket(const std::string& bucket, +							  U64& region_handle, +							  LLVector3& pos, +							  LLVector3& look_at, +							  U8& region_access) +{ +	// tokenize the bucket +	typedef boost::tokenizer<boost::char_separator<char> > tokenizer; +	boost::char_separator<char> sep("|", "", boost::keep_empty_tokens); +	tokenizer tokens(bucket, sep); +	tokenizer::iterator iter = tokens.begin(); + +	S32 gx = boost::lexical_cast<S32>((*(iter)).c_str()); +	S32 gy = boost::lexical_cast<S32>((*(++iter)).c_str()); +	S32 rx = boost::lexical_cast<S32>((*(++iter)).c_str()); +	S32 ry = boost::lexical_cast<S32>((*(++iter)).c_str()); +	S32 rz = boost::lexical_cast<S32>((*(++iter)).c_str()); +	S32 lx = boost::lexical_cast<S32>((*(++iter)).c_str()); +	S32 ly = boost::lexical_cast<S32>((*(++iter)).c_str()); +	S32 lz = boost::lexical_cast<S32>((*(++iter)).c_str()); + +	// Grab region access +	region_access = SIM_ACCESS_MIN; +	if (++iter != tokens.end()) +	{ +		std::string access_str((*iter).c_str()); +		LLStringUtil::trim(access_str); +		if ( access_str == "A" ) +		{ +			region_access = SIM_ACCESS_ADULT; +		} +		else if ( access_str == "M" ) +		{ +			region_access = SIM_ACCESS_MATURE; +		} +		else if ( access_str == "PG" ) +		{ +			region_access = SIM_ACCESS_PG; +		} +	} + +	pos.setVec((F32)rx, (F32)ry, (F32)rz); +	look_at.setVec((F32)lx, (F32)ly, (F32)lz); + +	region_handle = to_region_handle(gx, gy); +} +  void process_improved_im(LLMessageSystem *msg, void **user_data)  {  	if (gNoRender) @@ -2487,10 +2535,19 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)  			}  			else  			{ +				LLVector3 pos, look_at; +				U64 region_handle; +				U8 region_access; +				std::string region_info = ll_safe_string((char*)binary_bucket, binary_bucket_size); +				parse_lure_bucket(region_info, region_handle, pos, look_at, region_access); + +				std::string region_access_str = LLViewerRegion::accessToString(region_access); +  				LLSD args;  				// *TODO: Translate -> [FIRST] [LAST] (maybe)  				args["NAME_SLURL"] = LLSLURL::buildCommand("agent", from_id, "about");  				args["MESSAGE"] = message; +				args["MATURITY"] = region_access_str;  				LLSD payload;  				payload["from_id"] = from_id;  				payload["lure_id"] = session_id; diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp index c15dbeb8c6..8b87254f81 100644 --- a/indra/newview/llvoavatarself.cpp +++ b/indra/newview/llvoavatarself.cpp @@ -697,15 +697,6 @@ BOOL LLVOAvatarSelf::setParamWeight(LLViewerVisualParam *param, F32 weight, BOOL  /*virtual*/   void LLVOAvatarSelf::updateVisualParams()  { -	for (U32 type = 0; type < WT_COUNT; type++) -	{ -		LLWearable *wearable = gAgentWearables.getTopWearable((EWearableType)type); -		if (wearable) -		{ -			wearable->writeToAvatar(); -		} -	} -  	LLVOAvatar::updateVisualParams();  } @@ -716,7 +707,14 @@ void LLVOAvatarSelf::idleUpdateAppearanceAnimation()  	gAgentWearables.animateAllWearableParams(calcMorphAmount(), FALSE);  	// apply wearable visual params to avatar -	updateVisualParams(); +	for (U32 type = 0; type < WT_COUNT; type++) +	{ +		LLWearable *wearable = gAgentWearables.getTopWearable((EWearableType)type); +		if (wearable) +		{ +			wearable->writeToAvatar(); +		} +	}  	//allow avatar to process updates  	LLVOAvatar::idleUpdateAppearanceAnimation(); diff --git a/indra/newview/llworldmapview.cpp b/indra/newview/llworldmapview.cpp index 0c37bb6eb1..151180aae7 100644 --- a/indra/newview/llworldmapview.cpp +++ b/indra/newview/llworldmapview.cpp @@ -900,14 +900,32 @@ void LLWorldMapView::drawFrustum()  		// fade out in distance.  		gGL.begin( LLRender::TRIANGLES  );  		{ -			LLVector2 cam_lookat(LLViewerCamera::instance().getAtAxis().mV[VX], LLViewerCamera::instance().getAtAxis().mV[VY]); -			LLVector2 cam_left(LLViewerCamera::instance().getLeftAxis().mV[VX], LLViewerCamera::instance().getLeftAxis().mV[VY]); +			// get camera look at and left axes +			LLVector3 at_axis = LLViewerCamera::instance().getAtAxis(); +			LLVector3 left_axis = LLViewerCamera::instance().getLeftAxis(); + +			// grab components along XY plane +			LLVector2 cam_lookat(at_axis.mV[VX], at_axis.mV[VY]); +			LLVector2 cam_left(left_axis.mV[VX], left_axis.mV[VY]); + +			// but, when looking near straight up or down... +			if (is_approx_zero(cam_lookat.magVecSquared())) +			{ +				//...just fall back to looking down the x axis +				cam_lookat = LLVector2(1.f, 0.f); // x axis +				cam_left = LLVector2(0.f, 1.f); // y axis +			} + +			// normalize to unit length +			cam_lookat.normVec(); +			cam_left.normVec();  			gGL.color4f(1.f, 1.f, 1.f, 0.25f);  			gGL.vertex2f( 0, 0 );  			gGL.color4f(1.f, 1.f, 1.f, 0.02f); +			// use 2d camera vectors to render frustum triangle  			LLVector2 vert = cam_lookat * far_clip_pixels + cam_left * half_width_pixels;  			gGL.vertex2f(vert.mV[VX], vert.mV[VY]); diff --git a/indra/newview/res/resource.h b/indra/newview/res/resource.h index da27e47dfb..6cabd5e10b 100644 --- a/indra/newview/res/resource.h +++ b/indra/newview/res/resource.h @@ -170,14 +170,12 @@  #define IDC_COMBO1                      1138  #define IDC_COMBO_FARM                  1138  #define ID_TESTMENU_TEST                40001 -#define IDC_STATIC                      -1  // Next default values for new objects  //   #ifdef APSTUDIO_INVOKED  #ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE        159 -#define _APS_NEXT_RESOURCE_VALUE        167 +#define _APS_NEXT_RESOURCE_VALUE        173  #define _APS_NEXT_COMMAND_VALUE         40002  #define _APS_NEXT_CONTROL_VALUE         1139  #define _APS_NEXT_SYMED_VALUE           101 diff --git a/indra/newview/res/toolbuy.cur b/indra/newview/res/toolbuy.curBinary files differ new file mode 100644 index 0000000000..a1bc278116 --- /dev/null +++ b/indra/newview/res/toolbuy.cur diff --git a/indra/newview/res/toolopen.cur b/indra/newview/res/toolopen.curBinary files differ new file mode 100644 index 0000000000..a72cdfe4c0 --- /dev/null +++ b/indra/newview/res/toolopen.cur diff --git a/indra/newview/res/toolsit.cur b/indra/newview/res/toolsit.curBinary files differ new file mode 100644 index 0000000000..6327bdb281 --- /dev/null +++ b/indra/newview/res/toolsit.cur diff --git a/indra/newview/res/viewerRes.rc b/indra/newview/res/viewerRes.rc index 6a1c1cb377..12a09392f6 100644 --- a/indra/newview/res/viewerRes.rc +++ b/indra/newview/res/viewerRes.rc @@ -119,6 +119,9 @@ TOOLPIPETTE             CURSOR                  "toolpipette.cur"  TOOLPLAY                CURSOR                  "toolplay.cur"  TOOLPAUSE               CURSOR                  "toolpause.cur"  TOOLMEDIAOPEN           CURSOR                  "toolmediaopen.cur" +TOOLBUY                 CURSOR                  "toolbuy.cur" +TOOLOPEN                CURSOR                  "toolopen.cur" +TOOLSIT                 CURSOR                  "toolsit.cur"  /////////////////////////////////////////////////////////////////////////////  // diff --git a/indra/newview/skins/default/xui/en/floater_joystick.xml b/indra/newview/skins/default/xui/en/floater_joystick.xml index b8156a174d..6e1bb8fcd0 100644 --- a/indra/newview/skins/default/xui/en/floater_joystick.xml +++ b/indra/newview/skins/default/xui/en/floater_joystick.xml @@ -6,7 +6,7 @@   name="Joystick"   help_topic="joystick"   title="JOYSTICK CONFIGURATION" - width="550"> + width="569">      <floater.string       name="NoDevice">          no device detected @@ -148,7 +148,7 @@       halign="right"       height="10"       layout="topleft" -     left="12" +     left="37"       mouse_opaque="false"       name="Control Modes:"       top="110" @@ -161,7 +161,7 @@       halign="center"       label="Avatar"       layout="topleft" -     left="125" +     left="150"       name="JoystickAvatarEnabled"       width="60" />      <check_box @@ -170,7 +170,7 @@       halign="center"       label="Build"       layout="topleft" -     left="194" +     left="219"       name="JoystickBuildEnabled"       width="60" />      <check_box @@ -179,14 +179,14 @@       halign="center"       label="Flycam"       layout="topleft" -     left="262" +     left="289"       name="JoystickFlycamEnabled"       width="60" />      <stat_view       height="250"       label="Joystick Monitor"       layout="topleft" -     left="340" +     left="359"       name="axis_view"       show_label="true"       top="142" @@ -250,9 +250,9 @@       bottom="144"       halign="right"       layout="topleft" -     left="20" +     left="3"       name="XScale" -     width="94"> +     width="140">          X Scale      </text>      <spinner @@ -261,7 +261,7 @@       decimal_digits="2"       label_width="0"       layout="topleft" -     left="125" +     left="150"       max_val="50"       min_val="-50"       name="AvatarAxisScale1" @@ -272,7 +272,7 @@       decimal_digits="2"       label_width="0"       layout="topleft" -     left="195" +     left="220"       max_val="1024"       min_val="-1024"       name="BuildAxisScale1" @@ -283,7 +283,7 @@       decimal_digits="2"       label_width="0"       layout="topleft" -     left="265" +     left="290"       max_val="1024"       min_val="-1024"       name="FlycamAxisScale1" @@ -294,9 +294,9 @@       bottom="164"       halign="right"       layout="topleft" -     left="20" +     left="3"       name="YScale" -     width="94"> +     width="140">          Y Scale      </text>      <spinner @@ -305,7 +305,7 @@       decimal_digits="2"       label_width="0"       layout="topleft" -     left="125" +     left="150"       max_val="50"       min_val="-50"       name="AvatarAxisScale2" @@ -316,7 +316,7 @@       decimal_digits="2"       label_width="0"       layout="topleft" -     left="195" +     left="220"       max_val="1024"       min_val="-1024"       name="BuildAxisScale2" @@ -327,7 +327,7 @@       decimal_digits="2"       label_width="0"       layout="topleft" -     left="265" +     left="290"       max_val="1024"       min_val="-1024"       name="FlycamAxisScale2" @@ -338,9 +338,9 @@       bottom="184"       halign="right"       layout="topleft" -     left="20" +     left="3"       name="ZScale" -     width="94"> +     width="140">          Z Scale      </text>      <spinner @@ -349,7 +349,7 @@       decimal_digits="2"       label_width="0"       layout="topleft" -     left="125" +     left="150"       max_val="50"       min_val="-50"       name="AvatarAxisScale0" @@ -360,7 +360,7 @@       decimal_digits="2"       label_width="0"       layout="topleft" -     left="195" +     left="220"       max_val="1024"       min_val="-1024"       name="BuildAxisScale0" @@ -371,7 +371,7 @@       decimal_digits="2"       label_width="0"       layout="topleft" -     left="265" +     left="290"       max_val="1024"       min_val="-1024"       name="FlycamAxisScale0" @@ -382,9 +382,9 @@       bottom="204"       halign="right"       layout="topleft" -     left="20" +     left="3"       name="PitchScale" -     width="94"> +     width="140">          Pitch Scale      </text>      <spinner @@ -393,7 +393,7 @@       decimal_digits="2"       label_width="0"       layout="topleft" -     left="125" +     left="150"       max_val="1024"       min_val="-1024"       name="AvatarAxisScale4" @@ -404,7 +404,7 @@       decimal_digits="2"       label_width="0"       layout="topleft" -     left="195" +     left="220"       max_val="1024"       min_val="-1024"       name="BuildAxisScale4" @@ -415,7 +415,7 @@       decimal_digits="2"       label_width="0"       layout="topleft" -     left="265" +     left="290"       max_val="1024"       min_val="-1024"       name="FlycamAxisScale4" @@ -426,9 +426,9 @@       bottom="224"       halign="right"       layout="topleft" -     left="20" +     left="3"       name="YawScale" -     width="94"> +     width="140">          Yaw Scale      </text>      <spinner @@ -437,7 +437,7 @@       decimal_digits="2"       label_width="0"       layout="topleft" -     left="125" +     left="150"       max_val="1024"       min_val="-1024"       name="AvatarAxisScale5" @@ -448,7 +448,7 @@       decimal_digits="2"       label_width="0"       layout="topleft" -     left="195" +     left="220"       max_val="1024"       min_val="-1024"       name="BuildAxisScale5" @@ -459,7 +459,7 @@       decimal_digits="2"       label_width="0"       layout="topleft" -     left="265" +     left="290"       max_val="1024"       min_val="-1024"       name="FlycamAxisScale5" @@ -470,9 +470,9 @@       bottom="244"       halign="right"       layout="topleft" -     left="20" +     left="3"       name="RollScale" -     width="94"> +     width="140">          Roll Scale      </text>      <spinner @@ -481,7 +481,7 @@       decimal_digits="2"       label_width="0"       layout="topleft" -     left="195" +     left="220"       max_val="1024"       min_val="-1024"       name="BuildAxisScale3" @@ -492,7 +492,7 @@       decimal_digits="2"       label_width="0"       layout="topleft" -     left="265" +     left="290"       max_val="1024"       min_val="-1024"       name="FlycamAxisScale3" @@ -503,9 +503,9 @@       bottom="274"       halign="right"       layout="topleft" -     left="20" +     left="3"       name="XDeadZone" -     width="94"> +     width="140">          X Dead Zone      </text>      <spinner @@ -515,7 +515,7 @@       increment="0.01"       label_width="0"       layout="topleft" -     left="125" +     left="150"       name="AvatarAxisDeadZone1"       width="56" />      <spinner @@ -525,7 +525,7 @@       increment="0.01"       label_width="0"       layout="topleft" -     left="195" +     left="220"       name="BuildAxisDeadZone1"       width="56" />      <spinner @@ -535,7 +535,7 @@       increment="0.01"       label_width="0"       layout="topleft" -     left="265" +     left="290"       name="FlycamAxisDeadZone1"       width="56" />      <text @@ -544,9 +544,9 @@       bottom="294"       halign="right"       layout="topleft" -     left="20" +     left="3"       name="YDeadZone" -     width="94"> +     width="140">          Y Dead Zone      </text>      <spinner @@ -556,7 +556,7 @@       increment="0.01"       label_width="0"       layout="topleft" -     left="125" +     left="150"       name="AvatarAxisDeadZone2"       width="56" />      <spinner @@ -566,7 +566,7 @@       increment="0.01"       label_width="0"       layout="topleft" -     left="195" +     left="220"       name="BuildAxisDeadZone2"       width="56" />      <spinner @@ -576,7 +576,7 @@       increment="0.01"       label_width="0"       layout="topleft" -     left="265" +     left="290"       name="FlycamAxisDeadZone2"       width="56" />      <text @@ -585,9 +585,9 @@       bottom="314"       halign="right"       layout="topleft" -     left="20" +     left="3"       name="ZDeadZone" -     width="94"> +     width="140">          Z Dead Zone      </text>      <spinner @@ -597,7 +597,7 @@       increment="0.01"       label_width="0"       layout="topleft" -     left="125" +     left="150"       name="AvatarAxisDeadZone0"       width="56" />      <spinner @@ -607,7 +607,7 @@       increment="0.01"       label_width="0"       layout="topleft" -     left="195" +     left="220"       name="BuildAxisDeadZone0"       width="56" />      <spinner @@ -617,7 +617,7 @@       increment="0.01"       label_width="0"       layout="topleft" -     left="265" +     left="290"       name="FlycamAxisDeadZone0"       width="56" />      <text @@ -626,9 +626,9 @@       bottom="334"       halign="right"       layout="topleft" -     left="20" +     left="2"       name="PitchDeadZone" -     width="94"> +     width="140">          Pitch Dead Zone      </text>      <spinner @@ -638,7 +638,7 @@       increment="0.01"       label_width="0"       layout="topleft" -     left="125" +     left="150"       name="AvatarAxisDeadZone4"       width="56" />      <spinner @@ -648,7 +648,7 @@       increment="0.01"       label_width="0"       layout="topleft" -     left="195" +     left="220"       name="BuildAxisDeadZone4"       width="56" />      <spinner @@ -658,7 +658,7 @@       increment="0.01"       label_width="0"       layout="topleft" -     left="265" +     left="290"       name="FlycamAxisDeadZone4"       width="56" />      <text @@ -667,9 +667,9 @@       bottom="354"       halign="right"       layout="topleft" -     left="20" +     left="3"       name="YawDeadZone" -     width="94"> +     width="140">          Yaw Dead Zone      </text>      <spinner @@ -679,7 +679,7 @@       increment="0.01"       label_width="0"       layout="topleft" -     left="125" +     left="150"       name="AvatarAxisDeadZone5"       width="56" />      <spinner @@ -689,7 +689,7 @@       increment="0.01"       label_width="0"       layout="topleft" -     left="195" +     left="220"       name="BuildAxisDeadZone5"       width="56" />      <spinner @@ -699,7 +699,7 @@       increment="0.01"       label_width="0"       layout="topleft" -     left="265" +     left="290"       name="FlycamAxisDeadZone5"       width="56" />      <text @@ -708,9 +708,9 @@       bottom="374"       halign="right"       layout="topleft" -     left="20" +     left="3"       name="RollDeadZone" -     width="94"> +     width="140">          Roll Dead Zone      </text>      <spinner @@ -720,7 +720,7 @@       increment="0.01"       label_width="0"       layout="topleft" -     left="195" +     left="220"       name="BuildAxisDeadZone3"       width="56" />      <spinner @@ -730,7 +730,7 @@       increment="0.01"       label_width="0"       layout="topleft" -     left="265" +     left="290"       name="FlycamAxisDeadZone3"       width="56" />      <text @@ -739,9 +739,9 @@       bottom="402"       halign="right"       layout="topleft" -     left="20" +     left="3"       name="Feathering" -     width="94"> +     width="140">          Feathering      </text>      <slider @@ -752,7 +752,7 @@       increment="1"       initial_value="0.7"       layout="topleft" -     left="116" +     left="141"       max_val="32"       min_val="1"       name="AvatarFeathering" @@ -795,9 +795,9 @@       bottom="430"       halign="right"       layout="topleft" -     left="20" +     left="3"       name="ZoomScale2" -     width="94"> +     width="140">          Zoom Scale      </text>      <spinner @@ -806,7 +806,7 @@       decimal_digits="2"       label_width="0"       layout="topleft" -     left="265" +     left="290"       max_val="1024"       min_val="-1024"       name="FlycamAxisScale6" @@ -817,9 +817,9 @@       bottom="450"       halign="right"       layout="topleft" -     left="20" +     left="3"       name="ZoomDeadZone" -     width="96"> +     width="140">          Zoom Dead Zone      </text>      <spinner @@ -829,7 +829,7 @@       increment="0.01"       label_width="0"       layout="topleft" -     left="265" +     left="290"       name="FlycamAxisDeadZone6"       width="56" />      <button @@ -837,10 +837,10 @@       height="22"       label="SpaceNavigator Defaults"       layout="topleft" -     left="340" +     left="359"       name="SpaceNavigatorDefaults"       top="429" -     width="184" /> +     width="200" />      <button       follows="right|bottom"       height="20" @@ -850,7 +850,7 @@       left_delta="0"       name="ok_btn"       top_pad="9" -     width="90" /> +     width="98" />      <button       follows="right|bottom"       height="20" @@ -860,5 +860,5 @@       left_pad="4"       name="cancel_btn"       top_delta="0" -     width="90" /> +     width="98" />  </floater> diff --git a/indra/newview/skins/default/xui/en/floater_perm_prefs.xml b/indra/newview/skins/default/xui/en/floater_perm_prefs.xml index 4909b8988f..ff454e3ebf 100644 --- a/indra/newview/skins/default/xui/en/floater_perm_prefs.xml +++ b/indra/newview/skins/default/xui/en/floater_perm_prefs.xml @@ -44,7 +44,7 @@           left_delta="0"           name="NextOwnerLabel"           top_pad="5" -         width="150"> +         width="200">              Next owner can:          </text>          <check_box 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 291f8f6f51..233ab2c1b2 100644 --- a/indra/newview/skins/default/xui/en/floater_world_map.xml +++ b/indra/newview/skins/default/xui/en/floater_world_map.xml @@ -496,7 +496,7 @@       top_delta="-1"       name="DoSearch"       tool_tip="Search for region" -     width="58"> +     width="62">  		<button.commit_callback  		function="WMap.Location" />      </button> diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml index 34d55caf3c..25e10114b0 100644 --- a/indra/newview/skins/default/xui/en/notifications.xml +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -5165,7 +5165,7 @@ An object named [OBJECTFROMNAME] owned by (an unknown Resident) has given you th     type="offer">  [NAME_SLURL] has offered to teleport you to their location: -[MESSAGE] +[MESSAGE], ([MATURITY])      <form name="form">        <button         index="0" 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 7ec1ca2e2e..96c76576c0 100644 --- a/indra/newview/skins/default/xui/en/panel_navigation_bar.xml +++ b/indra/newview/skins/default/xui/en/panel_navigation_bar.xml @@ -119,7 +119,7 @@  	     commit_on_focus_lost="false"  	     follows="right|top"  	     halign="right" -	     height="22" +	     height="23"  	     label="Search"  	     layout="topleft"  	     right="-10" diff --git a/indra/newview/skins/default/xui/en/panel_place_profile.xml b/indra/newview/skins/default/xui/en/panel_place_profile.xml index a43b244fa0..9725e9952a 100644 --- a/indra/newview/skins/default/xui/en/panel_place_profile.xml +++ b/indra/newview/skins/default/xui/en/panel_place_profile.xml @@ -321,6 +321,7 @@               follows="all"               height="223"               layout="topleft" +             single_expansion="true"               left="0"               name="advanced_info_accordion"               top_pad="10" diff --git a/indra/newview/skins/default/xui/en/panel_preferences_chat.xml b/indra/newview/skins/default/xui/en/panel_preferences_chat.xml index eb2112c586..3ef16d2dec 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_chat.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_chat.xml @@ -342,7 +342,7 @@       layout="topleft"       left="30"       height="20" -     width="120" +     width="170"       top_pad="20">       Show IMs in:      </text> @@ -351,9 +351,9 @@       follows="left|top"       layout="topleft"       top_delta="0"  -     left="120"  +     left="170"     	 height="20" -	   width="100" +	   width="130"       text_color="White_25"  	  >        (requires restart) diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml index 70b280d7a5..76847e5af6 100644 --- a/indra/newview/skins/default/xui/en/strings.xml +++ b/indra/newview/skins/default/xui/en/strings.xml @@ -148,6 +148,8 @@  	<!-- Group name: text shown for LLUUID::null -->  	<string name="GroupNameNone">(none)</string> +	<string name="AvalineCaller">Avaline Caller [ORDER]</string> +  	<!-- Asset errors. Used in llassetstorage.cpp, translation from error code to error message. -->  	<string name="AssetErrorNone">No error</string>  	<string name="AssetErrorRequestFailed">Asset request: failed</string> diff --git a/indra/newview/skins/default/xui/es/floater_joystick.xml b/indra/newview/skins/default/xui/es/floater_joystick.xml index dbd2e4f04e..2c1804bd90 100644 --- a/indra/newview/skins/default/xui/es/floater_joystick.xml +++ b/indra/newview/skins/default/xui/es/floater_joystick.xml @@ -16,7 +16,7 @@  		Modos de control:  	</text>  	<check_box label="Avatar" name="JoystickAvatarEnabled"/> -	<check_box label="Construir" left="192" name="JoystickBuildEnabled"/> +	<check_box label="Construir" name="JoystickBuildEnabled"/>  	<check_box label="Flycam" name="JoystickFlycamEnabled"/>  	<text name="XScale">  		Escala: X @@ -27,7 +27,7 @@  	<text name="ZScale">  		Escala: Z  	</text> -	<text left="3" name="PitchScale" width="115"> +	<text name="PitchScale">  		Escala: arriba/abajo  	</text>  	<text name="YawScale"> @@ -45,10 +45,10 @@  	<text name="ZDeadZone">  		Zona muerta Z  	</text> -	<text left="3" name="PitchDeadZone" width="115"> +	<text name="PitchDeadZone">  		Zona muerta arri./aba.  	</text> -	<text left="3" name="YawDeadZone" width="115"> +	<text name="YawDeadZone">  		Zona muerta izq./der.  	</text>  	<text name="RollDeadZone"> @@ -63,7 +63,7 @@  	<text name="ZoomDeadZone">  		Zona muerta zoom  	</text> -	<button font="SansSerifSmall" label="Por defecto del SpaceNavigator" left="330" name="SpaceNavigatorDefaults" width="210"/> +	<button font="SansSerifSmall" label="Por defecto del SpaceNavigator" name="SpaceNavigatorDefaults"/>  	<button label="OK" label_selected="OK" left="330" name="ok_btn"/>  	<button label="Cancelar" label_selected="Cancelar" left_delta="120" name="cancel_btn"/>  	<stat_view label="Monitor del joystick" name="axis_view"> diff --git a/indra/newview/skins/default/xui/es/panel_region_general.xml b/indra/newview/skins/default/xui/es/panel_region_general.xml index 9ee7bef493..67800b2c6f 100644 --- a/indra/newview/skins/default/xui/es/panel_region_general.xml +++ b/indra/newview/skins/default/xui/es/panel_region_general.xml @@ -32,7 +32,7 @@  	</text>  	<icons_combo_box label="'Mature'" name="access_combo">  		<icons_combo_box.item label="'Adult'" name="Adult" value="42"/> -		<icons_combo_box.item label="'Mature'" name="Mature" value="21"/> +		<icons_combo_box.item label="Moderado" name="Mature" value="21"/>  		<icons_combo_box.item label="'PG'" name="PG" value="13"/>  	</icons_combo_box>  	<button label="Aplicar" name="apply_btn"/> diff --git a/indra/newview/skins/default/xui/fr/floater_joystick.xml b/indra/newview/skins/default/xui/fr/floater_joystick.xml index e00f9564e8..02ac21bf82 100644 --- a/indra/newview/skins/default/xui/fr/floater_joystick.xml +++ b/indra/newview/skins/default/xui/fr/floater_joystick.xml @@ -26,7 +26,7 @@  	<text name="ZScale">  		Échelle des Z  	</text> -	<text left="9" name="PitchScale" width="104"> +	<text name="PitchScale">  		Échelle du tangage  	</text>  	<text name="YawScale"> @@ -44,13 +44,13 @@  	<text name="ZDeadZone">  		Zone neutre Z  	</text> -	<text left="4" name="PitchDeadZone" width="116"> +	<text name="PitchDeadZone">  		Zone neutre tangage  	</text> -	<text name="YawDeadZone" left="10" width="104"> +	<text name="YawDeadZone">  		Zone neutre lacet  	</text> -	<text name="RollDeadZone" left="10" width="104"> +	<text name="RollDeadZone">  		Zone neutre roulis  	</text>  	<text name="Feathering"> @@ -59,7 +59,7 @@  	<text name="ZoomScale2">  		Échelle du zoom  	</text> -	<text left="6" name="ZoomDeadZone" width="120"> +	<text name="ZoomDeadZone">  		Zone neutre du zoom  	</text>  	<button label="Options par défaut du joystick" name="SpaceNavigatorDefaults"/> diff --git a/indra/newview/skins/default/xui/fr/floater_perm_prefs.xml b/indra/newview/skins/default/xui/fr/floater_perm_prefs.xml index fd569a7f95..36bec80561 100644 --- a/indra/newview/skins/default/xui/fr/floater_perm_prefs.xml +++ b/indra/newview/skins/default/xui/fr/floater_perm_prefs.xml @@ -4,7 +4,7 @@  		<button label="?" label_selected="?" name="help"/>  		<check_box label="Partager avec le groupe" name="share_with_group"/>  		<check_box label="Autoriser tout le monde à copier" name="everyone_copy"/> -		<text name="NextOwnerLabel" width="260"> +		<text name="NextOwnerLabel">  			Le prochain propriétaire pourra :  		</text>  		<check_box label="Modifier" name="next_owner_modify"/> diff --git a/indra/newview/skins/default/xui/it/floater_joystick.xml b/indra/newview/skins/default/xui/it/floater_joystick.xml index 3eff0cfceb..3d60ded7ab 100644 --- a/indra/newview/skins/default/xui/it/floater_joystick.xml +++ b/indra/newview/skins/default/xui/it/floater_joystick.xml @@ -16,7 +16,7 @@  		Modalità di controllo:  	</text>  	<check_box label="Avatar" name="JoystickAvatarEnabled"/> -	<check_box label="Costruire" left="192" name="JoystickBuildEnabled"/> +	<check_box label="Costruire" name="JoystickBuildEnabled"/>  	<check_box label="Camera dall'alto" name="JoystickFlycamEnabled"/>  	<text name="XScale">  		Regolazione X @@ -27,13 +27,13 @@  	<text name="ZScale">  		Regolazione Z  	</text> -	<text left="3" name="PitchScale" width="112"> +	<text name="PitchScale">  		Regolazione: Pitch  	</text> -	<text left="3" name="YawScale" width="112"> +	<text name="YawScale">  		Regolazione: Yaw  	</text> -	<text left="3" name="RollScale" width="112"> +	<text name="RollScale">  		Regolazione: Roll  	</text>  	<text name="XDeadZone"> @@ -45,22 +45,22 @@  	<text name="ZDeadZone">  		Angolo morto Z  	</text> -	<text left="3" name="PitchDeadZone" width="112"> +	<text name="PitchDeadZone">  		Angolo morto: Pitch  	</text> -	<text left="3" name="YawDeadZone" width="112"> +	<text name="YawDeadZone">  		Angolo morto: Yaw  	</text> -	<text left="3" name="RollDeadZone" width="112"> +	<text name="RollDeadZone">  		Angolo morto: Roll  	</text>  	<text name="Feathering">  		Smussamento  	</text> -	<text left="6" name="ZoomScale2" width="135"> +	<text  name="ZoomScale2">  		Regolazione dello zoom  	</text> -	<text left="6" name="ZoomDeadZone" width="135"> +	<text name="ZoomDeadZone" width="140">  		Angolo morto dello zoom  	</text>  	<button label="SpaceNavigator Defaults" name="SpaceNavigatorDefaults"/> diff --git a/indra/newview/skins/default/xui/it/panel_side_tray.xml b/indra/newview/skins/default/xui/it/panel_side_tray.xml index 846dcb69f0..e0143088a5 100644 --- a/indra/newview/skins/default/xui/it/panel_side_tray.xml +++ b/indra/newview/skins/default/xui/it/panel_side_tray.xml @@ -6,24 +6,24 @@  	<sidetray_tab description="Casa." name="sidebar_home" tab_title="Home">  		<panel label="casa" name="panel_home"/>  	</sidetray_tab> -	<sidetray_tab description="Modifica il tuo profilo pubblico e i preferiti." name="sidebar_me" tab_title="My Profile"> +	<sidetray_tab description="Modifica il tuo profilo pubblico e i preferiti." name="sidebar_me" tab_title="Il mio profilo">  		<panel_container name="panel_container">  			<panel label="Io" name="panel_me"/>  		</panel_container>  	</sidetray_tab> -	<sidetray_tab description="Trova amici, contatti e persone nelle vicinanze." name="sidebar_people" tab_title="People"> +	<sidetray_tab description="Trova amici, contatti e persone nelle vicinanze." name="sidebar_people" tab_title="Persone">  		<panel_container name="panel_container">  			<panel label="Profilo del gruppo" name="panel_group_info_sidetray"/>  			<panel label="Residenti e oggetti bloccati" name="panel_block_list_sidetray"/>  		</panel_container>  	</sidetray_tab> -	<sidetray_tab description="Trova luoghi dove andare e luoghi già visitati." label="Luoghi" name="sidebar_places" tab_title="Places"> +	<sidetray_tab description="Trova luoghi dove andare e luoghi già visitati." label="Luoghi" name="sidebar_places" tab_title="Luoghi">  		<panel label="Luoghi" name="panel_places"/>  	</sidetray_tab> -	<sidetray_tab description="Sfoglia il tuo inventario." name="sidebar_inventory" tab_title="My Inventory"> +	<sidetray_tab description="Sfoglia il tuo inventario." name="sidebar_inventory" tab_title="Il mio inventario">  		<panel label="Modifica inventario" name="sidepanel_inventory"/>  	</sidetray_tab> -	<sidetray_tab description="Cambia il tuo aspetto ed il tuo look attuale." name="sidebar_appearance" tab_title="My Appearance"> +	<sidetray_tab description="Cambia il tuo aspetto ed il tuo look attuale." name="sidebar_appearance" tab_title="Il mio aspetto">  		<panel label="Modifica aspetto fisico" name="sidepanel_appearance"/>  	</sidetray_tab>  </side_tray> diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_sound.xml b/indra/newview/skins/default/xui/ja/panel_preferences_sound.xml index fe830d864f..abbd29286b 100644 --- a/indra/newview/skins/default/xui/ja/panel_preferences_sound.xml +++ b/indra/newview/skins/default/xui/ja/panel_preferences_sound.xml @@ -12,7 +12,7 @@  	<slider label="ボイスチャット" name="Voice Volume"/>  	<check_box label="有効" name="enable_voice_check"/>  	<check_box label="メディアを自動再生する" name="media_auto_play_btn" tool_tip="ここにチェックを入れてメディアの自動再生を許可します" value="true"/> -	<check_box label="他のアバターに取り付けられたメディアを再生します" name="media_show_on_others_btn" tool_tip="このチェックを外すと、近くにいる他のアバターに取り付けられたメディアを非表示にします。" value="true"/> +	<check_box label="他のアバターに取り付けられたメディアを再生する" name="media_show_on_others_btn" tool_tip="このチェックを外すと、近くにいる他のアバターに取り付けられたメディアを非表示にします" value="true"/>  	<text name="voice_chat_settings">  		ボイスチャットの設定  	</text> diff --git a/indra/newview/skins/default/xui/ja/panel_prim_media_controls.xml b/indra/newview/skins/default/xui/ja/panel_prim_media_controls.xml index 1fe6ad25ed..a9897c7ae4 100644 --- a/indra/newview/skins/default/xui/ja/panel_prim_media_controls.xml +++ b/indra/newview/skins/default/xui/ja/panel_prim_media_controls.xml @@ -13,10 +13,10 @@  	</layout_stack>  	<layout_stack name="media_controls">  		<layout_panel name="back"> -			<button name="back_btn" tool_tip="Navigate back"/> +			<button name="back_btn" tool_tip="前へ"/>  		</layout_panel>  		<layout_panel name="fwd"> -			<button name="fwd_btn" tool_tip="Navigate forward"/> +			<button name="fwd_btn" tool_tip="次へ"/>  		</layout_panel>  		<layout_panel name="home">  			<button name="home_btn" tool_tip="ホームページ"/> @@ -51,10 +51,10 @@  			<slider_bar initial_value="0.5" name="media_play_slider" tool_tip="ムービー再生進行"/>  		</layout_panel>  		<layout_panel name="skip_back"> -			<button name="skip_back_btn" tool_tip="Step back"/> +			<button name="skip_back_btn" tool_tip="前にステップ"/>  		</layout_panel>  		<layout_panel name="skip_forward"> -			<button name="skip_forward_btn" tool_tip="Step forward"/> +			<button name="skip_forward_btn" tool_tip="次にステップ"/>  		</layout_panel>  		<layout_panel name="media_volume">  			<button name="media_mute_button" tool_tip="ミュート"/> @@ -64,7 +64,7 @@  			<button name="zoom_frame_btn" tool_tip="メディアにズームイン"/>  		</layout_panel>  		<layout_panel name="close"> -			<button name="close_btn" tool_tip="Zoom Back"/> +			<button name="close_btn" tool_tip="ズームバック"/>  		</layout_panel>  		<layout_panel name="new_window">  			<button name="new_window_btn" tool_tip="URL をブラウザで開く"/> diff --git a/indra/newview/skins/default/xui/nl/floater_joystick.xml b/indra/newview/skins/default/xui/nl/floater_joystick.xml index 505e3cd719..1d590dc1f3 100644 --- a/indra/newview/skins/default/xui/nl/floater_joystick.xml +++ b/indra/newview/skins/default/xui/nl/floater_joystick.xml @@ -45,7 +45,7 @@  	<text name="ZDeadZone">  		Z dode zone  	</text> -	<text name="PitchDeadZone" left="4" width="110"> +	<text name="PitchDeadZone">  		Stampen dode zone  	</text>  	<text name="YawDeadZone"> diff --git a/indra/newview/skins/default/xui/pl/floater_joystick.xml b/indra/newview/skins/default/xui/pl/floater_joystick.xml index 78742c39d1..2b1e362b98 100644 --- a/indra/newview/skins/default/xui/pl/floater_joystick.xml +++ b/indra/newview/skins/default/xui/pl/floater_joystick.xml @@ -1,108 +1,108 @@  <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Joystick" title="KONFIGURACJA JOYSTICKA" width="590"> +<floater name="Joystick" title="KONFIGURACJA JOYSTICKA">  	<check_box label="Aktywuj Joystick:" name="enable_joystick"/>  	<text left="130" name="joystick_type" width="360"/>  	<spinner label="Kalibracja Osi X" label_width="130" left="20" name="JoystickAxis1" width="170"/>  	<spinner label="Kalibracja Osi Y" label_width="130" left="210" name="JoystickAxis2" width="170"/> -	<spinner label="Kalibracja Osi Z" label_width="130" left="400" name="JoystickAxis0" width="170"/> +	<spinner label="Kalibracja Osi Z" label_width="100" left="400" name="JoystickAxis0" width="140"/>  	<spinner label="Kalibracja wznoszenia" label_width="130" left="20" name="JoystickAxis4" width="170"/>  	<spinner label="Kalibracja wychylania" label_width="130" left="210" name="JoystickAxis5" width="170"/> -	<spinner label="Kalibracja obrotu" label_width="130" left="400" name="JoystickAxis3" width="170"/> +	<spinner label="Kalibracja obrotu" label_width="100" left="400" name="JoystickAxis3" width="140"/>  	<spinner label="Kalibracja powiększania" label_width="130" name="JoystickAxis6" width="170"/>  	<check_box label="Bezpośrednie" left="205" name="ZoomDirect"/>  	<check_box label="Kursor 3D" left="340" name="Cursor3D"/>  	<check_box label="Automatyczne" left="450" name="AutoLeveling"/> -	<text left="22" name="Control Modes:"> +	<text name="Control Modes:">  		Kontroluj:  	</text> -	<check_box label="Awatara" left="130" name="JoystickAvatarEnabled" width="90"/> -	<check_box label="Budowanie" left="205" name="JoystickBuildEnabled" width="90"/> -	<check_box label="Kamerę podczas latania" left="282" name="JoystickFlycamEnabled" width="90"/> -	<text name="XScale" width="104"> +	<check_box label="Awatara" name="JoystickAvatarEnabled" width="90"/> +	<check_box label="Budowanie" name="JoystickBuildEnabled" width="90"/> +	<check_box label="Kamerę podczas latania" left="300" name="JoystickFlycamEnabled" width="90"/> +	<text name="XScale">  		Skala X  	</text> -	<spinner left="133" name="AvatarAxisScale1"/> -	<spinner left="208" name="BuildAxisScale1"/> -	<spinner left="283" name="FlycamAxisScale1"/> -	<text name="YScale" width="104"> +	<spinner name="AvatarAxisScale1"/> +	<spinner name="BuildAxisScale1"/> +	<spinner left="300" name="FlycamAxisScale1"/> +	<text name="YScale">  		Skala Y  	</text> -	<spinner left="133" name="AvatarAxisScale2"/> -	<spinner left="208" name="BuildAxisScale2"/> -	<spinner left="283" name="FlycamAxisScale2"/> -	<text name="ZScale" width="104"> +	<spinner name="AvatarAxisScale2"/> +	<spinner name="BuildAxisScale2"/> +	<spinner left="300" name="FlycamAxisScale2"/> +	<text name="ZScale">  		Skala Z  	</text> -	<spinner left="133" name="AvatarAxisScale0"/> -	<spinner left="208" name="BuildAxisScale0"/> -	<spinner left="283" name="FlycamAxisScale0"/> -	<text name="PitchScale" width="104"> +	<spinner name="AvatarAxisScale0"/> +	<spinner name="BuildAxisScale0"/> +	<spinner left="300" name="FlycamAxisScale0"/> +	<text name="PitchScale">  		Skala wznoszenia  	</text> -	<spinner left="133" name="AvatarAxisScale4"/> -	<spinner left="208" name="BuildAxisScale4"/> -	<spinner left="283" name="FlycamAxisScale4"/> -	<text name="YawScale" width="104"> +	<spinner name="AvatarAxisScale4"/> +	<spinner name="BuildAxisScale4"/> +	<spinner left="300" name="FlycamAxisScale4"/> +	<text name="YawScale">  		Skala odchylania  	</text> -	<spinner left="133" name="AvatarAxisScale5"/> -	<spinner left="208" name="BuildAxisScale5"/> -	<spinner left="283" name="FlycamAxisScale5"/> -	<text name="RollScale" width="104"> +	<spinner name="AvatarAxisScale5"/> +	<spinner name="BuildAxisScale5"/> +	<spinner left="300" name="FlycamAxisScale5"/> +	<text name="RollScale">  		Skala obrotu  	</text> -	<spinner left="208" name="BuildAxisScale3"/> -	<spinner left="283" name="FlycamAxisScale3"/> -	<text name="XDeadZone" width="104"> +	<spinner name="BuildAxisScale3"/> +	<spinner left="300" name="FlycamAxisScale3"/> +	<text name="XDeadZone">  		Tolerancja osi X  	</text> -	<spinner left="133" name="AvatarAxisDeadZone1"/> -	<spinner left="208" name="BuildAxisDeadZone1"/> -	<spinner left="283" name="FlycamAxisDeadZone1"/> -	<text name="YDeadZone" width="104"> +	<spinner name="AvatarAxisDeadZone1"/> +	<spinner name="BuildAxisDeadZone1"/> +	<spinner left="300" name="FlycamAxisDeadZone1"/> +	<text name="YDeadZone">  		Tolerancja osi Y  	</text> -	<spinner left="133" name="AvatarAxisDeadZone2"/> -	<spinner left="208" name="BuildAxisDeadZone2"/> -	<spinner left="283" name="FlycamAxisDeadZone2"/> -	<text name="ZDeadZone" width="104"> +	<spinner name="AvatarAxisDeadZone2"/> +	<spinner name="BuildAxisDeadZone2"/> +	<spinner left="300" name="FlycamAxisDeadZone2"/> +	<text name="ZDeadZone">  		Tolerancja osi Z  	</text> -	<spinner left="133" name="AvatarAxisDeadZone0"/> -	<spinner left="208" name="BuildAxisDeadZone0"/> -	<spinner left="283" name="FlycamAxisDeadZone0"/> -	<text name="PitchDeadZone" width="104"> +	<spinner name="AvatarAxisDeadZone0"/> +	<spinner name="BuildAxisDeadZone0"/> +	<spinner left="300" name="FlycamAxisDeadZone0"/> +	<text name="PitchDeadZone">  		Tolerancja wznoszenia  	</text> -	<spinner left="133" name="AvatarAxisDeadZone4"/> -	<spinner left="208" name="BuildAxisDeadZone4"/> -	<spinner left="283" name="FlycamAxisDeadZone4"/> -	<text name="YawDeadZone" width="104"> +	<spinner name="AvatarAxisDeadZone4"/> +	<spinner name="BuildAxisDeadZone4"/> +	<spinner left="300" name="FlycamAxisDeadZone4"/> +	<text name="YawDeadZone">  		Tolerancja odchylania  	</text> -	<spinner left="133" name="AvatarAxisDeadZone5"/> -	<spinner left="208" name="BuildAxisDeadZone5"/> -	<spinner left="283" name="FlycamAxisDeadZone5"/> -	<text name="RollDeadZone" width="104"> +	<spinner name="AvatarAxisDeadZone5"/> +	<spinner name="BuildAxisDeadZone5"/> +	<spinner left="300" name="FlycamAxisDeadZone5"/> +	<text name="RollDeadZone">  		Tolerancja obrotu  	</text> -	<spinner left="208" name="BuildAxisDeadZone3"/> -	<spinner left="283" name="FlycamAxisDeadZone3"/> -	<text name="Feathering" width="104"> +	<spinner name="BuildAxisDeadZone3"/> +	<spinner left="300" name="FlycamAxisDeadZone3"/> +	<text name="Feathering">  		Przenikanie  	</text> -	<slider label="" left="125" name="AvatarFeathering"/> -	<slider label="" left="200" name="BuildFeathering"/> -	<slider label="" left="275" name="FlycamFeathering"/> -	<text name="ZoomScale2" width="104"> +	<slider label="" name="AvatarFeathering"/> +	<slider label="" name="BuildFeathering"/> +	<slider label="" left_delta="81" name="FlycamFeathering"/> +	<text name="ZoomScale2">  		Skala powiększania  	</text> -	<spinner label="" left="283" name="FlycamAxisScale6"/> -	<text name="ZoomDeadZone" width="104"> +	<spinner label="" left="300" name="FlycamAxisScale6"/> +	<text name="ZoomDeadZone">  		Tolerancja powiększania  	</text> -	<spinner label="" left="283" name="FlycamAxisDeadZone6"/> -	<button label="Ustawienia domyślne" left="366" name="SpaceNavigatorDefaults"/> +	<spinner label="" left="300" name="FlycamAxisDeadZone6"/> +	<button label="Ustawienia domyślne" name="SpaceNavigatorDefaults"/>  	<button label="OK" label_selected="OK" left="366" name="ok_btn"/>  	<button label="Anuluj" label_selected="Anuluj" name="cancel_btn"/>  	<stat_view label="Monitor Joysticka" name="axis_view"> diff --git a/indra/newview/skins/default/xui/pt/floater_joystick.xml b/indra/newview/skins/default/xui/pt/floater_joystick.xml index ecc4fcc9e9..98d8c0e319 100644 --- a/indra/newview/skins/default/xui/pt/floater_joystick.xml +++ b/indra/newview/skins/default/xui/pt/floater_joystick.xml @@ -16,7 +16,7 @@  		Modos de Controle:  	</text>  	<check_box label="Avatar" name="JoystickAvatarEnabled"/> -	<check_box label="Construir" left="192" name="JoystickBuildEnabled"/> +	<check_box label="Construir" name="JoystickBuildEnabled"/>  	<check_box label="Camera aérea" name="JoystickFlycamEnabled"/>  	<text name="XScale">  		Escala X @@ -27,13 +27,13 @@  	<text name="ZScale">  		Escala Z  	</text> -	<text left="3" name="PitchScale" width="115"> +	<text name="PitchScale">  		Escala de Elevação  	</text> -	<text left="3" name="YawScale" width="115"> +	<text name="YawScale">  		Escala da Guinada  	</text> -	<text left="3" name="RollScale" width="115"> +	<text name="RollScale">  		Escala de Rolagem  	</text>  	<text name="XDeadZone"> @@ -45,13 +45,13 @@  	<text name="ZDeadZone">  		Zona Morta Z  	</text> -	<text left="3" name="PitchDeadZone" width="115"> +	<text name="PitchDeadZone">  		Zona Morta: Elevação  	</text> -	<text left="3" name="YawDeadZone" width="115"> +	<text name="YawDeadZone">  		Zona Morta: Guinada  	</text> -	<text left="3" name="RollDeadZone" width="115"> +	<text name="RollDeadZone">  		Zona Morta: Rolagem  	</text>  	<text name="Feathering"> @@ -60,7 +60,7 @@  	<text name="ZoomScale2">  		Escala de Zoom  	</text> -	<text left="4" name="ZoomDeadZone" width="110"> +	<text name="ZoomDeadZone">  		Zona Morta de Zoom  	</text>  	<button font="SansSerifSmall" label="Padrões do SpaceNavigator" name="SpaceNavigatorDefaults"/> | 
