[gnome-panel] add option to use dark theme variant
- From: Alberts Muktupāvels <muktupavels src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-panel] add option to use dark theme variant
- Date: Wed, 23 Dec 2015 04:13:50 +0000 (UTC)
commit 63bdad08404ace584f6b7a12184293d1dccb691b
Author: Alberts Muktupāvels <alberts muktupavels gmail com>
Date: Wed Dec 23 06:10:30 2015 +0200
add option to use dark theme variant
https://bugzilla.gnome.org/show_bug.cgi?id=759576
data/org.gnome.gnome-panel.gschema.xml.in.in | 4 ++
gnome-panel/main.c | 43 +++++++++++++++++++++++--
gnome-panel/panel-enums-gsettings.h | 6 +++
gnome-panel/panel-schemas.h | 1 +
4 files changed, 50 insertions(+), 4 deletions(-)
---
diff --git a/data/org.gnome.gnome-panel.gschema.xml.in.in b/data/org.gnome.gnome-panel.gschema.xml.in.in
index 812dd56..813dcb4 100644
--- a/data/org.gnome.gnome-panel.gschema.xml.in.in
+++ b/data/org.gnome.gnome-panel.gschema.xml.in.in
@@ -33,6 +33,10 @@
<default>'16px'</default>
<_summary>Icon size for only Applications item in the Menu Bar applet</_summary>
</key>
+ <key name="theme-variant" enum="org.gnome.gnome-panel.PanelThemeVariant">
+ <default>'system'</default>
+ <_summary>Which theme variant to use</_summary>
+ </key>
</schema>
<schema id="org.gnome.gnome-panel.layout" path="/org/gnome/gnome-panel/layout/">
diff --git a/gnome-panel/main.c b/gnome-panel/main.c
index acae6d5..683ad04 100644
--- a/gnome-panel/main.c
+++ b/gnome-panel/main.c
@@ -23,6 +23,7 @@
#include "panel-action-protocol.h"
#include "panel-icon-names.h"
#include "panel-layout.h"
+#include "panel-schemas.h"
#include "xstuff.h"
/* globals */
@@ -31,6 +32,9 @@ GSList *panel_list = NULL;
static gboolean replace = FALSE;
static gboolean version = FALSE;
+
+static GSettings *g_settings = NULL;
+static GtkSettings *gtk_settings = NULL;
static GtkStyleProvider *provider = NULL;
static const GOptionEntry options[] = {
@@ -85,6 +89,29 @@ theme_changed (GtkSettings *settings,
g_free (resource);
}
+static void
+theme_variant_changed_cb (GSettings *settings,
+ const gchar *key,
+ gpointer user_data)
+{
+ PanelThemeVariant variant;
+
+ variant = g_settings_get_enum (settings, key);
+
+ if (variant == PANEL_THEME_VARIANT_SYSTEM)
+ {
+ gtk_settings_reset_property (gtk_settings,
+ "gtk-application-prefer-dark-theme");
+ }
+ else
+ {
+ g_object_set (gtk_settings, "gtk-application-prefer-dark-theme",
+ variant == PANEL_THEME_VARIANT_DARK, NULL);
+ }
+
+ theme_changed (gtk_settings, NULL);
+}
+
static gboolean
on_term_signal (gpointer user_data)
{
@@ -104,7 +131,6 @@ main (int argc, char **argv)
{
GOptionContext *context;
GError *error;
- GtkSettings *settings;
PanelSession *session;
GSList *toplevels_to_destroy;
GSList *l;
@@ -165,12 +191,21 @@ main (int argc, char **argv)
* connecting to the session manager */
panel_session_register_client (session);
- settings = gtk_settings_get_default ();
- g_signal_connect (settings, "notify::gtk-theme-name", G_CALLBACK (theme_changed), NULL);
- theme_changed (settings, NULL);
+ g_settings = g_settings_new (PANEL_GENERAL_SCHEMA);
+ g_signal_connect (g_settings, "changed::" PANEL_GENERAL_THEME_VARIANT_KEY,
+ G_CALLBACK (theme_variant_changed_cb), NULL);
+
+ gtk_settings = gtk_settings_get_default ();
+ g_signal_connect (gtk_settings, "notify::gtk-theme-name",
+ G_CALLBACK (theme_changed), NULL);
+ g_signal_connect (gtk_settings, "notify::gtk-application-prefer-dark-theme",
+ G_CALLBACK (theme_changed), NULL);
+
+ theme_variant_changed_cb (g_settings, PANEL_GENERAL_THEME_VARIANT_KEY, NULL);
gtk_main ();
+ g_object_unref (g_settings);
g_object_unref (session);
toplevels_to_destroy = g_slist_copy (panel_toplevel_list_toplevels ());
diff --git a/gnome-panel/panel-enums-gsettings.h b/gnome-panel/panel-enums-gsettings.h
index a8aee26..0c9f3c3 100644
--- a/gnome-panel/panel-enums-gsettings.h
+++ b/gnome-panel/panel-enums-gsettings.h
@@ -58,6 +58,12 @@ typedef enum {
PANEL_BACKGROUND_IMAGE_STYLE_FIT = 2
} PanelBackgroundImageStyle;
+typedef enum {
+ PANEL_THEME_VARIANT_SYSTEM,
+ PANEL_THEME_VARIANT_LIGHT,
+ PANEL_THEME_VARIANT_DARK
+} PanelThemeVariant;
+
G_END_DECLS
#endif /* __PANEL_ENUMS_GSETTINGS_H__ */
diff --git a/gnome-panel/panel-schemas.h b/gnome-panel/panel-schemas.h
index ba6962d..0a3d495 100644
--- a/gnome-panel/panel-schemas.h
+++ b/gnome-panel/panel-schemas.h
@@ -6,6 +6,7 @@
#define PANEL_GENERAL_SCHEMA "org.gnome.gnome-panel.general"
#define PANEL_GENERAL_CONFIRM_PANEL_REMOVAL_KEY "confirm-panel-removal"
#define PANEL_GENERAL_ENABLE_TOOLTIPS_KEY "enable-tooltips"
+#define PANEL_GENERAL_THEME_VARIANT_KEY "theme-variant"
#define PANEL_LOCKDOWN_SCHEMA "org.gnome.gnome-panel.lockdown"
#define PANEL_LOCKDOWN_COMPLETE_LOCKDOWN_KEY "locked-down"
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]