diff --git a/src/Services/Appearance.vala b/src/Services/Appearance.vala index 1089a3a5..b079c050 100644 --- a/src/Services/Appearance.vala +++ b/src/Services/Appearance.vala @@ -4,34 +4,26 @@ */ public class Monitor.Appearance : Object { - public static void set_prefered_style () { - var granite_settings = Granite.Settings.get_default (); - var gtk_settings = Gtk.Settings.get_default (); + private static Gtk.CssProvider provider; - bool is_dark = granite_settings.prefers_color_scheme == Granite.Settings.ColorScheme.DARK; - gtk_settings.gtk_application_prefer_dark_theme = is_dark; + public static void set_prefered_style () { + provider = new Gtk.CssProvider (); + Gtk.StyleContext.add_provider_for_display (Gdk.Display.get_default (), provider, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION); + var granite_settings = Granite.Settings.get_default (); + update_style_provider (granite_settings.prefers_color_scheme); - var provider = new Gtk.CssProvider (); + // We listen to changes in Granite.Settings and update our app if the user changes their preference + granite_settings.notify["prefers-color-scheme"].connect (() => { + update_style_provider (granite_settings.prefers_color_scheme); + }); + } - if (is_dark) { + private static void update_style_provider (Granite.Settings.ColorScheme color_scheme) { + if (color_scheme == DARK) { provider.load_from_resource ("/io/elementary/monitor/monitor-dark.css"); } else { provider.load_from_resource ("/io/elementary/monitor/monitor-light.css"); } - - Gtk.StyleContext.add_provider_for_display (Gdk.Display.get_default (), provider, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION); - - // We listen to changes in Granite.Settings and update our app if the user changes their preference - granite_settings.notify["prefers-color-scheme"].connect (() => { - is_dark = granite_settings.prefers_color_scheme == Granite.Settings.ColorScheme.DARK; - gtk_settings.gtk_application_prefer_dark_theme = is_dark; - - if (is_dark) { - provider.load_from_resource ("/io/elementary/monitor/monitor-dark.css"); - } else { - provider.load_from_resource ("/io/elementary/monitor/monitor-light.css"); - } - }); } }