#3302 Crash at LLSaveFolderState::doFolder

meow-7.2.2
Andrey Kleshchev 2025-01-02 23:08:38 +02:00 committed by Andrey Kleshchev
parent a259316dc6
commit 85162a4f60
1 changed files with 19 additions and 6 deletions

View File

@ -145,6 +145,7 @@ void LLPanelContents::onFilterEdit()
}
else
{
LLFolderView* root_folder = mPanelInventoryObject->getRootFolder();
if (filter_substring.empty())
{
if (mPanelInventoryObject->getFilter().getFilterSubString().empty())
@ -155,19 +156,28 @@ void LLPanelContents::onFilterEdit()
if (mDirtyFilter && !mSavedFolderState.hasOpenFolders())
{
mPanelInventoryObject->getRootFolder()->setOpenArrangeRecursively(true, LLFolderViewFolder::ERecurseType::RECURSE_DOWN);
if (root_folder)
{
root_folder->setOpenArrangeRecursively(true, LLFolderViewFolder::ERecurseType::RECURSE_DOWN);
}
}
else
{
mSavedFolderState.setApply(true);
mPanelInventoryObject->getRootFolder()->applyFunctorRecursively(mSavedFolderState);
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();
if (root_folder)
{
LLOpenFoldersWithSelection opener;
root_folder->applyFunctorRecursively(opener);
root_folder->scrollToShowSelection();
}
}
else if (mPanelInventoryObject->getFilter().getFilterSubString().empty())
{
@ -175,7 +185,10 @@ void LLPanelContents::onFilterEdit()
if (!mPanelInventoryObject->getFilter().isNotDefault())
{
mSavedFolderState.setApply(false);
mPanelInventoryObject->getRootFolder()->applyFunctorRecursively(mSavedFolderState);
if (root_folder)
{
root_folder->applyFunctorRecursively(mSavedFolderState);
}
mDirtyFilter = false;
}
}