From 8dc2889958b9a74abc319a42670d9e06591fa717 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Danielle=20For=C3=A9?= Date: Sat, 19 Sep 2026 12:28:58 -0700 Subject: [PATCH 1/2] Bin/Box: add has_frame property --- demo/Views/CSSView.vala | 6 +++--- demo/Views/LabelView.vala | 2 +- lib/Widgets/Bin.vala | 16 ++++++++++++++++ lib/Widgets/Box.vala | 16 ++++++++++++++++ 4 files changed, 36 insertions(+), 4 deletions(-) diff --git a/demo/Views/CSSView.vala b/demo/Views/CSSView.vala index 9d5734620..067c64bf6 100644 --- a/demo/Views/CSSView.vala +++ b/demo/Views/CSSView.vala @@ -15,20 +15,20 @@ public class CSSView : DemoPage { secondary_text = "\"Granite.CssClass.CARD\" and \"Granite.CssClass.CHECKERBOARD\"" }; - var card = new Gtk.Box (VERTICAL, 0) { + var card = new Granite.Box (VERTICAL, NONE) { + has_frame = true, height_request = 128, hexpand = true }; - card.add_css_class (Granite.CssClass.CARD); var card_checkered = new Granite.Bin () { child = new Gtk.Image.from_icon_name ("battery-low") { halign = CENTER, icon_size = LARGE }, + has_frame = true, hexpand = true }; - card_checkered.add_css_class (Granite.CssClass.CARD); card_checkered.add_css_class (Granite.CssClass.CHECKERBOARD); var card_box = new Gtk.Box (HORIZONTAL, 24); diff --git a/demo/Views/LabelView.vala b/demo/Views/LabelView.vala index c2738bac7..27b7780a8 100644 --- a/demo/Views/LabelView.vala +++ b/demo/Views/LabelView.vala @@ -109,9 +109,9 @@ public class LabelView : DemoPage { var copy_label_card = new Granite.Bin () { child = copy_label, halign = START, + has_frame = true, width_request = 128 }; - copy_label_card.add_css_class (Granite.CssClass.CARD); var accellabel_box = new Granite.Box (VERTICAL, NONE); accellabel_box.append (accellabel_header); diff --git a/lib/Widgets/Bin.vala b/lib/Widgets/Bin.vala index b14638562..acdfa0a2e 100644 --- a/lib/Widgets/Bin.vala +++ b/lib/Widgets/Bin.vala @@ -42,6 +42,22 @@ public class Granite.Bin : Gtk.Widget { } } + /** + * Whether #this has a frame + */ + public bool has_frame { + get { + return has_css_class (Granite.CssClass.CARD); + } + set { + if (value && !has_css_class (Granite.CssClass.CARD)) { + add_css_class (Granite.CssClass.CARD); + } else if (has_css_class (Granite.CssClass.CARD)) { + remove_css_class (Granite.CssClass.CARD); + } + } + } + ~Bin () { if (child != null) { child.unparent (); diff --git a/lib/Widgets/Box.vala b/lib/Widgets/Box.vala index 799908740..0b1e43d69 100644 --- a/lib/Widgets/Box.vala +++ b/lib/Widgets/Box.vala @@ -43,6 +43,22 @@ public class Granite.Box : Gtk.Box { */ public Spacing child_spacing { get; construct set; } + /** + * Whether #this has a frame + */ + public bool has_frame { + get { + return has_css_class (Granite.CssClass.CARD); + } + set { + if (value && !has_css_class (Granite.CssClass.CARD)) { + add_css_class (Granite.CssClass.CARD); + } else if (has_css_class (Granite.CssClass.CARD)) { + remove_css_class (Granite.CssClass.CARD); + } + } + } + /** * Constructs a new {@link Granite.Box} */ From 75582a1cb7e4e939ea6c5b6dcea2622755c78cf1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Danielle=20For=C3=A9?= Date: Sat, 19 Sep 2026 12:29:36 -0700 Subject: [PATCH 2/2] add since --- lib/Widgets/Bin.vala | 1 + lib/Widgets/Box.vala | 1 + 2 files changed, 2 insertions(+) diff --git a/lib/Widgets/Bin.vala b/lib/Widgets/Bin.vala index acdfa0a2e..54c8bc480 100644 --- a/lib/Widgets/Bin.vala +++ b/lib/Widgets/Bin.vala @@ -45,6 +45,7 @@ public class Granite.Bin : Gtk.Widget { /** * Whether #this has a frame */ + [Version (since = "9.0.0")] public bool has_frame { get { return has_css_class (Granite.CssClass.CARD); diff --git a/lib/Widgets/Box.vala b/lib/Widgets/Box.vala index 0b1e43d69..ecb7c77da 100644 --- a/lib/Widgets/Box.vala +++ b/lib/Widgets/Box.vala @@ -46,6 +46,7 @@ public class Granite.Box : Gtk.Box { /** * Whether #this has a frame */ + [Version (since = "9.0.0")] public bool has_frame { get { return has_css_class (Granite.CssClass.CARD);