From d05cb50b24ab818e36160d44418edca9e6cc0951 Mon Sep 17 00:00:00 2001 From: Caoimhe Date: Mon, 1 May 2023 17:23:37 +0100 Subject: [PATCH] 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 :^) --- Userland/Libraries/LibGUI/TreeView.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Userland/Libraries/LibGUI/TreeView.cpp b/Userland/Libraries/LibGUI/TreeView.cpp index ead42b194c..a8a4322465 100644 --- a/Userland/Libraries/LibGUI/TreeView.cpp +++ b/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); }