diff options
author | Vadim Savchuk <vsavchuk@productengine.com> | 2010-07-27 22:34:34 +0300 |
---|---|---|
committer | Vadim Savchuk <vsavchuk@productengine.com> | 2010-07-27 22:34:34 +0300 |
commit | 75980159451eb4f80c1ac03ec4b9d8d488279840 (patch) | |
tree | 610275b8d401180ce0d59841b6224b2101b95531 /indra/newview/llsidepanelinventory.cpp | |
parent | 7bec8b2a9ee1182f9eec14305b7099bee44b7a10 (diff) |
EXT-8491 FIXED Crash in LLAppearanceMgr::addCOFItemLink().
Reason:
When you click on a clothing link in COF, LLAppearanceMgr::wearItemOnAvatar() removes
all COF links of the clicked wearable type -- thus invalidating all previously
obtained LLViewerInventoryItems for those links -- and then passes such an
invalid item (item_to_wear) to addCOFItemLink() which of course crashes.
Fix:
1. Handle this case in wearItemOnAvatar(): don't try wearing COF items.
2. Disable the Wear button in the inventory SP when a COF item is selected.
3. Fixed get_can_item_be_worn() to return FALSE for items which are in COF or have links in COF.
Reviewed by Nyx at https://codereview.productengine.com/secondlife/r/811/
--HG--
branch : product-engine
Diffstat (limited to 'indra/newview/llsidepanelinventory.cpp')
-rw-r--r-- | indra/newview/llsidepanelinventory.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/indra/newview/llsidepanelinventory.cpp b/indra/newview/llsidepanelinventory.cpp index de59af49da..0951586dd5 100644 --- a/indra/newview/llsidepanelinventory.cpp +++ b/indra/newview/llsidepanelinventory.cpp @@ -33,10 +33,13 @@ #include "llsidepanelinventory.h" #include "llagent.h" +#include "llappearancemgr.h" #include "llavataractions.h" #include "llbutton.h" #include "llinventorybridge.h" +#include "llinventoryfunctions.h" #include "llinventorypanel.h" +#include "lloutfitobserver.h" #include "llpanelmaininventory.h" #include "llsidepaneliteminfo.h" #include "llsidepaneltaskinfo.h" @@ -98,6 +101,8 @@ BOOL LLSidepanelInventory::postBuild() my_inventory_panel->addHideFolderType(LLFolderType::FT_LANDMARK); my_inventory_panel->addHideFolderType(LLFolderType::FT_FAVORITE); */ + + LLOutfitObserver::instance().addCOFChangedCallback(boost::bind(&LLSidepanelInventory::updateVerbs, this)); } // UI elements from item panel @@ -283,7 +288,7 @@ void LLSidepanelInventory::updateVerbs() case LLInventoryType::IT_OBJECT: case LLInventoryType::IT_ATTACHMENT: mWearBtn->setVisible(TRUE); - mWearBtn->setEnabled(TRUE); + mWearBtn->setEnabled(get_can_item_be_worn(item->getLinkedUUID())); mShopBtn->setVisible(FALSE); break; case LLInventoryType::IT_SOUND: |