diff options
author | thankyouverycool <66646555+thankyouverycool@users.noreply.github.com> | 2020-07-11 18:28:06 -0400 |
---|---|---|
committer | Andreas Kling <kling@serenityos.org> | 2020-07-13 14:27:23 +0200 |
commit | 366d7e6d0560607fd86256a282678087f2ee7d8f (patch) | |
tree | 7caf9637eabefccac48a52030a92675c72977e84 | |
parent | f1bbc39148cad2c3bb51cca0b6282378ecc9bfe6 (diff) | |
download | serenity-366d7e6d0560607fd86256a282678087f2ee7d8f.zip |
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.
-rw-r--r-- | Libraries/LibGUI/TreeView.cpp | 9 |
1 files 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); } |