diff options
| author | Loren Shih <seraph@lindenlab.com> | 2010-07-09 10:19:15 -0400 | 
|---|---|---|
| committer | Loren Shih <seraph@lindenlab.com> | 2010-07-09 10:19:15 -0400 | 
| commit | d8f795aa9ceaae73ad8890a1110fa6b4045843c7 (patch) | |
| tree | 96bd0bbc9d7bbe2a6a8d9a543fc581d82fdc1965 | |
| parent | 9ae6672a15ae64dba1d2af774dcde26700fb6126 (diff) | |
| parent | 467a8b0441e139773775ecf306f430f44814bff5 (diff) | |
automated merge
51 files changed, 297 insertions, 172 deletions
| diff --git a/indra/llui/llaccordionctrl.cpp b/indra/llui/llaccordionctrl.cpp index 673631f99a..28125ccaaf 100644 --- a/indra/llui/llaccordionctrl.cpp +++ b/indra/llui/llaccordionctrl.cpp @@ -40,6 +40,8 @@  #include "llfocusmgr.h"  #include "lllocalcliprect.h" +#include "lltrans.h" +  #include "boost/bind.hpp"  static const S32 DRAGGER_BAR_MARGIN = 4; @@ -72,6 +74,7 @@ LLAccordionCtrl::LLAccordionCtrl(const Params& params):LLPanel(params)  {  	initNoTabsWidget(params.no_matched_tabs_text); +	mNoVisibleTabsOrigString = LLTrans::getString(params.no_visible_tabs_text.initial_value().asString());  	mSingleExpansion = params.single_expansion;  	if(mFitParent && !mSingleExpansion)  	{ @@ -386,7 +389,7 @@ void	LLAccordionCtrl::initNoTabsWidget(const LLTextBox::Params& tb_params)  {  	LLTextBox::Params tp = tb_params;  	tp.rect(getLocalRect()); -	mNoMatchedTabsOrigString = tp.initial_value().asString(); +	mNoMatchedTabsOrigString = LLTrans::getString(tp.initial_value().asString());  	mNoVisibleTabsHelpText = LLUICtrlFactory::create<LLTextBox>(tp, this);  } diff --git a/indra/newview/featuretable.txt b/indra/newview/featuretable.txt index 1c763453dc..ccdb109d95 100644 --- a/indra/newview/featuretable.txt +++ b/indra/newview/featuretable.txt @@ -1,4 +1,4 @@ -version 21 +version 22  // NOTE: This is mostly identical to featuretable_mac.txt with a few differences  // Should be combined into one table @@ -59,6 +59,7 @@ RenderTextureMemoryMultiple		1	1.0  RenderShaderLightingMaxLevel	1	3  SkyUseClassicClouds			1	1  WatchdogDisabled				1	1 +RenderUseStreamVBO			1	1  // @@ -431,6 +432,10 @@ list ATIOldDriver  RenderAvatarVP				0	0  RenderAvatarCloth			0	0 +// ATI cards generally perform better when not using VBOs for streaming data + +list ATI +RenderUseStreamVBO			1	0  /// Tweaked NVIDIA diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp index 345953f2e9..4e5fdb1219 100644 --- a/indra/newview/llagent.cpp +++ b/indra/newview/llagent.cpp @@ -3234,6 +3234,9 @@ bool LLAgent::teleportCore(bool is_local)  	// hide land floater too - it'll be out of date  	LLFloaterReg::hideInstance("about_land"); +	// hide the search floater (EXT-8276) +	LLFloaterReg::hideInstance("search"); +  	LLViewerParcelMgr::getInstance()->deselectLand();  	LLViewerMediaFocus::getInstance()->clearFocus(); diff --git a/indra/newview/llagentcamera.cpp b/indra/newview/llagentcamera.cpp index c70bbb985f..1ef9e34f87 100644 --- a/indra/newview/llagentcamera.cpp +++ b/indra/newview/llagentcamera.cpp @@ -2065,6 +2065,7 @@ void LLAgentCamera::changeCameraToMouselook(BOOL animate)  	// Menus should not remain open on switching to mouselook...  	LLMenuGL::sMenuContainer->hideMenus(); +	LLUI::clearPopups();  	// unpause avatar animation  	gAgent.unpauseAnimation(); diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp index f8cff42412..43f6be42b6 100644 --- a/indra/newview/llappearancemgr.cpp +++ b/indra/newview/llappearancemgr.cpp @@ -403,7 +403,10 @@ void LLWearableHoldingPattern::checkMissingWearables()  	for (S32 type = 0; type < LLWearableType::WT_COUNT; ++type)  	{ -		llinfos << "type " << type << " requested " << requested_by_type[type] << " found " << found_by_type[type] << llendl; +		if (requested_by_type[type] > found_by_type[type]) +		{ +			llwarns << "got fewer wearables than requested, type " << type << ": requested " << requested_by_type[type] << ", found " << found_by_type[type] << llendl; +		}  		if (found_by_type[type] > 0)  			continue;  		if ( @@ -670,12 +673,15 @@ bool LLWearableHoldingPattern::pollMissingWearables()  	bool timed_out = isTimedOut();  	bool missing_completed = isMissingCompleted();  	bool done = timed_out || missing_completed; -	 -	llinfos << "polling missing wearables, waiting for items " << mTypesToRecover.size() -			<< " links " << mTypesToLink.size() -			<< " wearables, timed out " << timed_out -			<< " elapsed " << mWaitTime.getElapsedTimeF32() -			<< " done " << done << llendl; + +	if (!done) +	{ +		llinfos << "polling missing wearables, waiting for items " << mTypesToRecover.size() +				<< " links " << mTypesToLink.size() +				<< " wearables, timed out " << timed_out +				<< " elapsed " << mWaitTime.getElapsedTimeF32() +				<< " done " << done << llendl; +	}  	if (done)  	{ @@ -795,12 +801,8 @@ void LLWearableHoldingPattern::onWearableAssetFetch(LLWearable *wearable)  	}  	mResolved += 1;  // just counting callbacks, not successes. -	llinfos << "onWearableAssetFetch, resolved count " << mResolved << " of requested " << getFoundList().size() << llendl; -	if (wearable) -	{ -		llinfos << "wearable found, type " << wearable->getType() << " asset " << wearable->getAssetID() << llendl; -	} -	else +	llinfos << "resolved " << mResolved << "/" << getFoundList().size() << llendl; +	if (!wearable)  	{  		llwarns << "no wearable found" << llendl;  	} @@ -830,10 +832,14 @@ void LLWearableHoldingPattern::onWearableAssetFetch(LLWearable *wearable)  		LLFoundData& data = *iter;  		if(wearable->getAssetID() == data.mAssetID)  		{ -			data.mWearable = wearable;  			// Failing this means inventory or asset server are corrupted in a way we don't handle. -			llassert((data.mWearableType < LLWearableType::WT_COUNT) && (wearable->getType() == data.mWearableType)); -			break; +			if ((data.mWearableType >= LLWearableType::WT_COUNT) || (wearable->getType() != data.mWearableType)) +			{ +				llwarns << "recovered wearable but type invalid. inventory wearable type: " << data.mWearableType << " asset wearable type: " << wearable->getType() << llendl; +				break; +			} + +			data.mWearable = wearable;  		}  	}  } @@ -945,7 +951,7 @@ const LLUUID LLAppearanceMgr::getBaseOutfitUUID()  	return outfit_cat->getUUID();  } -bool LLAppearanceMgr::wearItemOnAvatar(const LLUUID& item_id_to_wear, bool do_update, bool replace) +bool LLAppearanceMgr::wearItemOnAvatar(const LLUUID& item_id_to_wear, bool do_update, bool replace, LLPointer<LLInventoryCallback> cb)  {  	if (item_id_to_wear.isNull()) return false; @@ -999,7 +1005,7 @@ bool LLAppearanceMgr::wearItemOnAvatar(const LLUUID& item_id_to_wear, bool do_up  		// Remove existing body parts anyway because we must not be able to wear e.g. two skins.  		removeCOFLinksOfType(item_to_wear->getWearableType(), false); -		addCOFItemLink(item_to_wear, do_update); +		addCOFItemLink(item_to_wear, do_update, cb);  		break;  	case LLAssetType::AT_OBJECT:  		rez_attachment(item_to_wear, NULL); @@ -1635,7 +1641,7 @@ void LLAppearanceMgr::updateAppearanceFromCOF(bool update_base_outfit_ordering)  	// the saved outfit stored as a folder link  	updateIsDirty(); -	dumpCat(getCOF(),"COF, start"); +	//dumpCat(getCOF(),"COF, start");  	bool follow_folder_links = true;  	LLUUID current_outfit_id = getCOF(); @@ -1718,7 +1724,7 @@ void LLAppearanceMgr::updateAppearanceFromCOF(bool update_base_outfit_ordering)  	{  		LLFoundData& found = *it; -		llinfos << "waiting for onWearableAssetFetch callback, asset " << found.mAssetID.asString() << llendl; +		lldebugs << "waiting for onWearableAssetFetch callback, asset " << found.mAssetID.asString() << llendl;  		// Fetch the wearables about to be worn.  		LLWearableList::instance().getAsset(found.mAssetID, @@ -1953,9 +1959,10 @@ bool areMatchingWearables(const LLViewerInventoryItem *a, const LLViewerInventor  class LLDeferredCOFLinkObserver: public LLInventoryObserver  {  public: -	LLDeferredCOFLinkObserver(const LLUUID& item_id, bool do_update): +	LLDeferredCOFLinkObserver(const LLUUID& item_id, bool do_update, LLPointer<LLInventoryCallback> cb = NULL):  		mItemID(item_id), -		mDoUpdate(do_update) +		mDoUpdate(do_update), +		mCallback(cb)  	{  	} @@ -1969,7 +1976,7 @@ public:  		if (item)  		{  			gInventory.removeObserver(this); -			LLAppearanceMgr::instance().addCOFItemLink(item,mDoUpdate); +			LLAppearanceMgr::instance().addCOFItemLink(item,mDoUpdate,mCallback);  			delete this;  		}  	} @@ -1977,26 +1984,27 @@ public:  private:  	const LLUUID mItemID;  	bool mDoUpdate; +	LLPointer<LLInventoryCallback> mCallback;  };  // BAP - note that this runs asynchronously if the item is not already loaded from inventory.  // Dangerous if caller assumes link will exist after calling the function. -void LLAppearanceMgr::addCOFItemLink(const LLUUID &item_id, bool do_update ) +void LLAppearanceMgr::addCOFItemLink(const LLUUID &item_id, bool do_update, LLPointer<LLInventoryCallback> cb)  {  	const LLInventoryItem *item = gInventory.getItem(item_id);  	if (!item)  	{ -		LLDeferredCOFLinkObserver *observer = new LLDeferredCOFLinkObserver(item_id, do_update); +		LLDeferredCOFLinkObserver *observer = new LLDeferredCOFLinkObserver(item_id, do_update, cb);  		gInventory.addObserver(observer);  	}  	else  	{ -		addCOFItemLink(item, do_update); +		addCOFItemLink(item, do_update, cb);  	}  } -void LLAppearanceMgr::addCOFItemLink(const LLInventoryItem *item, bool do_update ) +void LLAppearanceMgr::addCOFItemLink(const LLInventoryItem *item, bool do_update, LLPointer<LLInventoryCallback> cb)  {		  	const LLViewerInventoryItem *vitem = dynamic_cast<const LLViewerInventoryItem*>(item);  	if (!vitem) @@ -2057,7 +2065,10 @@ void LLAppearanceMgr::addCOFItemLink(const LLInventoryItem *item, bool do_update  	}  	else  	{ -		LLPointer<LLInventoryCallback> cb = do_update ? new ModifiedCOFCallback : 0; +		if(do_update && cb.isNull()) +		{ +			cb = new ModifiedCOFCallback; +		}  		const std::string description = vitem->getIsLinkType() ? vitem->getDescription() : "";  		link_inventory_item( gAgent.getID(),  							 vitem->getLinkedUUID(), @@ -2489,6 +2500,14 @@ void LLAppearanceMgr::removeItemFromAvatar(const LLUUID& id_to_remove)  		}  	default: break;  	} + +	// *HACK: Force to remove garbage from COF. +	// Unworn links or objects can't be processed by existed removing functionality +	// since it is not designed for such cases. As example attachment object can't be removed +	// since sever don't sends message _PREHASH_KillObject in that case. +	// Also we can't check is link was successfully removed from COF since in case +	// deleting attachment link removing performs asynchronously in process_kill_object callback. +	removeCOFItemLinks(id_to_remove,false);  }  bool LLAppearanceMgr::moveWearable(LLViewerInventoryItem* item, bool closer_to_body) diff --git a/indra/newview/llappearancemgr.h b/indra/newview/llappearancemgr.h index 8834f8c395..84c911c038 100644 --- a/indra/newview/llappearancemgr.h +++ b/indra/newview/llappearancemgr.h @@ -99,7 +99,7 @@ public:  	const LLUUID getBaseOutfitUUID();  	// Wear/attach an item (from a user's inventory) on the agent -	bool wearItemOnAvatar(const LLUUID& item_to_wear, bool do_update = true, bool replace = false); +	bool wearItemOnAvatar(const LLUUID& item_to_wear, bool do_update = true, bool replace = false, LLPointer<LLInventoryCallback> cb = NULL);  	// Update the displayed outfit name in UI.  	void updatePanelOutfitName(const std::string& name); @@ -124,8 +124,8 @@ public:  				 LLPointer<LLInventoryCallback> cb);  	// Add COF link to individual item. -	void addCOFItemLink(const LLUUID& item_id, bool do_update = true); -	void addCOFItemLink(const LLInventoryItem *item, bool do_update = true); +	void addCOFItemLink(const LLUUID& item_id, bool do_update = true, LLPointer<LLInventoryCallback> cb = NULL); +	void addCOFItemLink(const LLInventoryItem *item, bool do_update = true, LLPointer<LLInventoryCallback> cb = NULL);  	// Remove COF entries  	void removeCOFItemLinks(const LLUUID& item_id, bool do_update = true); @@ -175,6 +175,8 @@ public:  	bool isOutfitLocked() { return mOutfitLocked; } +	bool isInUpdateAppearanceFromCOF() { return mIsInUpdateAppearanceFromCOF; } +  protected:  	LLAppearanceMgr();  	~LLAppearanceMgr(); diff --git a/indra/newview/llavataractions.cpp b/indra/newview/llavataractions.cpp index 5bc3b3ac8d..752a2e7504 100644 --- a/indra/newview/llavataractions.cpp +++ b/indra/newview/llavataractions.cpp @@ -60,6 +60,7 @@  #include "llimview.h"			// for gIMMgr  #include "llmutelist.h"  #include "llnotificationsutil.h"	// for LLNotificationsUtil +#include "llpaneloutfitedit.h"  #include "llrecentpeople.h"  #include "llsidetray.h"  #include "lltrans.h" @@ -436,12 +437,28 @@ namespace action_give_inventory  	typedef std::set<LLUUID> uuid_set_t;  	/** +	 * Returns a pointer to 'Add More' inventory panel of Edit Outfit SP. +	 */ +	static LLInventoryPanel* get_outfit_editor_inventory_panel() +	{ +		LLPanelOutfitEdit* panel_outfit_edit = dynamic_cast<LLPanelOutfitEdit*>(LLSideTray::getInstance()->getPanel("panel_outfit_edit")); +		if (NULL == panel_outfit_edit) return NULL; + +		LLInventoryPanel* inventory_panel = panel_outfit_edit->findChild<LLInventoryPanel>("folder_view"); +		return inventory_panel; +	} + +	/**  	 * Checks My Inventory visibility.  	 */  	static bool is_give_inventory_acceptable()  	{  		LLInventoryPanel* active_panel = LLInventoryPanel::getActiveInventoryPanel(FALSE); -		if (NULL == active_panel) return false; +		if (!active_panel) +		{ +			active_panel = get_outfit_editor_inventory_panel(); +			if (!active_panel) return false; +		}  		// check selection in the panel  		const uuid_set_t inventory_selected_uuids = active_panel->getRootFolder()->getSelectionList(); @@ -621,9 +638,10 @@ namespace action_give_inventory  		LLInventoryPanel* active_panel = LLInventoryPanel::getActiveInventoryPanel(FALSE); -		if (NULL == active_panel) +		if (!active_panel)  		{ -			return; +			active_panel = get_outfit_editor_inventory_panel(); +			if (!active_panel) return;  		}  		const uuid_set_t inventory_selected_uuids = active_panel->getRootFolder()->getSelectionList(); diff --git a/indra/newview/llcofwearables.cpp b/indra/newview/llcofwearables.cpp index d83706de52..4c0f51056d 100644 --- a/indra/newview/llcofwearables.cpp +++ b/indra/newview/llcofwearables.cpp @@ -79,9 +79,7 @@ protected:  		}  		// Set proper label for the "Create new <WEARABLE_TYPE>" menu item. -		LLStringUtil::format_map_t args; -		args["[WEARABLE_TYPE]"] = LLWearableType::getTypeDefaultNewName(w_type); -		std::string new_label = LLTrans::getString("CreateNewWearable", args); +		std::string new_label = LLTrans::getString("create_new_" + LLWearableType::getTypeName(w_type));  		menu_item->setLabel(new_label);  	} @@ -333,6 +331,10 @@ BOOL LLCOFWearables::postBuild()  	mBodyPartsTab = getChild<LLAccordionCtrlTab>("tab_body_parts");  	mBodyPartsTab->setDropDownStateChangedCallback(boost::bind(&LLCOFWearables::onAccordionTabStateChanged, this, _1, _2)); +	mTab2AssetType[mClothingTab] = LLAssetType::AT_CLOTHING; +	mTab2AssetType[mAttachmentsTab] = LLAssetType::AT_OBJECT; +	mTab2AssetType[mBodyPartsTab] = LLAssetType::AT_BODYPART; +  	return LLPanel::postBuild();  } @@ -632,49 +634,17 @@ LLAssetType::EType LLCOFWearables::getExpandedAccordionAssetType()  	static type_map_t type_map;  	static LLAccordionCtrl* accordion_ctrl = getChild<LLAccordionCtrl>("cof_wearables_accordion"); +	const LLAccordionCtrlTab* expanded_tab = accordion_ctrl->getExpandedTab(); -	if (type_map.empty()) -	{ -		type_map["tab_clothing"] = LLAssetType::AT_CLOTHING; -		type_map["tab_attachments"] = LLAssetType::AT_OBJECT; -		type_map["tab_body_parts"] = LLAssetType::AT_BODYPART; -	} - -	const LLAccordionCtrlTab* tab = accordion_ctrl->getExpandedTab(); -	LLAssetType::EType result = LLAssetType::AT_NONE; - -	if (tab) -	{ -		type_map_t::iterator i = type_map.find(tab->getName()); -		llassert(i != type_map.end()); -		result = i->second; -	} - -	return result; +	return get_if_there(mTab2AssetType, expanded_tab, LLAssetType::AT_NONE);  }  LLAssetType::EType LLCOFWearables::getSelectedAccordionAssetType()  { -	//*TODO share the code with ::getExpandedAccordionAssetType(...)  	static LLAccordionCtrl* accordion_ctrl = getChild<LLAccordionCtrl>("cof_wearables_accordion");  	const LLAccordionCtrlTab* selected_tab = accordion_ctrl->getSelectedTab(); -	 -	if (selected_tab == mClothingTab) -	{ -		return LLAssetType::AT_CLOTHING; -	}  -	else if (selected_tab == mAttachmentsTab) -	{ -		return LLAssetType::AT_OBJECT; -	} -	else if (selected_tab == mBodyPartsTab) -	{ -		return LLAssetType::AT_BODYPART; -	} -	else -	{ -		return LLAssetType::AT_NONE; -	} + +	return get_if_there(mTab2AssetType, selected_tab, LLAssetType::AT_NONE);  }  void LLCOFWearables::onListRightClick(LLUICtrl* ctrl, S32 x, S32 y, LLListContextMenu* menu) diff --git a/indra/newview/llcofwearables.h b/indra/newview/llcofwearables.h index de148e0d46..0518d59df3 100644 --- a/indra/newview/llcofwearables.h +++ b/indra/newview/llcofwearables.h @@ -116,6 +116,8 @@ protected:  	LLAccordionCtrlTab* mLastSelectedTab; +	std::map<const LLAccordionCtrlTab*, LLAssetType::EType> mTab2AssetType; +  	LLCOFCallbacks mCOFCallbacks;  	LLListContextMenu* mClothingMenu; diff --git a/indra/newview/lldrawable.h b/indra/newview/lldrawable.h index 651dabff9e..08972853c3 100644 --- a/indra/newview/lldrawable.h +++ b/indra/newview/lldrawable.h @@ -313,8 +313,20 @@ private:  inline LLFace* LLDrawable::getFace(const S32 i) const  { -	llassert((U32)i < mFaces.size()); -	llassert(mFaces[i]); +	//switch these asserts to llerrs -- davep +	//llassert((U32)i < mFaces.size()); +	//llassert(mFaces[i]); + +	if ((U32) i >= mFaces.size()) +	{ +		llerrs << "Invalid face index." << llendl; +	} + +	if (!mFaces[i]) +	{ +		llerrs << "Null face found." << llendl; +	} +	  	return mFaces[i];  } diff --git a/indra/newview/llface.h b/indra/newview/llface.h index 67dd97e6f7..de533a6864 100644 --- a/indra/newview/llface.h +++ b/indra/newview/llface.h @@ -279,7 +279,7 @@ public:  	{  		bool operator()(const LLFace* const& lhs, const LLFace* const& rhs)  		{ -			return lhs->mDistance > rhs->mDistance; // farthest = first +			return !lhs || (rhs && (lhs->mDistance > rhs->mDistance)); // farthest = first  		}  	}; diff --git a/indra/newview/llfloaterland.cpp b/indra/newview/llfloaterland.cpp index 98f940c233..913bb676b0 100644 --- a/indra/newview/llfloaterland.cpp +++ b/indra/newview/llfloaterland.cpp @@ -58,6 +58,7 @@  #include "llpanellandaudio.h"  #include "llpanellandmedia.h"  #include "llradiogroup.h" +#include "llresmgr.h"					// getMonetaryString  #include "llscrolllistctrl.h"  #include "llscrolllistitem.h"  #include "llscrolllistcell.h" @@ -739,7 +740,8 @@ void LLPanelLandGeneral::refresh()  				cost_per_sqm = (F32)parcel->getSalePrice() / (F32)area;  			} -			mSaleInfoForSale1->setTextArg("[PRICE]", llformat("%d", parcel->getSalePrice())); +			S32 price = parcel->getSalePrice(); +			mSaleInfoForSale1->setTextArg("[PRICE]", LLResMgr::getInstance()->getMonetaryString(price));  			mSaleInfoForSale1->setTextArg("[PRICE_PER_SQM]", llformat("%.1f", cost_per_sqm));  			if (can_be_sold)  			{ diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp index 1ddbaaa95f..7ec6440dc3 100644 --- a/indra/newview/llinventorybridge.cpp +++ b/indra/newview/llinventorybridge.cpp @@ -2998,7 +2998,7 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item,  					// BAP - should skip if dup.  					if (move_is_into_current_outfit)  					{ -						LLAppearanceMgr::instance().addCOFItemLink(inv_item); +						LLAppearanceMgr::instance().wearItemOnAvatar(inv_item->getUUID(), true, true);  					}  					else  					{ diff --git a/indra/newview/llpanelclassified.cpp b/indra/newview/llpanelclassified.cpp index 70a7bf644b..7f027d299b 100644 --- a/indra/newview/llpanelclassified.cpp +++ b/indra/newview/llpanelclassified.cpp @@ -1792,6 +1792,7 @@ void LLPanelClassifiedEdit::onOpen(const LLSD& key)  	enableVerbs(is_new);  	enableEditing(is_new); +	showEditing(!is_new);  	resetDirty();  	setInfoLoaded(false);  } @@ -2011,6 +2012,12 @@ void LLPanelClassifiedEdit::enableEditing(bool enable)  	childSetEnabled("auto_renew", enable);  } +void LLPanelClassifiedEdit::showEditing(bool show) +{ +	childSetVisible("price_for_listing_label", show); +	childSetVisible("price_for_listing", show); +} +  std::string LLPanelClassifiedEdit::makeClassifiedName()  {  	std::string name; diff --git a/indra/newview/llpanelclassified.h b/indra/newview/llpanelclassified.h index 1157649a16..eaf652ca06 100644 --- a/indra/newview/llpanelclassified.h +++ b/indra/newview/llpanelclassified.h @@ -416,6 +416,8 @@ protected:  	void enableEditing(bool enable); +	void showEditing(bool show); +  	std::string makeClassifiedName();  	void setPriceForListing(S32 price); diff --git a/indra/newview/llpaneleditwearable.cpp b/indra/newview/llpaneleditwearable.cpp index 26f0b3f48f..14f05bdb17 100644 --- a/indra/newview/llpaneleditwearable.cpp +++ b/indra/newview/llpaneleditwearable.cpp @@ -963,8 +963,7 @@ void LLPanelEditWearable::updatePanelPickerControls(LLWearableType::EType type)  		for_each_picker_ctrl_entry <LLColorSwatchCtrl> (panel, type, boost::bind(update_color_swatch_ctrl, this, _1, _2));  		for_each_picker_ctrl_entry <LLTextureCtrl>     (panel, type, boost::bind(update_texture_ctrl, this, _1, _2));  	} - -	if (!is_modifiable || !is_copyable) +	else  	{  		// Disable controls  		for_each_picker_ctrl_entry <LLColorSwatchCtrl> (panel, type, boost::bind(set_enabled_color_swatch_ctrl, false, _1, _2)); diff --git a/indra/newview/llpaneloutfitedit.cpp b/indra/newview/llpaneloutfitedit.cpp index c397dd5092..f8350a56ef 100644 --- a/indra/newview/llpaneloutfitedit.cpp +++ b/indra/newview/llpaneloutfitedit.cpp @@ -196,7 +196,7 @@ private:  			LLMenuItemCallGL::Params p;  			p.name = type_name; -			p.label = LLWearableType::getTypeDefaultNewName(type); +			p.label = LLTrans::getString(LLWearableType::getTypeDefaultNewName(type));  			p.on_click.function_name = "Wearable.Create";  			p.on_click.parameter = LLSD(type_name); @@ -567,13 +567,20 @@ void LLPanelOutfitEdit::onSearchEdit(const std::string& string)  void LLPanelOutfitEdit::onPlusBtnClicked(void)  { -	LLUUID selected_id; -	getCurrentItemUUID(selected_id); - -	if (selected_id.isNull()) return; +	uuid_vec_t selected_items; +	getSelectedItemsUUID(selected_items); -	//replacing instead of adding the item -	LLAppearanceMgr::getInstance()->wearItemOnAvatar(selected_id, true, true); +	LLPointer<LLInventoryCallback> link_waiter = new LLUpdateAppearanceOnDestroy; +	 +	for(uuid_vec_t::iterator iter = selected_items.begin(); iter != selected_items.end(); iter++) +	{ +		LLUUID selected_id = *iter; +		if (!selected_id.isNull()) +		{ +			//replacing instead of adding the item +			LLAppearanceMgr::getInstance()->wearItemOnAvatar(selected_id, false, true, link_waiter); +		} +	}  }  void LLPanelOutfitEdit::onVisibilityChange() diff --git a/indra/newview/llscreenchannel.cpp b/indra/newview/llscreenchannel.cpp index ef89c07c60..40c99edecd 100644 --- a/indra/newview/llscreenchannel.cpp +++ b/indra/newview/llscreenchannel.cpp @@ -297,6 +297,12 @@ void LLScreenChannel::onToastDestroyed(LLToast* toast)  	{  		mStoredToastList.erase(it);  	} + +	// if destroyed toast is hovered - reset hovered +	if (mHoveredToast == toast) +	{ +		mHoveredToast = NULL; +	}  } diff --git a/indra/newview/llspatialpartition.cpp b/indra/newview/llspatialpartition.cpp index d6e9256fee..86faeeaa73 100644 --- a/indra/newview/llspatialpartition.cpp +++ b/indra/newview/llspatialpartition.cpp @@ -300,6 +300,7 @@ LLSpatialGroup::~LLSpatialGroup()  	}  	delete [] mOcclusionVerts; +	mOcclusionVerts = NULL;  	LLMemType mt(LLMemType::MTYPE_SPACE_PARTITION);  	clearDrawMap(); diff --git a/indra/newview/llspatialpartition.h b/indra/newview/llspatialpartition.h index 7896488379..48070cc438 100644 --- a/indra/newview/llspatialpartition.h +++ b/indra/newview/llspatialpartition.h @@ -164,8 +164,6 @@ public:  	static BOOL sNoDelete; //deletion of spatial groups and draw info not allowed if TRUE  	typedef std::vector<LLPointer<LLSpatialGroup> > sg_vector_t; -	typedef std::set<LLPointer<LLSpatialGroup> > sg_set_t; -	typedef std::list<LLPointer<LLSpatialGroup> > sg_list_t;  	typedef std::vector<LLPointer<LLSpatialBridge> > bridge_list_t;  	typedef std::vector<LLPointer<LLDrawInfo> > drawmap_elem_t;   	typedef std::map<U32, drawmap_elem_t > draw_map_t;	 diff --git a/indra/newview/lltoolpie.cpp b/indra/newview/lltoolpie.cpp index ae244cd8a1..95c4f01e46 100644 --- a/indra/newview/lltoolpie.cpp +++ b/indra/newview/lltoolpie.cpp @@ -53,6 +53,7 @@  #include "llmediaentry.h"  #include "llmenugl.h"  #include "llmutelist.h" +#include "llresmgr.h"  // getMonetaryString  #include "llselectmgr.h"  #include "lltoolfocus.h"  #include "lltoolgrab.h" @@ -808,7 +809,8 @@ BOOL LLToolPie::handleTooltipLand(std::string line, std::string tooltip_msg)  	if (hover_parcel && hover_parcel->getParcelFlag(PF_FOR_SALE))  	{  		LLStringUtil::format_map_t args; -		args["[AMOUNT]"] = llformat("%d", hover_parcel->getSalePrice()); +		S32 price = hover_parcel->getSalePrice(); +		args["[AMOUNT]"] = LLResMgr::getInstance()->getMonetaryString(price);  		line = LLTrans::getString("TooltipForSaleL$", args);  		tooltip_msg.append(line);  		tooltip_msg.push_back('\n'); @@ -906,13 +908,14 @@ BOOL LLToolPie::handleTooltipObject( LLViewerObject* hover_object, std::string l  			 || !existing_inspector->getVisible()  			 || existing_inspector->getKey()["object_id"].asUUID() != hover_object->getID()))  		{ -						 +  			// Add price to tooltip for items on sale  			bool for_sale = for_sale_selection(nodep);  			if(for_sale)  			{  				LLStringUtil::format_map_t args; -				args["[PRICE]"] = llformat ("%d", nodep->mSaleInfo.getSalePrice()); +				S32 price = nodep->mSaleInfo.getSalePrice(); +				args["[AMOUNT]"] = LLResMgr::getInstance()->getMonetaryString(price);  				tooltip_msg.append(LLTrans::getString("TooltipPrice", args) );  			} diff --git a/indra/newview/llviewerinventory.cpp b/indra/newview/llviewerinventory.cpp index 3430f265ae..1ff4d6db9e 100644 --- a/indra/newview/llviewerinventory.cpp +++ b/indra/newview/llviewerinventory.cpp @@ -625,7 +625,15 @@ bool LLViewerInventoryCategory::fetch()  		// AIS folks are aware of the issue and have a fix in process.  		// see ticket for details. -		std::string url = gAgent.getRegion()->getCapability("WebFetchInventoryDescendents"); +		std::string url; +		if (gAgent.getRegion()) +		{ +			url = gAgent.getRegion()->getCapability("WebFetchInventoryDescendents"); +		} +		else +		{ +			llwarns << "agent region is null" << llendl; +		}  		if (!url.empty()) //Capability found.  Build up LLSD and use it.  		{  			LLInventoryModelBackgroundFetch::instance().start(mUUID, false);			 diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp index 9a2866832a..6d93de2383 100644 --- a/indra/newview/llviewerobject.cpp +++ b/indra/newview/llviewerobject.cpp @@ -765,12 +765,19 @@ U32 LLViewerObject::processUpdateMessage(LLMessageSystem *mesgsys,  	{  		LLViewerRegion* regionp = LLWorld::getInstance()->getRegionFromHandle(region_handle); -		if(regionp != mRegionp && regionp && mRegionp) +		if(regionp != mRegionp && regionp && mRegionp)//region cross  		{ +			//this is the redundant position and region update, but it is necessary in case the viewer misses the following  +			//position and region update messages from sim. +			//this redundant update should not cause any problems.  			LLVector3 delta_pos =  mRegionp->getOriginAgent() - regionp->getOriginAgent(); -			setPosition(getPosition() + delta_pos) ; //update the region position immediately.		 +			setPositionParent(getPosition() + delta_pos); //update to the new region position immediately. +			setRegion(regionp) ; //change the region. +		} +		else +		{ +			mRegionp = regionp ;  		} -		mRegionp = regionp ;  	}	  	if (!mRegionp) diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index 844ad6ca2d..47e35ca0c4 100644 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -2095,8 +2095,10 @@ void LLVOAvatar::computeBodySize()  	if (new_body_size != mBodySize)  	{  		mBodySize = new_body_size; -		if (isSelf()) + +		if (isSelf() && !LLAppearanceMgr::instance().isInUpdateAppearanceFromCOF())  		{	// notify simulator of change in size +			// but not if we are in the middle of updating appearance  			gAgent.sendAgentSetAppearance();  		}  	} diff --git a/indra/newview/llvotree.cpp b/indra/newview/llvotree.cpp index eb5b6c6618..5431aec07c 100644 --- a/indra/newview/llvotree.cpp +++ b/indra/newview/llvotree.cpp @@ -313,7 +313,10 @@ U32 LLVOTree::processUpdateMessage(LLMessageSystem *mesgsys,  	//  	//  Load Species-Specific data   	// +	static const S32 MAX_TREE_TEXTURE_VIRTURE_SIZE_RESET_INTERVAL = 32 ; //frames.  	mTreeImagep = LLViewerTextureManager::getFetchedTexture(sSpeciesTable[mSpecies]->mTextureID, TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE); +	mTreeImagep->setMaxVirtualSizeResetInterval(MAX_TREE_TEXTURE_VIRTURE_SIZE_RESET_INTERVAL); //allow to wait for at most 16 frames to reset virtual size. +  	mBranchLength = sSpeciesTable[mSpecies]->mBranchLength;  	mTrunkLength = sSpeciesTable[mSpecies]->mTrunkLength;  	mLeafScale = sSpeciesTable[mSpecies]->mLeafScale; diff --git a/indra/newview/llwearableitemslist.cpp b/indra/newview/llwearableitemslist.cpp index 9f9a9bef35..3887f64618 100644 --- a/indra/newview/llwearableitemslist.cpp +++ b/indra/newview/llwearableitemslist.cpp @@ -576,8 +576,8 @@ LLContextMenu* LLWearableItemsList::ContextMenu::createMenu()  	const uuid_vec_t& ids = mUUIDs;		// selected items IDs  	LLUUID selected_id = ids.front();	// ID of the first selected item -	functor_t wear = boost::bind(&LLAppearanceMgr::wearItemOnAvatar, LLAppearanceMgr::getInstance(), _1, true, true); -	functor_t add = boost::bind(&LLAppearanceMgr::wearItemOnAvatar, LLAppearanceMgr::getInstance(), _1, true, false); +	functor_t wear = boost::bind(&LLAppearanceMgr::wearItemOnAvatar, LLAppearanceMgr::getInstance(), _1, true, true, LLPointer<LLInventoryCallback>(NULL)); +	functor_t add = boost::bind(&LLAppearanceMgr::wearItemOnAvatar, LLAppearanceMgr::getInstance(), _1, true, false, LLPointer<LLInventoryCallback>(NULL));  	functor_t take_off = boost::bind(&LLAppearanceMgr::removeItemFromAvatar, LLAppearanceMgr::getInstance(), _1);  	// Register handlers common for all wearable types. @@ -725,10 +725,8 @@ void LLWearableItemsList::ContextMenu::updateItemsLabels(LLContextMenu* menu)  	LLViewerInventoryItem* item = gInventory.getLinkedItem(mUUIDs.back());  	if (!item || !item->isWearableType()) return; -	LLStringUtil::format_map_t args;  	LLWearableType::EType w_type = item->getWearableType(); -	args["[WEARABLE_TYPE]"] = LLWearableType::getTypeDefaultNewName(w_type); -	std::string new_label = LLTrans::getString("CreateNewWearable", args); +	std::string new_label = LLTrans::getString("create_new_" + LLWearableType::getTypeName(w_type));  	LLMenuItemGL* menu_item = menu->getChild<LLMenuItemGL>("create_new");  	menu_item->setLabel(new_label); diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index 3716a5e9d9..7d0f763bd1 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -1794,7 +1794,7 @@ void LLPipeline::rebuildPriorityGroups()  	assertInitialized();  	// Iterate through all drawables on the priority build queue, -	for (LLSpatialGroup::sg_list_t::iterator iter = mGroupQ1.begin(); +	for (LLSpatialGroup::sg_vector_t::iterator iter = mGroupQ1.begin();  		 iter != mGroupQ1.end(); ++iter)  	{  		LLSpatialGroup* group = *iter; @@ -2253,7 +2253,6 @@ void LLPipeline::stateSort(LLCamera& camera, LLCullResult &result)  			}  		}  	} -	llpushcallstacks ;  	{  		LLFastTimer ftm(FTM_STATESORT_DRAWABLE);  		for (LLCullResult::drawable_list_t::iterator iter = sCull->beginVisibleList(); @@ -2266,15 +2265,12 @@ void LLPipeline::stateSort(LLCamera& camera, LLCullResult &result)  			}  		}  	} -	llpushcallstacks ;	  	{  		LLFastTimer ftm(FTM_CLIENT_COPY);  		LLVertexBuffer::clientCopy();  	} -	llpushcallstacks ; -	postSort(camera); -	llpushcallstacks ; +	postSort(camera);	  }  void LLPipeline::stateSort(LLSpatialGroup* group, LLCamera& camera) @@ -2544,6 +2540,7 @@ void LLPipeline::postSort(LLCamera& camera)  	assertInitialized(); +	llpushcallstacks ;  	//rebuild drawable geometry  	for (LLCullResult::sg_list_t::iterator i = sCull->beginDrawableGroups(); i != sCull->endDrawableGroups(); ++i)  	{ @@ -2554,7 +2551,7 @@ void LLPipeline::postSort(LLCamera& camera)  			group->rebuildGeom();  		}  	} - +	llpushcallstacks ;  	//rebuild groups  	sCull->assertDrawMapsEmpty(); @@ -2574,6 +2571,7 @@ void LLPipeline::postSort(LLCamera& camera)  	rebuildPriorityGroups(); +	llpushcallstacks ;  	const S32 bin_count = 1024*8; @@ -2675,7 +2673,7 @@ void LLPipeline::postSort(LLCamera& camera)  		std::sort(sCull->beginAlphaGroups(), sCull->endAlphaGroups(), LLSpatialGroup::CompareDepthGreater());  	} -	 +	llpushcallstacks ;  	// only render if the flag is set. The flag is only set if we are in edit mode or the toggle is set in the menus  	if (LLFloaterReg::instanceVisible("beacons") && !sShadowRender)  	{ @@ -2723,7 +2721,7 @@ void LLPipeline::postSort(LLCamera& camera)  			forAllVisibleDrawables(renderSoundHighlights);  		}  	} - +	llpushcallstacks ;  	// If managing your telehub, draw beacons at telehub and currently selected spawnpoint.  	if (LLFloaterTelehub::renderBeacons())  	{ @@ -2753,6 +2751,7 @@ void LLPipeline::postSort(LLCamera& camera)  	}  	//LLSpatialGroup::sNoDelete = FALSE; +	llpushcallstacks ;  } diff --git a/indra/newview/pipeline.h b/indra/newview/pipeline.h index 89649a0682..862bfc2f30 100644 --- a/indra/newview/pipeline.h +++ b/indra/newview/pipeline.h @@ -584,7 +584,7 @@ protected:  	//  	LLDrawable::drawable_list_t 	mBuildQ1; // priority  	LLDrawable::drawable_list_t 	mBuildQ2; // non-priority -	LLSpatialGroup::sg_list_t		mGroupQ1; //priority +	LLSpatialGroup::sg_vector_t		mGroupQ1; //priority  	LLSpatialGroup::sg_vector_t		mGroupQ2; // non-priority  	LLViewerObject::vobj_list_t		mCreateQ; diff --git a/indra/newview/skins/default/textures/icons/Edit_Wrench.png b/indra/newview/skins/default/textures/icons/Edit_Wrench.pngBinary files differ index 1c43960d02..250697b4b1 100644 --- a/indra/newview/skins/default/textures/icons/Edit_Wrench.png +++ b/indra/newview/skins/default/textures/icons/Edit_Wrench.png diff --git a/indra/newview/skins/default/textures/icons/Hierarchy_View_On.png b/indra/newview/skins/default/textures/icons/Hierarchy_View_On.pngBinary files differ index c590a5a5d3..296311e797 100644 --- a/indra/newview/skins/default/textures/icons/Hierarchy_View_On.png +++ b/indra/newview/skins/default/textures/icons/Hierarchy_View_On.png diff --git a/indra/newview/skins/default/textures/icons/Shop.png b/indra/newview/skins/default/textures/icons/Shop.pngBinary files differ index 9d091fed44..81c13eeabd 100644 --- a/indra/newview/skins/default/textures/icons/Shop.png +++ b/indra/newview/skins/default/textures/icons/Shop.png diff --git a/indra/newview/skins/default/xui/da/strings.xml b/indra/newview/skins/default/xui/da/strings.xml index 32f37c038e..71c9f74dc0 100644 --- a/indra/newview/skins/default/xui/da/strings.xml +++ b/indra/newview/skins/default/xui/da/strings.xml @@ -233,7 +233,7 @@  		Klik for at starte secondlife:// kommando  	</string>  	<string name="CurrentURL" value=" Nuværende URL: [CurrentURL]"/> -	<string name="TooltipPrice" value="L$[PRICE]-"/> +	<string name="TooltipPrice" value="L$[AMOUNT]: "/>  	<string name="SLurlLabelTeleport">  		Teleportér til  	</string> diff --git a/indra/newview/skins/default/xui/de/menu_cof_clothing.xml b/indra/newview/skins/default/xui/de/menu_cof_clothing.xml index 5cf31791ba..7fced273a7 100644 --- a/indra/newview/skins/default/xui/de/menu_cof_clothing.xml +++ b/indra/newview/skins/default/xui/de/menu_cof_clothing.xml @@ -1,6 +1,7 @@  <?xml version="1.0" encoding="utf-8" standalone="yes"?>  <context_menu name="COF Clothing">  	<menu_item_call label="Ausziehen" name="take_off"/> +	<menu_item_call label="Ersetzen" name="replace"/>  	<menu_item_call label="Eine Kategorie nach oben" name="move_up"/>  	<menu_item_call label="Eine Kategorie nach unten" name="move_down"/>  	<menu_item_call label="Bearbeiten" name="edit"/> diff --git a/indra/newview/skins/default/xui/de/panel_edit_alpha.xml b/indra/newview/skins/default/xui/de/panel_edit_alpha.xml index b6c53be778..4b48950341 100644 --- a/indra/newview/skins/default/xui/de/panel_edit_alpha.xml +++ b/indra/newview/skins/default/xui/de/panel_edit_alpha.xml @@ -1,10 +1,10 @@  <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel name="edit_alpha_panel" width="320"> -	<panel name="avatar_alpha_color_panel" width="300"> -		<texture_picker label="Alpha: Unten" name="Lower Alpha" tool_tip="Zum Auswählen eines Bildes hier klicken" width="70"/> -		<texture_picker label="Alpha: Oben" name="Upper Alpha" tool_tip="Zum Auswählen eines Bildes hier klicken" width="66"/> +<panel name="edit_alpha_panel"> +	<panel name="avatar_alpha_color_panel"> +		<texture_picker label="Alpha: Unten" name="Lower Alpha" tool_tip="Zum Auswählen eines Bildes hier klicken"/> +		<texture_picker label="Alpha: Oben" name="Upper Alpha" tool_tip="Zum Auswählen eines Bildes hier klicken"/>  		<texture_picker label="Kopf: Alpha" name="Head Alpha" tool_tip="Zum Auswählen eines Bildes hier klicken"/> -		<texture_picker label="Alpha: Augen" name="Eye Alpha" tool_tip="Zum Auswählen eines Bildes hier klicken" width="72"/> -		<texture_picker label="Alpha: Haare" name="Hair Alpha" tool_tip="Zum Auswählen eines Bildes hier klicken" width="70"/> +		<texture_picker label="Alpha: Augen" name="Eye Alpha" tool_tip="Zum Auswählen eines Bildes hier klicken"/> +		<texture_picker label="Alpha: Haare" name="Hair Alpha" tool_tip="Zum Auswählen eines Bildes hier klicken"/>  	</panel>  </panel> diff --git a/indra/newview/skins/default/xui/de/panel_edit_tattoo.xml b/indra/newview/skins/default/xui/de/panel_edit_tattoo.xml index 830c7b0bb8..075a9d752a 100644 --- a/indra/newview/skins/default/xui/de/panel_edit_tattoo.xml +++ b/indra/newview/skins/default/xui/de/panel_edit_tattoo.xml @@ -1,9 +1,9 @@  <?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel name="edit_tattoo_panel">  	<panel name="avatar_tattoo_color_panel"> -		<texture_picker label="Kopftattoo" name="Head Tattoo" tool_tip="Zum Auswählen eines Bildes hier klicken" width="80"/> -		<texture_picker label="Obere Tattoos" name="Upper Tattoo" tool_tip="Zum Auswählen eines Bildes hier klicken" width="80"/> -		<texture_picker label="Untere Tattoos" name="Lower Tattoo" tool_tip="Zum Auswählen eines Bildes hier klicken" width="80"/> +		<texture_picker label="Kopftattoo" name="Head Tattoo" tool_tip="Zum Auswählen eines Bildes hier klicken"/> +		<texture_picker label="Obere Tattoos" name="Upper Tattoo" tool_tip="Zum Auswählen eines Bildes hier klicken"/> +		<texture_picker label="Untere Tattoos" name="Lower Tattoo" tool_tip="Zum Auswählen eines Bildes hier klicken"/>  		<color_swatch label="Farbe/Ton" name="Color/Tint" tool_tip="Klicken Sie hier, um die Farbauswahl zu öffnen"/>  	</panel>  </panel> diff --git a/indra/newview/skins/default/xui/de/strings.xml b/indra/newview/skins/default/xui/de/strings.xml index f6ae17239a..206017c06c 100644 --- a/indra/newview/skins/default/xui/de/strings.xml +++ b/indra/newview/skins/default/xui/de/strings.xml @@ -248,7 +248,7 @@  		Anklicken, um Befehl secondlife:// auszuführen  	</string>  	<string name="CurrentURL" value=" CurrentURL: [CurrentURL]"/> -	<string name="TooltipPrice" value="[PRICE] L$"/> +	<string name="TooltipPrice" value="[AMOUNT]L$: "/>  	<string name="SLurlLabelTeleport">  		Teleportieren nach  	</string> diff --git a/indra/newview/skins/default/xui/en/floater_publish_classified.xml b/indra/newview/skins/default/xui/en/floater_publish_classified.xml index f25c170f33..6ce9ed6e77 100644 --- a/indra/newview/skins/default/xui/en/floater_publish_classified.xml +++ b/indra/newview/skins/default/xui/en/floater_publish_classified.xml @@ -25,10 +25,11 @@ Remember, Classified fees are non-refundable.      <spinner       decimal_digits="0"       follows="left|top" +     font="SansSerif"       halign="left"       height="23"       increment="1" -     label_width="45" +     label_width="50"       label="Price: L$ "       v_pad="10"       layout="topleft" diff --git a/indra/newview/skins/default/xui/en/floater_tools.xml b/indra/newview/skins/default/xui/en/floater_tools.xml index 194a93977f..a96dbe3553 100644 --- a/indra/newview/skins/default/xui/en/floater_tools.xml +++ b/indra/newview/skins/default/xui/en/floater_tools.xml @@ -910,29 +910,34 @@               width="75">                  Group:              </text> +            <name_box +             follows="left|top" +             height="18" +             initial_value="Loading..." +             layout="topleft" +             left_pad="23" +             name="Group Name Proxy" +             width="142" />              <button  			 follows="top|left" -			 height="10" -			 image_disabled="Activate_Checkmark" -			 image_selected="Activate_Checkmark" -			 image_unselected="Activate_Checkmark" -			 image_color="White_50" +			 height="23" +			 image_overlay="Edit_Wrench"  			 layout="topleft" -			 left_pad="0" -			 top_delta="0" +			 left_pad="3"  			 name="button set group"  			 tab_stop="false"  			 tool_tip="Choose a group to share this object's permissions" -			 width="10" /> -            <name_box +			 width="23" /> +            <check_box +             height="19"               follows="left|top" -             height="18" -             initial_value="Loading..." +             label="Share"               layout="topleft" -             left_pad="5" -             top_delta="-1" -             name="Group Name Proxy" -             width="150" /> +             name="checkbox share with group" +             tool_tip="Allow all members of the set group to share your modify permissions for this object. You must Deed to enable role restrictions." +             top_pad="10" +             left="106" +             width="87" />              <button               follows="top|left"               height="23" @@ -940,26 +945,16 @@               label_selected="Deed"               layout="topleft"               name="button deed" -             top_pad="0" -             left="108" +             left_pad="3"               tool_tip="Deeding gives this item away with next owner permissions. Group shared objects can be deeded by a group officer."               width="80" /> -            <check_box -             height="19" -             follows="left|top" -             label="Share" -             layout="topleft" -             name="checkbox share with group" -             tool_tip="Allow all members of the set group to share your modify permissions for this object. You must Deed to enable role restrictions." -             left_pad="3" -             width="100" />              <text               type="string"               length="1"               follows="left|top"               height="16"               layout="topleft" -             top_pad="15" +             top_pad="10"               left="10"               name="label click action"               width="98"> diff --git a/indra/newview/skins/default/xui/en/menu_inventory.xml b/indra/newview/skins/default/xui/en/menu_inventory.xml index 5c19f1932d..c0046d8e28 100644 --- a/indra/newview/skins/default/xui/en/menu_inventory.xml +++ b/indra/newview/skins/default/xui/en/menu_inventory.xml @@ -472,7 +472,7 @@       layout="topleft"        name="Paste Separator" />      <menu_item_call -     label="Remove Link" +     label="Delete"       layout="topleft"       name="Remove Link">          <menu_item_call.on_click diff --git a/indra/newview/skins/default/xui/en/panel_edit_classified.xml b/indra/newview/skins/default/xui/en/panel_edit_classified.xml index cbdd548577..9408f193fd 100644 --- a/indra/newview/skins/default/xui/en/panel_edit_classified.xml +++ b/indra/newview/skins/default/xui/en/panel_edit_classified.xml @@ -261,6 +261,34 @@           name="auto_renew"           top_pad="15"           width="250" /> +        <text +         follows="left|top" +         height="10" +         layout="topleft" +         left="10" +         name="price_for_listing_label" +         text_color="white" +         top_pad="15" +         value="Price for listing:" +         width="250" /> +        <spinner +         decimal_digits="0" +         follows="left|top" +         halign="left" +         height="23" +         increment="1" +         label_width="20" +         label="L$" +         v_pad="10" +         layout="topleft" +         left="10" +         value="50" +         min_val="50" +         max_val="99999" +         name="price_for_listing" +         top_pad="5" +         tool_tip="Price for listing." +         width="105" />       </panel>      </scroll_container>      <panel diff --git a/indra/newview/skins/default/xui/en/panel_outfit_edit.xml b/indra/newview/skins/default/xui/en/panel_outfit_edit.xml index adc38b966c..cf174da2f0 100644 --- a/indra/newview/skins/default/xui/en/panel_outfit_edit.xml +++ b/indra/newview/skins/default/xui/en/panel_outfit_edit.xml @@ -406,6 +406,7 @@ It is calculated as border_size + 2*UIResizeBarOverlap           left_pad="1"           name="shop_btn_1"           top="1" +         tool_tip="Visit the SL Marketplace. You can also select something you are wearing, then click here to see more things like it"           width="31" />      </panel> @@ -480,6 +481,7 @@ It is calculated as border_size + 2*UIResizeBarOverlap           left_pad="1"           name="shop_btn_2"           top="1" +         tool_tip="Visit the SL Marketplace. You can also select something you are wearing, then click here to see more things like it"           width="31" />      </panel> diff --git a/indra/newview/skins/default/xui/en/panel_outfits_list.xml b/indra/newview/skins/default/xui/en/panel_outfits_list.xml index 27e23440df..b43aa0a824 100644 --- a/indra/newview/skins/default/xui/en/panel_outfits_list.xml +++ b/indra/newview/skins/default/xui/en/panel_outfits_list.xml @@ -14,9 +14,9 @@       background_visible="true"       bg_alpha_color="DkGray2"       bg_opaque_color="DkGray2" -     no_matched_tabs_text.value="Didn't find what you're looking for? Try [secondlife:///app/search/all/[SEARCH_TERM] Search]." +     no_matched_tabs_text.value="NoOutfitsTabsMatched"       no_matched_tabs_text.v_pad="10" -     no_visible_tabs_text.value="..." +     no_visible_tabs_text.value="NoOutfits"       follows="all"       height="400"       layout="topleft" diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml index 1e8d0d2fe5..ece57a6682 100644 --- a/indra/newview/skins/default/xui/en/strings.xml +++ b/indra/newview/skins/default/xui/en/strings.xml @@ -67,7 +67,7 @@  	<string name="SentToInvalidRegion">You were sent to an invalid region.</string>  	<string name="TestingDisconnect">Testing viewer disconnect</string> -	<!-- Tooltip, lltooltipview.cpp --> +	<!-- Tooltip -->  	<string name="TooltipPerson">Person</string><!-- Object under mouse pointer is an avatar -->  	<string name="TooltipNoName">(no name)</string> <!-- No name on an object -->  	<string name="TooltipOwner">Owner:</string> <!-- Owner name follows --> @@ -83,6 +83,7 @@  	<string name="TooltipFlagNoScripts">No Scripts</string>  	<string name="TooltipLand">Land:</string>  	<string name="TooltipMustSingleDrop">Only a single item can be dragged here</string> +	<string name="TooltipPrice" value="L$[AMOUNT]: "/>  	<!-- tooltips for Urls -->  	<string name="TooltipHttpUrl">Click to view this web page</string> @@ -103,8 +104,6 @@  	<string name="TooltipMapUrl">Click to view this location on a map</string>  	<string name="TooltipSLAPP">Click to run the secondlife:// command</string>  	<string name="CurrentURL" value=" CurrentURL: [CurrentURL]" />	 -  <string name="TooltipPrice" value=" L$[PRICE]-" /> -    	<!-- text for SLURL labels -->  	<string name="SLurlLabelTeleport">Teleport to</string> @@ -1830,9 +1829,26 @@ Clears (deletes) the media and all params from the given face.  	<string name="tattoo_not_worn">Tattoo not worn</string>  	<string name="invalid_not_worn">invalid</string> +	<!-- Create new wearable of the specified type --> +	<string name="create_new_shape">Create new shape</string> +	<string name="create_new_skin">Create new skin</string> +	<string name="create_new_hair">Create new hair</string> +	<string name="create_new_eyes">Create new eyes</string> +	<string name="create_new_shirt">Create new shirt</string> +	<string name="create_new_pants">Create new pants</string> +	<string name="create_new_shoes">Create new shoes</string> +	<string name="create_new_socks">Create new socks</string> +	<string name="create_new_jacket">Create new jacket</string> +	<string name="create_new_gloves">Create new gloves</string> +	<string name="create_new_undershirt">Create new undershirt</string> +	<string name="create_new_underpants">Create new underpants</string> +	<string name="create_new_skirt">Create new skirt</string> +	<string name="create_new_alpha">Create new alpha</string> +	<string name="create_new_tattoo">Create new tattoo</string> +	<string name="create_new_invalid">invalid</string> +    <!-- Wearable List-->    <string name="NewWearable">New [WEARABLE_ITEM]</string> -  <string name="CreateNewWearable">Create [WEARABLE_TYPE]</string>  	<!-- LLGroupNotify -->  	<!-- used in the construction of a Group Notice blue dialog box, buttons, tooltip etc. Seems to be no longer utilized by code in Viewer 2.0 --> @@ -2172,12 +2188,17 @@ Clears (deletes) the media and all params from the given face.  	<string name="PanelDirEventsDateText">[mthnum,datetime,slt]/[day,datetime,slt]</string>  	<!-- panel contents --> +	<string name="PanelContentsTooltip">Content of object</string>  	<string name="PanelContentsNewScript">New Script</string>  	<string name="PanelContentsTooltip">Content of object</string>    <!-- panel preferences general -->    <string name="BusyModeResponseDefault">The Resident you messaged is in 'busy mode' which means they have requested not to be disturbed.  Your message will still be shown in their IM panel for later viewing.</string> +	<!-- Outfits Panel --> +	<string name="NoOutfits">You don't have any outfits yet. Try [secondlife:///app/search/all/ Search]</string> +	<string name="NoOutfitsTabsMatched">Didn't find what you're looking for? Try [secondlife:///app/search/all/[SEARCH_TERM] Search].</string> +  	<!-- Mute -->  	<string name="MuteByName">(By name)</string>  	<string name="MuteAgent">(Resident)</string> diff --git a/indra/newview/skins/default/xui/es/strings.xml b/indra/newview/skins/default/xui/es/strings.xml index 717665f4d9..17e9f687b2 100644 --- a/indra/newview/skins/default/xui/es/strings.xml +++ b/indra/newview/skins/default/xui/es/strings.xml @@ -236,7 +236,7 @@  		Pulsa para ejecutar el comando secondlife://  	</string>  	<string name="CurrentURL" value="URL actual: [CurrentURL]"/> -	<string name="TooltipPrice" value="[PRICE] L$"/> +	<string name="TooltipPrice" value="[AMOUNT]L$: "/>  	<string name="SLurlLabelTeleport">  		Teleportarse a  	</string> diff --git a/indra/newview/skins/default/xui/fr/panel_edit_tattoo.xml b/indra/newview/skins/default/xui/fr/panel_edit_tattoo.xml index 9a6939e6b7..086542dee2 100644 --- a/indra/newview/skins/default/xui/fr/panel_edit_tattoo.xml +++ b/indra/newview/skins/default/xui/fr/panel_edit_tattoo.xml @@ -1,9 +1,9 @@  <?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel name="edit_tattoo_panel">  	<panel name="avatar_tattoo_color_panel"> -		<texture_picker label="Tatouage tête" name="Head Tattoo" tool_tip="Cliquez pour sélectionner une image" width="76"/> -		<texture_picker label="Tatouage haut" name="Upper Tattoo" tool_tip="Cliquez pour sélectionner une image" width="80"/> -		<texture_picker label="Tatouage bas" name="Lower Tattoo" tool_tip="Cliquez pour sélectionner une image" width="76"/> +		<texture_picker label="Tatouage tête" name="Head Tattoo" tool_tip="Cliquez pour sélectionner une image"/> +		<texture_picker label="Tatouage haut" name="Upper Tattoo" tool_tip="Cliquez pour sélectionner une image"/> +		<texture_picker label="Tatouage bas" name="Lower Tattoo" tool_tip="Cliquez pour sélectionner une image"/>  		<color_swatch label="Coul./Teinte" name="Color/Tint" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs"/>  	</panel>  </panel> diff --git a/indra/newview/skins/default/xui/fr/strings.xml b/indra/newview/skins/default/xui/fr/strings.xml index 604398a658..15368c715f 100644 --- a/indra/newview/skins/default/xui/fr/strings.xml +++ b/indra/newview/skins/default/xui/fr/strings.xml @@ -248,7 +248,7 @@  		Cliquez pour exécuter la commande secondlife:// command  	</string>  	<string name="CurrentURL" value=" URL actuelle : [CurrentURL]"/> -	<string name="TooltipPrice" value="[PRICE] L$-"/> +	<string name="TooltipPrice" value="[AMOUNT]L$: "/>  	<string name="SLurlLabelTeleport">  		Me téléporter vers  	</string> diff --git a/indra/newview/skins/default/xui/it/strings.xml b/indra/newview/skins/default/xui/it/strings.xml index aeaf8098b9..5554a3ca4f 100644 --- a/indra/newview/skins/default/xui/it/strings.xml +++ b/indra/newview/skins/default/xui/it/strings.xml @@ -242,7 +242,7 @@  		Clicca per avviare il comando secondlife://  	</string>  	<string name="CurrentURL" value="URL attuale: [CurrentURL]"/> -	<string name="TooltipPrice" value="L$ [PRICE]-"/> +	<string name="TooltipPrice" value="L$[AMOUNT]: "/>  	<string name="SLurlLabelTeleport">  		Teleportati a  	</string> diff --git a/indra/newview/skins/default/xui/ja/panel_edit_tattoo.xml b/indra/newview/skins/default/xui/ja/panel_edit_tattoo.xml index c3f8c12620..f4cfe6d83f 100644 --- a/indra/newview/skins/default/xui/ja/panel_edit_tattoo.xml +++ b/indra/newview/skins/default/xui/ja/panel_edit_tattoo.xml @@ -1,9 +1,9 @@  <?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel name="edit_tattoo_panel">  	<panel name="avatar_tattoo_color_panel"> -		<texture_picker label="頭部のタトゥー" name="Head Tattoo" tool_tip="クリックして写真を選択" width="70"/> -		<texture_picker label="上部のタトゥー" name="Upper Tattoo" tool_tip="クリックして写真を選択" width="70"/> -		<texture_picker label="下部のタトゥー" name="Lower Tattoo" tool_tip="クリックして写真を選択" width="70"/> +		<texture_picker label="頭部のタトゥー" name="Head Tattoo" tool_tip="クリックして写真を選択"/> +		<texture_picker label="上部のタトゥー" name="Upper Tattoo" tool_tip="クリックして写真を選択"/> +		<texture_picker label="下部のタトゥー" name="Lower Tattoo" tool_tip="クリックして写真を選択"/>  		<color_swatch label="色・色彩配合" name="Color/Tint" tool_tip="クリックしてカラーピッカーを開きます"/>  	</panel>  </panel> diff --git a/indra/newview/skins/default/xui/ja/strings.xml b/indra/newview/skins/default/xui/ja/strings.xml index 619f9fc9ef..5aab0875f4 100644 --- a/indra/newview/skins/default/xui/ja/strings.xml +++ b/indra/newview/skins/default/xui/ja/strings.xml @@ -248,7 +248,7 @@  		クリックして secondlife:// コマンドを出します  	</string>  	<string name="CurrentURL" value=" 現在の URL: [CurrentURL]"/> -	<string name="TooltipPrice" value="L$[PRICE]-"/> +	<string name="TooltipPrice" value="L$[AMOUNT]: "/>  	<string name="SLurlLabelTeleport">  		テレポート  	</string> diff --git a/indra/newview/skins/default/xui/pl/strings.xml b/indra/newview/skins/default/xui/pl/strings.xml index f110052f68..99539a84f5 100644 --- a/indra/newview/skins/default/xui/pl/strings.xml +++ b/indra/newview/skins/default/xui/pl/strings.xml @@ -215,7 +215,7 @@  		Kliknij by uruchomić secondlife:// command  	</string>  	<string name="CurrentURL" value=" Obecny Adres: [CurrentURL]"/> -	<string name="TooltipPrice" value="L$[PRICE]-"/> +	<string name="TooltipPrice" value="L$[AMOUNT]: "/>  	<string name="SLurlLabelTeleport">  		Teleportuj do  	</string> diff --git a/indra/newview/skins/default/xui/pt/strings.xml b/indra/newview/skins/default/xui/pt/strings.xml index ca32412058..701e18a58a 100644 --- a/indra/newview/skins/default/xui/pt/strings.xml +++ b/indra/newview/skins/default/xui/pt/strings.xml @@ -236,7 +236,7 @@  		Clique para ativar no secondlife:// comando  	</string>  	<string name="CurrentURL" value="URL atual: [CurrentURL]"/> -	<string name="TooltipPrice" value="L$[PRICE]-"/> +	<string name="TooltipPrice" value="L$[AMOUNT]: "/>  	<string name="SLurlLabelTeleport">  		Teletransportar para  	</string> | 
