summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaxim Nikolenko <maximnproductengine@lindenlab.com>2023-05-16 18:03:57 +0300
committerMaxim Nikolenko <maximnproductengine@lindenlab.com>2023-05-16 18:03:57 +0300
commit474012abd603f7e7963344fcd9d14cdc7db7bb9a (patch)
treeb0423c9d7cb9f4b9bc169e887b2f9d0db67cf8b3
parent4d3a8f4a6cd2bef58bc95854af0325ca0190351f (diff)
SL-19686 reduce delay when switching between folders
-rw-r--r--indra/llui/llfolderviewitem.cpp5
-rw-r--r--indra/llui/llfolderviewitem.h1
-rw-r--r--indra/newview/llinventorypanel.cpp4
3 files changed, 8 insertions, 2 deletions
diff --git a/indra/llui/llfolderviewitem.cpp b/indra/llui/llfolderviewitem.cpp
index 227f1d79e4..bc7a2cc3f0 100644
--- a/indra/llui/llfolderviewitem.cpp
+++ b/indra/llui/llfolderviewitem.cpp
@@ -1769,6 +1769,11 @@ BOOL LLFolderViewFolder::isRemovable()
return TRUE;
}
+void LLFolderViewFolder::destroyRoot()
+{
+ delete this;
+}
+
// this is an internal method used for adding items to folders.
void LLFolderViewFolder::addItem(LLFolderViewItem* item)
{
diff --git a/indra/llui/llfolderviewitem.h b/indra/llui/llfolderviewitem.h
index b6437ab61d..232780ccae 100644
--- a/indra/llui/llfolderviewitem.h
+++ b/indra/llui/llfolderviewitem.h
@@ -394,6 +394,7 @@ public:
// destroys this folder, and all children
virtual void destroyView();
+ void destroyRoot();
// whether known children are fully loaded (arrange sets to true)
virtual bool isFolderComplete() { return mIsFolderComplete; }
diff --git a/indra/newview/llinventorypanel.cpp b/indra/newview/llinventorypanel.cpp
index ca5abfd661..edcd45db79 100644
--- a/indra/newview/llinventorypanel.cpp
+++ b/indra/newview/llinventorypanel.cpp
@@ -2195,8 +2195,8 @@ void LLInventorySingleFolderPanel::updateSingleFolderRoot()
LLUUID root_id = mFolderID;
if (mFolderRoot.get())
{
- removeItemID(getRootFolderID());
- mFolderRoot.get()->destroyView();
+ mItemMap.clear();
+ mFolderRoot.get()->destroyRoot();
}
mCommitCallbackRegistrar.pushScope();