EXT-8329 FIXED Provided disabling 'Wear Item' button after item was worn.
Details: 1 Updated condition is item can be worn considering situation when item is copied in COF but is not worn. 2 Avoided code duplication in method LLOutfitsList::canWearSelected() reviewed by Vadim Savchuk and Neal Orman at https://codereview.productengine.com/secondlife/r/785/ --HG-- branch : product-enginemeow-7.2.2
parent
4eee391b49
commit
2e9671a8a8
|
|
@ -2699,6 +2699,21 @@ BOOL LLAppearanceMgr::getIsInCOF(const LLUUID& obj_id) const
|
|||
return gInventory.isObjectDescendentOf(obj_id, getCOF());
|
||||
}
|
||||
|
||||
// static
|
||||
bool LLAppearanceMgr::isLinkInCOF(const LLUUID& obj_id)
|
||||
{
|
||||
LLInventoryModel::cat_array_t cats;
|
||||
LLInventoryModel::item_array_t items;
|
||||
LLLinkedItemIDMatches find_links(gInventory.getLinkedItemID(obj_id));
|
||||
gInventory.collectDescendentsIf(LLAppearanceMgr::instance().getCOF(),
|
||||
cats,
|
||||
items,
|
||||
LLInventoryModel::EXCLUDE_TRASH,
|
||||
find_links);
|
||||
|
||||
return !items.empty();
|
||||
}
|
||||
|
||||
BOOL LLAppearanceMgr::getIsProtectedCOFItem(const LLUUID& obj_id) const
|
||||
{
|
||||
if (!getIsInCOF(obj_id)) return FALSE;
|
||||
|
|
|
|||
|
|
@ -223,6 +223,11 @@ public:
|
|||
BOOL getIsInCOF(const LLUUID& obj_id) const;
|
||||
// Is this in the COF and can the user delete it from the COF?
|
||||
BOOL getIsProtectedCOFItem(const LLUUID& obj_id) const;
|
||||
|
||||
/**
|
||||
* Checks if COF contains link to specified object.
|
||||
*/
|
||||
static bool isLinkInCOF(const LLUUID& obj_id);
|
||||
};
|
||||
|
||||
class LLUpdateAppearanceOnDestroy: public LLInventoryCallback
|
||||
|
|
|
|||
|
|
@ -1005,17 +1005,7 @@ bool LLOutfitsList::canWearSelected()
|
|||
{
|
||||
const LLUUID& id = *it;
|
||||
|
||||
// Find links to the current item in COF.
|
||||
// *TODO: share this?
|
||||
LLInventoryModel::cat_array_t cats;
|
||||
LLInventoryModel::item_array_t items;
|
||||
LLLinkedItemIDMatches find_links(gInventory.getLinkedItemID(id));
|
||||
gInventory.collectDescendentsIf(LLAppearanceMgr::instance().getCOF(),
|
||||
cats,
|
||||
items,
|
||||
LLInventoryModel::EXCLUDE_TRASH,
|
||||
find_links);
|
||||
if (!items.empty())
|
||||
if (LLAppearanceMgr::isLinkInCOF(id))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -779,7 +779,9 @@ void LLPanelOutfitEdit::updatePlusButton()
|
|||
}
|
||||
|
||||
// If any of the selected items are not wearable (due to already being worn OR being of the wrong type), disable the add button.
|
||||
uuid_vec_t::iterator unwearable_item = std::find_if(selected_items.begin(), selected_items.end(), !boost::bind(& get_can_item_be_worn, _1));
|
||||
uuid_vec_t::iterator unwearable_item = std::find_if(selected_items.begin(), selected_items.end(), !boost::bind(& get_can_item_be_worn, _1)
|
||||
// since item can be not worn but in wearing process at that time - we need to check is link to item presents in COF
|
||||
|| boost::bind(&LLAppearanceMgr::isLinkInCOF, _1));
|
||||
bool can_add = ( unwearable_item == selected_items.end() );
|
||||
|
||||
mPlusBtn->setEnabled(can_add);
|
||||
|
|
|
|||
Loading…
Reference in New Issue