From 366d7e6d0560607fd86256a282678087f2ee7d8f Mon Sep 17 00:00:00 2001 From: thankyouverycool <66646555+thankyouverycool@users.noreply.github.com> Date: Sat, 11 Jul 2020 18:28:06 -0400 Subject: [PATCH] LibGUI: Only report toggled directories once on subtree collapse/expansion This prevents redundant calls to on_toggle for the same indices when subtrees are collapsed or expanded. --- Libraries/LibGUI/TreeView.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/Libraries/LibGUI/TreeView.cpp b/Libraries/LibGUI/TreeView.cpp index c3bbda16f9..76b5022f04 100644 --- a/Libraries/LibGUI/TreeView.cpp +++ b/Libraries/LibGUI/TreeView.cpp @@ -110,13 +110,16 @@ void TreeView::doubleclick_event(MouseEvent& event) void TreeView::set_open_state_of_all_in_subtree(const ModelIndex& root, bool open) { - if (root.is_valid()) + if (root.is_valid()) { ensure_metadata_for_index(root).open = open; + if (model()->row_count(root)) { + if (on_toggle) + on_toggle(root, open); + } + } int row_count = model()->row_count(root); int column = model()->tree_column(); for (int row = 0; row < row_count; ++row) { - if (on_toggle) - on_toggle(root, open); auto index = model()->index(row, column, root); set_open_state_of_all_in_subtree(index, open); }