diff --git a/src/fe-gtk/fe-gtk.c b/src/fe-gtk/fe-gtk.c index 64383863..2430c683 100644 --- a/src/fe-gtk/fe-gtk.c +++ b/src/fe-gtk/fe-gtk.c @@ -587,6 +587,7 @@ fe_system_prefers_dark (void) } static gboolean auto_dark_mode_enabled = FALSE; +static gboolean dark_mode_state_initialized = FALSE; static void fe_set_gtk_prefer_dark_theme (gboolean dark) @@ -657,6 +658,13 @@ void fe_set_auto_dark_mode_state (gboolean enabled) { auto_dark_mode_enabled = enabled; + dark_mode_state_initialized = TRUE; +} + +gboolean +fe_dark_mode_state_is_initialized (void) +{ + return dark_mode_state_initialized; } void @@ -1008,7 +1016,10 @@ fe_init (void) palette_load (); settings = gtk_settings_get_default (); if (settings) + { auto_dark_mode_enabled = fe_system_prefers_dark (); + dark_mode_state_initialized = TRUE; + } fe_apply_theme_for_mode (prefs.hex_gui_dark_mode, NULL); key_init (); diff --git a/src/fe-gtk/fe-gtk.h b/src/fe-gtk/fe-gtk.h index 779f8d80..83b5be0e 100644 --- a/src/fe-gtk/fe-gtk.h +++ b/src/fe-gtk/fe-gtk.h @@ -189,6 +189,7 @@ extern cairo_surface_t *dialogwin_pix; gboolean fe_dark_mode_is_enabled (void); gboolean fe_dark_mode_is_enabled_for (unsigned int mode); +gboolean fe_dark_mode_state_is_initialized (void); void fe_set_auto_dark_mode_state (gboolean enabled); void fe_refresh_auto_dark_mode (void); gboolean fe_apply_theme_for_mode (unsigned int mode, gboolean *palette_changed); diff --git a/src/fe-gtk/gtkutil.c b/src/fe-gtk/gtkutil.c index 9b1264b8..ca8a47d7 100644 --- a/src/fe-gtk/gtkutil.c +++ b/src/fe-gtk/gtkutil.c @@ -251,6 +251,9 @@ gtkutil_menu_icon_theme_variant (void) char *theme_name_lower = NULL; const char *theme_variant = "light"; + if (fe_dark_mode_state_is_initialized ()) + return fe_dark_mode_is_enabled () ? "dark" : "light"; + settings = gtk_settings_get_default (); if (settings) {