diff options
Diffstat (limited to 'indra')
| -rwxr-xr-x | indra/newview/llappearancemgr.cpp | 30 | ||||
| -rwxr-xr-x | indra/newview/llinventorybridge.cpp | 25 | 
2 files changed, 26 insertions, 29 deletions
| diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp index 28099f59f3..f427214dbb 100755 --- a/indra/newview/llappearancemgr.cpp +++ b/indra/newview/llappearancemgr.cpp @@ -2839,6 +2839,22 @@ void appearance_mgr_update_dirty_state()  	}  } +void update_base_outfit_after_ordering() +{ +	LLAppearanceMgr& app_mgr = LLAppearanceMgr::instance(); +	 +	LLPointer<LLInventoryCallback> dirty_state_updater = +		new LLBoostFuncInventoryCallback(no_op_inventory_func, appearance_mgr_update_dirty_state); + +	//COF contains only links so we copy to the Base Outfit only links +	const LLUUID base_outfit_id = app_mgr.getBaseOutfitUUID(); +	bool copy_folder_links = false; +	app_mgr.slamCategoryLinks(app_mgr.getCOF(), base_outfit_id, copy_folder_links, dirty_state_updater); + +} + +// Save COF changes - update the contents of the current base outfit +// to match the current COF. Fails if no current base outfit is set.  bool LLAppearanceMgr::updateBaseOutfit()  {  	if (isOutfitLocked()) @@ -2848,23 +2864,17 @@ bool LLAppearanceMgr::updateBaseOutfit()  		return false;  	} -  	setOutfitLocked(true);  	gAgentWearables.notifyLoadingStarted();  	const LLUUID base_outfit_id = getBaseOutfitUUID(); -	LL_DEBUGS("Avatar") << "updating base outfit to " << base_outfit_id << llendl;  	if (base_outfit_id.isNull()) return false; +	LL_DEBUGS("Avatar") << "saving cof to base outfit " << base_outfit_id << llendl; -	updateClothingOrderingInfo(); - -	LLPointer<LLInventoryCallback> dirty_state_updater = -		new LLBoostFuncInventoryCallback(no_op_inventory_func, appearance_mgr_update_dirty_state); - -	//COF contains only links so we copy to the Base Outfit only links -	bool copy_folder_links = false; -	slamCategoryLinks(getCOF(), base_outfit_id, copy_folder_links, dirty_state_updater); +	LLPointer<LLInventoryCallback> cb = +		new LLBoostFuncInventoryCallback(no_op_inventory_func, update_base_outfit_after_ordering); +	updateClothingOrderingInfo(LLUUID::null, cb);  	return true;  } diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp index 09a96c82b5..cb3f40a5bb 100755 --- a/indra/newview/llinventorybridge.cpp +++ b/indra/newview/llinventorybridge.cpp @@ -2416,26 +2416,13 @@ BOOL LLFolderBridge::dragCategoryIntoFolder(LLInventoryCategory* inv_cat,  					}  				}  			} -			// if target is an outfit or current outfit folder we use link -			if (move_is_into_current_outfit || move_is_into_outfit) +			// if target is current outfit folder we use link +			if (move_is_into_current_outfit && +				inv_cat->getPreferredType() == LLFolderType::FT_NONE)  			{ -				if (inv_cat->getPreferredType() == LLFolderType::FT_NONE) -				{ -					if (move_is_into_current_outfit) -					{ -						// traverse category and add all contents to currently worn. -						BOOL append = true; -						LLAppearanceMgr::instance().wearInventoryCategory(inv_cat, false, append); -					} -					else -					{ -						// Recursively create links in target outfit. -						LLInventoryModel::cat_array_t cats; -						LLInventoryModel::item_array_t items; -						model->collectDescendents(cat_id, cats, items, LLInventoryModel::EXCLUDE_TRASH); -						LLAppearanceMgr::instance().linkAll(mUUID,items,NULL); -					} -				} +				// traverse category and add all contents to currently worn. +				BOOL append = true; +				LLAppearanceMgr::instance().wearInventoryCategory(inv_cat, false, append);  			}  			else if (move_is_into_outbox && !move_is_from_outbox)  			{ | 
