Parcourir la source

LibGUI: Only clear `TreeView::m_view_metadata` when required

Prior to this commit, we were always clearing the TreeView's metadata,
even if it wasn't needed. Now, we only clear it if the callee says that
we should invalidate indices.

This fixes an issue in FileManager (#6903), where updating the file
system by creating/deleting any file/folder would cause the tree to
collapse completely.

This may be more of a 'patch' than an actual fix, since I don't have a
lot of experience with `GUI::TreeView` or `GUI::Model`, but it doesn't
appear to break any other `TreeView` use-cases and using FileManager is
now much better than it was before :^)
Caoimhe il y a 2 ans
Parent
commit
d05cb50b24
1 fichiers modifiés avec 4 ajouts et 1 suppressions
  1. 4 1
      Userland/Libraries/LibGUI/TreeView.cpp

+ 4 - 1
Userland/Libraries/LibGUI/TreeView.cpp

@@ -414,7 +414,10 @@ void TreeView::scroll_into_view(ModelIndex const& a_index, bool, bool scroll_ver
 
 void TreeView::model_did_update(unsigned flags)
 {
-    m_view_metadata.clear();
+    if (flags == Model::UpdateFlag::InvalidateAllIndices) {
+        m_view_metadata.clear();
+    }
+
     AbstractTableView::model_did_update(flags);
 }