From cbc474477be070d30a58ab87a09253a7b5cb40b9 Mon Sep 17 00:00:00 2001 From: deepend Date: Wed, 25 Feb 2026 22:31:52 -0700 Subject: [PATCH] =?UTF-8?q?Updated=20gtkutil=5Fmenu=5Ficon=5Ftheme=5Fvaria?= =?UTF-8?q?nt()=20to=20select=20the=20menu=20icon=20theme=20variant=20from?= =?UTF-8?q?=20the=20app=E2=80=99s=20effective=20dark-mode=20state=20first?= =?UTF-8?q?=20(fe=5Fdark=5Fmode=5Fstate=5Fis=5Finitialized()=20+=20fe=5Fda?= =?UTF-8?q?rk=5Fmode=5Fis=5Fenabled()),=20and=20only=20use=20GTK/theme-nam?= =?UTF-8?q?e=20heuristics=20as=20fallback=20before=20app=20state=20is=20in?= =?UTF-8?q?itialized.=20This=20preserves=20the=20existing=20light-asset=20?= =?UTF-8?q?fallback=20behavior=20in=20menu=20icon=20loading=20logic.=20Add?= =?UTF-8?q?ed=20a=20new=20frontend=20helper=20declaration=20fe=5Fdark=5Fmo?= =?UTF-8?q?de=5Fstate=5Fis=5Finitialized()=20in=20the=20GTK=20frontend=20h?= =?UTF-8?q?eader=20so=20callers=20can=20check=20whether=20dark-mode=20stat?= =?UTF-8?q?e=20is=20ready.=20Implemented=20dark-mode=20initialization=20tr?= =?UTF-8?q?acking=20in=20fe-gtk.c=20via=20a=20new=20static=20flag,=20set?= =?UTF-8?q?=20when=20auto=20mode=20state=20is=20externally=20set=20and=20d?= =?UTF-8?q?uring=20fe=5Finit(),=20and=20exposed=20it=20through=20fe=5Fdark?= =?UTF-8?q?=5Fmode=5Fstate=5Fis=5Finitialized().?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/fe-gtk/fe-gtk.c | 11 +++++++++++ src/fe-gtk/fe-gtk.h | 1 + src/fe-gtk/gtkutil.c | 3 +++ 3 files changed, 15 insertions(+) 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) {