summaryrefslogtreecommitdiff
path: root/indra/newview/llpanelcontents.cpp
diff options
context:
space:
mode:
authorAndrey Lihatskiy <alihatskiy@productengine.com>2025-05-28 21:11:23 +0300
committerAndrey Lihatskiy <alihatskiy@productengine.com>2025-05-28 21:11:23 +0300
commitd3bd73ab923b8010bb395505b95bcc38b661162e (patch)
tree56b5fadba1f247fc42b6d3a3062154d61a43abac /indra/newview/llpanelcontents.cpp
parent3af711e6da9d0004ce1b565bfadee634f087b89a (diff)
parentde8275b14b30bf754cdba1da867cb2e6c2783639 (diff)
Merge branch 'main' into marchcat/slua-editor-merge
# Conflicts: # .github/workflows/build.yaml # indra/newview/llmeshrepository.cpp # indra/newview/llmeshrepository.h # indra/newview/llpreviewscript.h
Diffstat (limited to 'indra/newview/llpanelcontents.cpp')
-rw-r--r--indra/newview/llpanelcontents.cpp66
1 files changed, 47 insertions, 19 deletions
diff --git a/indra/newview/llpanelcontents.cpp b/indra/newview/llpanelcontents.cpp
index 4eed6dcc62..07c7b586fc 100644
--- a/indra/newview/llpanelcontents.cpp
+++ b/indra/newview/llpanelcontents.cpp
@@ -140,32 +140,60 @@ void LLPanelContents::getState(LLViewerObject *objectp )
void LLPanelContents::onFilterEdit()
{
const std::string& filter_substring = mFilterEditor->getText();
- if (filter_substring.empty())
+ if (!mPanelInventoryObject->hasInventory())
{
- if (mPanelInventoryObject->getFilter().getFilterSubString().empty())
+ mDirtyFilter = true;
+ }
+ else
+ {
+ LLFolderView* root_folder = mPanelInventoryObject->getRootFolder();
+ if (filter_substring.empty())
{
- // The current filter and the new filter are empty, nothing to do
- return;
- }
+ if (mPanelInventoryObject->getFilter().getFilterSubString().empty())
+ {
+ // The current filter and the new filter are empty, nothing to do
+ return;
+ }
- mSavedFolderState.setApply(true);
- mPanelInventoryObject->getRootFolder()->applyFunctorRecursively(mSavedFolderState);
+ if (mDirtyFilter && !mSavedFolderState.hasOpenFolders())
+ {
+ if (root_folder)
+ {
+ root_folder->setOpenArrangeRecursively(true, LLFolderViewFolder::ERecurseType::RECURSE_DOWN);
+ }
+ }
+ else
+ {
+ mSavedFolderState.setApply(true);
+ if (root_folder)
+ {
+ root_folder->applyFunctorRecursively(mSavedFolderState);
+ }
+ }
+ mDirtyFilter = false;
- // Add a folder with the current item to the list of previously opened folders
- LLOpenFoldersWithSelection opener;
- mPanelInventoryObject->getRootFolder()->applyFunctorRecursively(opener);
- mPanelInventoryObject->getRootFolder()->scrollToShowSelection();
- }
- else if (mPanelInventoryObject->getFilter().getFilterSubString().empty())
- {
- // The first letter in search term, save existing folder open state
- if (!mPanelInventoryObject->getFilter().isNotDefault())
+ // Add a folder with the current item to the list of previously opened folders
+ if (root_folder)
+ {
+ LLOpenFoldersWithSelection opener;
+ root_folder->applyFunctorRecursively(opener);
+ root_folder->scrollToShowSelection();
+ }
+ }
+ else if (mPanelInventoryObject->getFilter().getFilterSubString().empty())
{
- mSavedFolderState.setApply(false);
- mPanelInventoryObject->getRootFolder()->applyFunctorRecursively(mSavedFolderState);
+ // The first letter in search term, save existing folder open state
+ if (!mPanelInventoryObject->getFilter().isNotDefault())
+ {
+ mSavedFolderState.setApply(false);
+ if (root_folder)
+ {
+ root_folder->applyFunctorRecursively(mSavedFolderState);
+ }
+ mDirtyFilter = false;
+ }
}
}
-
mPanelInventoryObject->getFilter().setFilterSubString(filter_substring);
}