瀏覽代碼

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 2 年之前
父節點
當前提交
d05cb50b24
共有 1 個文件被更改,包括 4 次插入1 次删除
  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)
 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);
     AbstractTableView::model_did_update(flags);
 }
 }