@@ -139,32 +139,47 @@ void LLPanelContents::getState(LLViewerObject *objectp )
139
139
void LLPanelContents::onFilterEdit ()
140
140
{
141
141
const std::string& filter_substring = mFilterEditor ->getText ();
142
- if (filter_substring. empty ())
142
+ if (! mPanelInventoryObject -> hasInventory ())
143
143
{
144
- if (mPanelInventoryObject ->getFilter ().getFilterSubString ().empty ())
145
- {
146
- // The current filter and the new filter are empty, nothing to do
147
- return ;
148
- }
149
-
150
- mSavedFolderState .setApply (true );
151
- mPanelInventoryObject ->getRootFolder ()->applyFunctorRecursively (mSavedFolderState );
152
-
153
- // Add a folder with the current item to the list of previously opened folders
154
- LLOpenFoldersWithSelection opener;
155
- mPanelInventoryObject ->getRootFolder ()->applyFunctorRecursively (opener);
156
- mPanelInventoryObject ->getRootFolder ()->scrollToShowSelection ();
144
+ mDirtyFilter = true ;
157
145
}
158
- else if ( mPanelInventoryObject -> getFilter (). getFilterSubString (). empty ())
146
+ else
159
147
{
160
- // The first letter in search term, save existing folder open state
161
- if (!mPanelInventoryObject ->getFilter ().isNotDefault ())
148
+ if (filter_substring.empty ())
162
149
{
163
- mSavedFolderState .setApply (false );
164
- mPanelInventoryObject ->getRootFolder ()->applyFunctorRecursively (mSavedFolderState );
150
+ if (mPanelInventoryObject ->getFilter ().getFilterSubString ().empty ())
151
+ {
152
+ // The current filter and the new filter are empty, nothing to do
153
+ return ;
154
+ }
155
+
156
+ if (mDirtyFilter && !mSavedFolderState .hasOpenFolders ())
157
+ {
158
+ mPanelInventoryObject ->getRootFolder ()->setOpenArrangeRecursively (true , LLFolderViewFolder::ERecurseType::RECURSE_DOWN);
159
+ }
160
+ else
161
+ {
162
+ mSavedFolderState .setApply (true );
163
+ mPanelInventoryObject ->getRootFolder ()->applyFunctorRecursively (mSavedFolderState );
164
+ }
165
+ mDirtyFilter = false ;
166
+
167
+ // Add a folder with the current item to the list of previously opened folders
168
+ LLOpenFoldersWithSelection opener;
169
+ mPanelInventoryObject ->getRootFolder ()->applyFunctorRecursively (opener);
170
+ mPanelInventoryObject ->getRootFolder ()->scrollToShowSelection ();
171
+ }
172
+ else if (mPanelInventoryObject ->getFilter ().getFilterSubString ().empty ())
173
+ {
174
+ // The first letter in search term, save existing folder open state
175
+ if (!mPanelInventoryObject ->getFilter ().isNotDefault ())
176
+ {
177
+ mSavedFolderState .setApply (false );
178
+ mPanelInventoryObject ->getRootFolder ()->applyFunctorRecursively (mSavedFolderState );
179
+ mDirtyFilter = false ;
180
+ }
165
181
}
166
182
}
167
-
168
183
mPanelInventoryObject ->getFilter ().setFilterSubString (filter_substring);
169
184
}
170
185
0 commit comments