From eff34ff7a8a8e9bf629528ceefbc0da060b6ca86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Danielle=20For=C3=A9?= Date: Tue, 13 Jan 2026 12:10:13 -0800 Subject: [PATCH 1/2] WallpaperContainer: don't subclass flowboxchild, fix state flags --- data/plug.css | 17 +++++------------ src/Views/Wallpaper.vala | 20 +++++++++++++------- src/Widgets/WallpaperContainer.vala | 25 +++---------------------- 3 files changed, 21 insertions(+), 41 deletions(-) diff --git a/data/plug.css b/data/plug.css index 9e485f6fc..dca9012c9 100644 --- a/data/plug.css +++ b/data/plug.css @@ -53,30 +53,23 @@ background-position: calc(100% + 24px) calc(100% + 24px), 0; } -.wallpaper-container { - background-color: transparent; +.wallpaper flowboxchild { + border-radius: 0.75em; margin: 1em; } -.wallpaper-container picture { +.wallpaper flowboxchild picture { margin: 0.666em; /* Needs to be separate to position checkbutton */ } -.wallpaper-container .card:checked { - box-shadow: - 0 0 0 4px alpha(@text_color, 0.2), - 0 0 0 1px alpha(#000, 0.05), - 0 3px 3px alpha(#000, 0.22); -} - -.wallpaper-container:focus .card { +.wallpaper flowboxchild:checked .card { box-shadow: 0 0 0 4px @accent_color, 0 0 0 1px alpha(#000, 0.05), 0 3px 3px alpha(#000, 0.22); } -.wallpaper-container check { +.wallpaper flowboxchild check { border-radius: 50%; min-height: 20px; min-width: 20px; diff --git a/src/Views/Wallpaper.vala b/src/Views/Wallpaper.vala index e0a379156..f9f6ebc37 100644 --- a/src/Views/Wallpaper.vala +++ b/src/Views/Wallpaper.vala @@ -124,7 +124,13 @@ public class PantheonShell.Wallpaper : Switchboard.SettingsPage { } private Gtk.Widget create_widget_func (Object object) { - return (WallpaperContainer) object; + var wallpaper_container = (WallpaperContainer) object; + + var flowbox_child = new Gtk.FlowBoxChild () { + child = wallpaper_container + }; + + return flowbox_child; } private void show_wallpaper_chooser () { @@ -195,7 +201,7 @@ public class PantheonShell.Wallpaper : Switchboard.SettingsPage { } private void update_checked_wallpaper (Gtk.FlowBox box, Gtk.FlowBoxChild child) { - var children = (WallpaperContainer) wallpaper_view.get_selected_children ().data; + var children = (WallpaperContainer) child.get_child (); if (!(children is SolidColorContainer)) { current_wallpaper_path = children.uri; @@ -230,7 +236,7 @@ public class PantheonShell.Wallpaper : Switchboard.SettingsPage { wallpaper_model.insert_sorted (solid_color, wallpapers_sort_function); - wallpaper_view.select_child (solid_color); + wallpaper_view.select_child ((Gtk.FlowBoxChild) solid_color.get_parent ()); if (active_wallpaper != null) { active_wallpaper.checked = false; @@ -256,7 +262,7 @@ public class PantheonShell.Wallpaper : Switchboard.SettingsPage { var container = (WallpaperContainer) child; if (container.uri == current_wallpaper_path) { container.checked = true; - wallpaper_view.select_child (container); + wallpaper_view.select_child ((Gtk.FlowBoxChild) container.get_parent ()); active_wallpaper = container; break; } @@ -337,7 +343,7 @@ public class PantheonShell.Wallpaper : Switchboard.SettingsPage { finished = true; if (gnome_background_settings.get_string ("picture-options") == "none") { - wallpaper_view.select_child (solid_color); + wallpaper_view.select_child ((Gtk.FlowBoxChild) solid_color.get_parent ()); solid_color.checked = true; active_wallpaper = solid_color; } @@ -357,7 +363,7 @@ public class PantheonShell.Wallpaper : Switchboard.SettingsPage { private void create_solid_color_container (string color) { if (solid_color != null) { - wallpaper_view.unselect_child (solid_color); + wallpaper_view.unselect_child ((Gtk.FlowBoxChild) solid_color.get_parent ()); uint pos = -1; if (wallpaper_model.find (solid_color, out pos)) { @@ -411,7 +417,7 @@ public class PantheonShell.Wallpaper : Switchboard.SettingsPage { // Select the wallpaper if it is the current wallpaper if (current_wallpaper_path.has_suffix (uri) && gnome_background_settings.get_string ("picture-options") != "none") { - this.wallpaper_view.select_child (wallpaper); + this.wallpaper_view.select_child ((Gtk.FlowBoxChild) wallpaper.get_parent ()); // Set the widget activated without activating it wallpaper.checked = true; active_wallpaper = wallpaper; diff --git a/src/Widgets/WallpaperContainer.vala b/src/Widgets/WallpaperContainer.vala index ba782228a..26a979a4a 100644 --- a/src/Widgets/WallpaperContainer.vala +++ b/src/Widgets/WallpaperContainer.vala @@ -18,7 +18,7 @@ * */ -public class PantheonShell.WallpaperContainer : Gtk.FlowBoxChild { +public class PantheonShell.WallpaperContainer : Granite.Bin { public signal void trash (); protected const int THUMB_WIDTH = 256; @@ -38,10 +38,10 @@ public class PantheonShell.WallpaperContainer : Gtk.FlowBoxChild { return Gtk.StateFlags.CHECKED in get_state_flags (); } set { if (value) { - card_box.set_state_flags (Gtk.StateFlags.CHECKED, false); + parent.set_state_flags (Gtk.StateFlags.CHECKED, false); check_revealer.reveal_child = true; } else { - card_box.unset_state_flags (Gtk.StateFlags.CHECKED); + parent.unset_state_flags (Gtk.StateFlags.CHECKED); check_revealer.reveal_child = false; } @@ -49,27 +49,11 @@ public class PantheonShell.WallpaperContainer : Gtk.FlowBoxChild { } } - public bool selected { - get { - return Gtk.StateFlags.SELECTED in get_state_flags (); - } set { - if (value) { - set_state_flags (Gtk.StateFlags.SELECTED, false); - } else { - unset_state_flags (Gtk.StateFlags.SELECTED); - } - - queue_draw (); - } - } - public WallpaperContainer (string uri, string? thumb_path, bool thumb_valid) { Object (uri: uri, thumb_path: thumb_path, thumb_valid: thumb_valid); } construct { - add_css_class ("wallpaper-container"); - image = new Gtk.Picture () { content_fit = COVER, height_request = THUMB_HEIGHT @@ -142,9 +126,6 @@ public class PantheonShell.WallpaperContainer : Gtk.FlowBoxChild { add_controller (secondary_click_gesture); } - activate.connect (() => { - checked = true; - }); try { if (uri != null) { if (thumb_path != null && thumb_valid) { From 22170075fb6f3566fe33e56a147fed9c9da8bf2b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Danielle=20For=C3=A9?= Date: Tue, 13 Jan 2026 18:48:08 -0800 Subject: [PATCH 2/2] Fix Granite style class deprecations (#471) --- src/Views/Appearance.vala | 3 +-- src/Views/Wallpaper.vala | 7 +++++-- src/Widgets/WallpaperContainer.vala | 3 +-- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/Views/Appearance.vala b/src/Views/Appearance.vala index 4a920b5dd..19426300a 100644 --- a/src/Views/Appearance.vala +++ b/src/Views/Appearance.vala @@ -450,8 +450,7 @@ public class PantheonShell.Appearance : Switchboard.SettingsPage { overlay.add_overlay (dock); overlay.add_overlay (window_back); overlay.add_overlay (window_front); - overlay.add_css_class (Granite.STYLE_CLASS_CARD); - overlay.add_css_class (Granite.STYLE_CLASS_ROUNDED); + overlay.add_css_class (Granite.CssClass.CARD); var monitor = Gdk.Display.get_default ().get_monitor_at_surface ( (((Gtk.Application) Application.get_default ()).active_window).get_surface () diff --git a/src/Views/Wallpaper.vala b/src/Views/Wallpaper.vala index e0a379156..3006546b8 100644 --- a/src/Views/Wallpaper.vala +++ b/src/Views/Wallpaper.vala @@ -113,9 +113,12 @@ public class PantheonShell.Wallpaper : Switchboard.SettingsPage { var box = new Gtk.Box (VERTICAL, 0); box.append (view_overlay); box.append (actionbar); - box.add_css_class (Granite.STYLE_CLASS_FRAME); - child = box; + var frame = new Gtk.Frame (null) { + child = box + }; + + child = frame; add_css_class ("wallpaper"); add_wallpaper_button.clicked.connect (show_wallpaper_chooser); diff --git a/src/Widgets/WallpaperContainer.vala b/src/Widgets/WallpaperContainer.vala index ba782228a..9add42aa0 100644 --- a/src/Widgets/WallpaperContainer.vala +++ b/src/Widgets/WallpaperContainer.vala @@ -74,8 +74,7 @@ public class PantheonShell.WallpaperContainer : Gtk.FlowBoxChild { content_fit = COVER, height_request = THUMB_HEIGHT }; - image.add_css_class (Granite.STYLE_CLASS_CARD); - image.add_css_class (Granite.STYLE_CLASS_ROUNDED); + image.add_css_class (Granite.CssClass.CARD); var check = new Gtk.CheckButton () { active = true,