diff --git a/indra/llui/llfolderviewitem.cpp b/indra/llui/llfolderviewitem.cpp index aa2343226cbd29c3b2132792304c53c17ab77c65..3455f970cd5883e9b8aa74600bad67559595b987 100644 --- a/indra/llui/llfolderviewitem.cpp +++ b/indra/llui/llfolderviewitem.cpp @@ -1477,12 +1477,14 @@ void LLFolderViewFolder::destroyView() while (!mItems.empty()) { LLFolderViewItem *itemp = mItems.back(); + mItems.pop_back(); itemp->destroyView(); // LLFolderViewItem::destroyView() removes entry from mItems } while (!mFolders.empty()) { LLFolderViewFolder *folderp = mFolders.back(); + mFolders.pop_back(); folderp->destroyView(); // LLFolderVievFolder::destroyView() removes entry from mFolders } diff --git a/indra/newview/llfloatermarketplacelistings.cpp b/indra/newview/llfloatermarketplacelistings.cpp index b1b397c77c95c93eb5ec1c159ac77d32a41eb610..277bd5aaed767e23775907ef63725d089661d057 100755 --- a/indra/newview/llfloatermarketplacelistings.cpp +++ b/indra/newview/llfloatermarketplacelistings.cpp @@ -242,25 +242,15 @@ void LLFloaterMarketplaceListings::onOpen(const LLSD& key) { initializeMarketPlace(); } - else - { - setup(); + else + { + updateView(); } - - // - // Update the floater view - // - updateView(); - - // - // Trigger fetch of the contents - // - fetchContents(); } void LLFloaterMarketplaceListings::onFocusReceived() { - fetchContents(); + updateView(); } void LLFloaterMarketplaceListings::fetchContents() @@ -484,7 +474,6 @@ void LLFloaterMarketplaceListings::onChanged() LLViewerInventoryCategory* category = gInventory.getCategory(mRootFolderId); if (mRootFolderId.notNull() && category) { - fetchContents(); updateView(); } else diff --git a/indra/newview/llinventorymodel.cpp b/indra/newview/llinventorymodel.cpp index 0fbccb2f3f659d94c6c875704e38469910203e06..c379fb5f3a443acce0c64ce80d5ce3ff6d779a8e 100755 --- a/indra/newview/llinventorymodel.cpp +++ b/indra/newview/llinventorymodel.cpp @@ -1217,6 +1217,11 @@ void LLInventoryModel::deleteObject(const LLUUID& id) LLViewerInventoryCategory* cat = (LLViewerInventoryCategory*)((LLInventoryObject*)obj); cat_list->removeObj(cat); } + + // Note : We need to tell the inventory observers that those things are going to be deleted *before* the tree is cleared or they won't know what to delete (in views and view models) + addChangedMask(LLInventoryObserver::REMOVE, id); + gInventory.notifyObservers(); + item_list = getUnlockedItemArray(id); if(item_list) { @@ -1229,10 +1234,8 @@ void LLInventoryModel::deleteObject(const LLUUID& id) delete cat_list; mParentChildCategoryTree.erase(id); } - addChangedMask(LLInventoryObserver::REMOVE, id); obj = NULL; // delete obj updateLinkedObjectsFromPurge(id); - gInventory.notifyObservers(); } // Delete a particular inventory item by ID, and remove it from the server.