diff options
Diffstat (limited to 'indra/newview/llsidepanelappearance.cpp')
-rw-r--r-- | indra/newview/llsidepanelappearance.cpp | 31 |
1 files changed, 14 insertions, 17 deletions
diff --git a/indra/newview/llsidepanelappearance.cpp b/indra/newview/llsidepanelappearance.cpp index 0ae62843ac..43215f86bd 100644 --- a/indra/newview/llsidepanelappearance.cpp +++ b/indra/newview/llsidepanelappearance.cpp @@ -62,6 +62,7 @@ public: { mPanel->inventoryFetched(); gInventory.removeObserver(this); + delete this; } private: LLSidepanelAppearance *mPanel; @@ -86,7 +87,7 @@ void LLWatchForOutfitRenameObserver::changed(U32 mask) mPanel->refreshCurrentOutfitName(); } } - + LLSidepanelAppearance::LLSidepanelAppearance() : LLPanel(), mFilterSubString(LLStringUtil::null), @@ -94,14 +95,12 @@ LLSidepanelAppearance::LLSidepanelAppearance() : mLookInfo(NULL), mCurrOutfitPanel(NULL) { - //LLUICtrlFactory::getInstance()->buildPanel(this, "panel_appearance.xml"); // Called from LLRegisterPanelClass::defaultPanelClassBuilder() - mFetchWorn = new LLCurrentlyWornFetchObserver(this); - - mOutfitRenameWatcher = new LLWatchForOutfitRenameObserver(this); } LLSidepanelAppearance::~LLSidepanelAppearance() { + gInventory.removeObserver(mOutfitRenameWatcher); + delete mOutfitRenameWatcher; } // virtual @@ -156,6 +155,7 @@ BOOL LLSidepanelAppearance::postBuild() mCurrOutfitPanel = getChild<LLPanel>("panel_currentlook"); + mOutfitRenameWatcher = new LLWatchForOutfitRenameObserver(this); gInventory.addObserver(mOutfitRenameWatcher); return TRUE; @@ -255,7 +255,7 @@ void LLSidepanelAppearance::onNewOutfitButtonClicked() { if (!mLookInfo->getVisible()) { - mPanelOutfitsInventory->onNew(); + mPanelOutfitsInventory->onSave(); } } @@ -321,15 +321,11 @@ void LLSidepanelAppearance::refreshCurrentOutfitName(const std::string& name) mOutfitDirtyTag->setVisible(LLAppearanceManager::getInstance()->isOutfitDirty()); if (name == "") { - const LLViewerInventoryItem *outfit_link = LLAppearanceManager::getInstance()->getBaseOutfitLink(); - if (outfit_link) + std::string outfit_name; + if (LLAppearanceManager::getInstance()->getBaseOutfitName(outfit_name)) { - const LLViewerInventoryCategory *cat = outfit_link->getLinkedCategory(); - if (cat && cat->getPreferredType() == LLFolderType::FT_OUTFIT) - { - mCurrentLookName->setText(cat->getName()); + mCurrentLookName->setText(outfit_name); return; - } } mCurrentLookName->setText(getString("No Outfit")); mOpenOutfitBtn->setEnabled(FALSE); @@ -389,16 +385,17 @@ void LLSidepanelAppearance::fetchInventory() } } - mFetchWorn->fetchItems(ids); + LLCurrentlyWornFetchObserver *fetch_worn = new LLCurrentlyWornFetchObserver(this); + fetch_worn->fetchItems(ids); // If no items to be fetched, done will never be triggered. // TODO: Change LLInventoryFetchObserver::fetchItems to trigger done() on this condition. - if (mFetchWorn->isEverythingComplete()) + if (fetch_worn->isEverythingComplete()) { - mFetchWorn->done(); + fetch_worn->done(); } else { - gInventory.addObserver(mFetchWorn); + gInventory.addObserver(fetch_worn); } } |