From 4e8cb0508f6f62a03a136f7f4b858f4606661b94 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?kleines=20Filmr=C3=B6llchen?= Date: Tue, 5 Apr 2022 00:19:52 +0200 Subject: [PATCH] LibGUI: Add is_toggled getter for TreeView This has safer fallbacks than toggle_index, because we want to be able to call it on indices that don't have children. --- Userland/Libraries/LibGUI/TreeView.cpp | 12 ++++++++++++ Userland/Libraries/LibGUI/TreeView.h | 1 + 2 files changed, 13 insertions(+) diff --git a/Userland/Libraries/LibGUI/TreeView.cpp b/Userland/Libraries/LibGUI/TreeView.cpp index 87d58ad7d6..b5cc4a0978 100644 --- a/Userland/Libraries/LibGUI/TreeView.cpp +++ b/Userland/Libraries/LibGUI/TreeView.cpp @@ -158,6 +158,18 @@ void TreeView::toggle_index(ModelIndex const& index) update(); } +bool TreeView::is_toggled(ModelIndex const& index) +{ + if (model()->row_count(index) == 0) { + if (model()->parent_index(index).is_valid()) + return is_toggled(model()->parent_index(index)); + return false; + } + + auto& metadata = ensure_metadata_for_index(index); + return metadata.open; +} + template void TreeView::traverse_in_paint_order(Callback callback) const { diff --git a/Userland/Libraries/LibGUI/TreeView.h b/Userland/Libraries/LibGUI/TreeView.h index 3e1543e8a8..b369b75a14 100644 --- a/Userland/Libraries/LibGUI/TreeView.h +++ b/Userland/Libraries/LibGUI/TreeView.h @@ -21,6 +21,7 @@ public: virtual int item_count() const override; virtual void toggle_index(ModelIndex const&) override; + bool is_toggled(ModelIndex const& index); void expand_tree(ModelIndex const& root = {}); void collapse_tree(ModelIndex const& root = {});