widget-factory: Improve the theme selector

Implement the "Current style" choice using
gtk_settings_reset_property, so we go back to
following the settings changes.
This commit is contained in:
Matthias Clasen 2020-04-24 21:12:20 -04:00
parent b54178e6a4
commit 02fa948914

View File

@ -40,9 +40,6 @@ change_dark_state (GSimpleAction *action,
g_simple_action_set_state (action, state); g_simple_action_set_state (action, state);
} }
static char *current_theme;
static gboolean current_dark;
static void static void
change_theme_state (GSimpleAction *action, change_theme_state (GSimpleAction *action,
GVariant *state, GVariant *state,
@ -53,6 +50,8 @@ change_theme_state (GSimpleAction *action,
const char *theme; const char *theme;
gboolean prefer_dark = FALSE; gboolean prefer_dark = FALSE;
g_simple_action_set_state (action, state);
s = g_variant_get_string (state, NULL); s = g_variant_get_string (state, NULL);
if (strcmp (s, "adwaita") == 0) if (strcmp (s, "adwaita") == 0)
@ -77,8 +76,9 @@ change_theme_state (GSimpleAction *action,
} }
else if (strcmp (s, "current") == 0) else if (strcmp (s, "current") == 0)
{ {
theme = current_theme; gtk_settings_reset_property (settings, "gtk-theme-name");
prefer_dark = current_dark; gtk_settings_reset_property (settings, "gtk-application-prefer-dark-theme");
return;
} }
else else
return; return;
@ -87,8 +87,6 @@ change_theme_state (GSimpleAction *action,
"gtk-theme-name", theme, "gtk-theme-name", theme,
"gtk-application-prefer-dark-theme", prefer_dark, "gtk-application-prefer-dark-theme", prefer_dark,
NULL); NULL);
g_simple_action_set_state (action, state);
} }
static GtkWidget *page_stack; static GtkWidget *page_stack;
@ -1740,11 +1738,6 @@ activate (GApplication *app)
GAction *action; GAction *action;
GError *error = NULL; GError *error = NULL;
g_object_get (gtk_settings_get_default (),
"gtk-theme-name", &current_theme,
"gtk-application-prefer-dark-theme", &current_dark,
NULL);
g_type_ensure (my_text_view_get_type ()); g_type_ensure (my_text_view_get_type ());
provider = gtk_css_provider_new (); provider = gtk_css_provider_new ();