diff options
| author | Brad Payne (Vir Linden) <vir@lindenlab.com> | 2010-07-21 15:28:28 -0400 | 
|---|---|---|
| committer | Brad Payne (Vir Linden) <vir@lindenlab.com> | 2010-07-21 15:28:28 -0400 | 
| commit | c3973a4895a5827a5a95dd15e99813bc32e11993 (patch) | |
| tree | 4c06aa501b4500b2ef883664d1c6176ced05ee6b | |
| parent | 842e5111ae2d0a83755ff902afa43dc84e45662b (diff) | |
EXT-8135 FIX - use LLUpdateAppearanceOnDestroy callback to postpone appearance update until all links are created
| -rw-r--r-- | indra/newview/llappearancemgr.cpp | 12 | ||||
| -rw-r--r-- | indra/newview/llappearancemgr.h | 2 | ||||
| -rw-r--r-- | indra/newview/llwearableitemslist.cpp | 6 | 
3 files changed, 16 insertions, 4 deletions
diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp index d2449abf08..d6ac6e1e5e 100644 --- a/indra/newview/llappearancemgr.cpp +++ b/indra/newview/llappearancemgr.cpp @@ -2726,3 +2726,15 @@ BOOL LLAppearanceMgr::getIsProtectedCOFItem(const LLUUID& obj_id) const  	return FALSE;  	*/  } + +void wear_multiple(const uuid_vec_t& ids, bool replace) +{ +	LLPointer<LLInventoryCallback> cb = new LLUpdateAppearanceOnDestroy; +	 +	uuid_vec_t::const_iterator it; +	for (it = ids.begin(); it != ids.end(); ++it) +	{ +		LLAppearanceMgr::instance().wearItemOnAvatar(*it,false,replace,cb); +	} +} + diff --git a/indra/newview/llappearancemgr.h b/indra/newview/llappearancemgr.h index 84c911c038..a6cd129306 100644 --- a/indra/newview/llappearancemgr.h +++ b/indra/newview/llappearancemgr.h @@ -418,4 +418,6 @@ void callAfterCategoryFetch(const LLUUID& cat_id, T callable)  	}  } +void wear_multiple(const uuid_vec_t& ids, bool replace); +  #endif diff --git a/indra/newview/llwearableitemslist.cpp b/indra/newview/llwearableitemslist.cpp index 35abbc0c4d..79a13d042d 100644 --- a/indra/newview/llwearableitemslist.cpp +++ b/indra/newview/llwearableitemslist.cpp @@ -676,13 +676,11 @@ 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, 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. -	registrar.add("Wearable.Wear", boost::bind(handleMultiple, wear, ids)); -	registrar.add("Wearable.Add", boost::bind(handleMultiple, add, ids)); +	registrar.add("Wearable.Wear", boost::bind(wear_multiple, ids, false)); +	registrar.add("Wearable.Add", boost::bind(wear_multiple, ids, true));  	registrar.add("Wearable.Edit", boost::bind(handleMultiple, LLAgentWearables::editWearable, ids));  	registrar.add("Wearable.CreateNew", boost::bind(createNewWearable, selected_id));  	registrar.add("Wearable.ShowOriginal", boost::bind(show_item_original, selected_id));  | 
