Browse Source

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.
kleines Filmröllchen 3 years ago
parent
commit
4e8cb0508f
2 changed files with 13 additions and 0 deletions
  1. 12 0
      Userland/Libraries/LibGUI/TreeView.cpp
  2. 1 0
      Userland/Libraries/LibGUI/TreeView.h

+ 12 - 0
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<typename Callback>
 void TreeView::traverse_in_paint_order(Callback callback) const
 {

+ 1 - 0
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 = {});