From 3bccd99fe969ae0db3867cee0fb762d11171c5b8 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Fri, 18 Sep 2020 18:38:27 +0200 Subject: LibGUI: Add TreeView::expand_all_parents_of(ModelIndex) This does exactly what it sounds like. :^) --- Libraries/LibGUI/TreeView.cpp | 17 +++++++++++++++++ Libraries/LibGUI/TreeView.h | 2 ++ 2 files changed, 19 insertions(+) (limited to 'Libraries') diff --git a/Libraries/LibGUI/TreeView.cpp b/Libraries/LibGUI/TreeView.cpp index 028b478ed3..fc79ba0742 100644 --- a/Libraries/LibGUI/TreeView.cpp +++ b/Libraries/LibGUI/TreeView.cpp @@ -125,6 +125,23 @@ void TreeView::set_open_state_of_all_in_subtree(const ModelIndex& root, bool ope } } +void TreeView::expand_all_parents_of(const ModelIndex& index) +{ + if (!model()) + return; + + auto current = index; + while (current.is_valid()) { + ensure_metadata_for_index(current).open = true; + if (on_toggle) + on_toggle(current, true); + current = current.parent(); + } + update_column_sizes(); + update_content_size(); + update(); +} + void TreeView::expand_tree(const ModelIndex& root) { if (!model()) diff --git a/Libraries/LibGUI/TreeView.h b/Libraries/LibGUI/TreeView.h index 3b3f049370..d8e81dc431 100644 --- a/Libraries/LibGUI/TreeView.h +++ b/Libraries/LibGUI/TreeView.h @@ -44,6 +44,8 @@ public: void expand_tree(const ModelIndex& root = {}); void collapse_tree(const ModelIndex& root = {}); + void expand_all_parents_of(const ModelIndex&); + Function on_toggle; protected: -- cgit v1.2.3