浏览代码

LibGUI: Do not allow tree column to shrink beyond indent and icon

We always display the tree indent and the icon, so we shouldn't allow
the tree column to shrink beyond that size.
sin-ack 4 年之前
父节点
当前提交
1408aa1295
共有 2 个文件被更改,包括 18 次插入0 次删除
  1. 16 0
      Userland/Libraries/LibGUI/TreeView.cpp
  2. 2 0
      Userland/Libraries/LibGUI/TreeView.h

+ 16 - 0
Userland/Libraries/LibGUI/TreeView.cpp

@@ -738,4 +738,20 @@ Gfx::IntRect TreeView::content_rect(ModelIndex const& index) const
     return found_rect;
     return found_rect;
 }
 }
 
 
+int TreeView::minimum_column_width(int column)
+{
+    if (column != model()->tree_column()) {
+        return 2;
+    }
+
+    int maximum_indent_level = 1;
+
+    traverse_in_paint_order([&](ModelIndex const&, Gfx::IntRect const&, Gfx::IntRect const&, int indent_level) {
+        maximum_indent_level = max(maximum_indent_level, indent_level);
+        return IterationDecision::Continue;
+    });
+
+    return indent_width_in_pixels() * maximum_indent_level + icon_size() + icon_spacing() + 2;
+}
+
 }
 }

+ 2 - 0
Userland/Libraries/LibGUI/TreeView.h

@@ -36,6 +36,8 @@ public:
     virtual Gfx::IntRect content_rect(ModelIndex const&) const override;
     virtual Gfx::IntRect content_rect(ModelIndex const&) const override;
     virtual Gfx::IntRect paint_invalidation_rect(ModelIndex const& index) const override { return content_rect(index); }
     virtual Gfx::IntRect paint_invalidation_rect(ModelIndex const& index) const override { return content_rect(index); }
 
 
+    virtual int minimum_column_width(int column) override;
+
 protected:
 protected:
     TreeView();
     TreeView();