[gnome-flashback] add Adwaita and HighContrast theme



commit 56ca8c70b26836a553a08f5dcfdcff988df50534
Author: Alberts Muktupāvels <alberts muktupavels gmail com>
Date:   Sun Mar 29 19:11:35 2015 +0300

    add Adwaita and HighContrast theme

 gnome-flashback/Adwaita.css                        |    4 +
 gnome-flashback/HighContrast.css                   |    4 +
 gnome-flashback/Makefile.am                        |   21 ++++++-
 gnome-flashback/flashback-application.c            |   72 ++++++++++++++++++--
 gnome-flashback/flashback.gresource.xml            |    8 ++
 gnome-flashback/libend-session-dialog/Makefile.am  |   14 +---
 .../flashback-inhibit-dialog.c                     |    3 +-
 .../libend-session-dialog/flashback.gresource.xml  |    6 --
 8 files changed, 104 insertions(+), 28 deletions(-)
---
diff --git a/gnome-flashback/Adwaita.css b/gnome-flashback/Adwaita.css
new file mode 100644
index 0000000..362ec9a
--- /dev/null
+++ b/gnome-flashback/Adwaita.css
@@ -0,0 +1,4 @@
+FlashbackOsdWindow
+{
+  border-radius: 20px;
+}
diff --git a/gnome-flashback/HighContrast.css b/gnome-flashback/HighContrast.css
new file mode 100644
index 0000000..362ec9a
--- /dev/null
+++ b/gnome-flashback/HighContrast.css
@@ -0,0 +1,4 @@
+FlashbackOsdWindow
+{
+  border-radius: 20px;
+}
diff --git a/gnome-flashback/Makefile.am b/gnome-flashback/Makefile.am
index eacd19f..df1e9e3 100644
--- a/gnome-flashback/Makefile.am
+++ b/gnome-flashback/Makefile.am
@@ -21,7 +21,8 @@ gnome_flashback_SOURCES = \
        flashback-application.h \
        flashback-main.c \
        flashback-session.c \
-       flashback-session.h
+       flashback-session.h \
+       $(BUILT_SOURCES)
 
 gnome_flashback_LDADD = \
        $(GNOME_FLASHBACK_LIBS) \
@@ -34,4 +35,22 @@ gnome_flashback_LDADD = \
        $(top_builddir)/gnome-flashback/libshell/libshell.la \
        $(top_builddir)/gnome-flashback/libsound-applet/libsound-applet.la
 
+flashback-resources.c: flashback.gresource.xml $(shell $(GLIB_COMPILE_RESOURCES) --sourcedir=$(srcdir) 
--generate-dependencies $(srcdir)/flashback.gresource.xml)
+       $(AM_V_GEN)$(GLIB_COMPILE_RESOURCES) --target=$@ --sourcedir=$(srcdir) --generate --c-name flashback 
$<
+
+flashback-resources.h: flashback.gresource.xml $(shell $(GLIB_COMPILE_RESOURCES) --sourcedir=$(srcdir) 
--generate-dependencies $(srcdir)/flashback.gresource.xml)
+       $(AM_V_GEN)$(GLIB_COMPILE_RESOURCES) --target=$@ --sourcedir=$(srcdir) --generate --c-name flashback 
$<
+
+BUILT_SOURCES = \
+       flashback-resources.c \
+       flashback-resources.h
+
+EXTRA_DIST = \
+       Adwaita.css \
+       flashback.gresource.xml \
+       HighContrast.css
+
+CLEANFILES = \
+       $(BUILT_SOURCES)
+
 -include $(top_srcdir)/git.mk
diff --git a/gnome-flashback/flashback-application.c b/gnome-flashback/flashback-application.c
index d21ca38..07ff159 100644
--- a/gnome-flashback/flashback-application.c
+++ b/gnome-flashback/flashback-application.c
@@ -36,6 +36,8 @@ struct _FlashbackApplication
 
   GSettings                 *settings;
 
+  GtkCssProvider            *provider;
+
   GsdAutomountManager       *automount;
   DesktopBackground         *background;
   FlashbackDisplayConfig    *config;
@@ -49,9 +51,59 @@ struct _FlashbackApplication
 G_DEFINE_TYPE (FlashbackApplication, flashback_application, G_TYPE_OBJECT)
 
 static void
-flashback_application_settings_changed (GSettings   *settings,
-                                        const gchar *key,
-                                        gpointer     user_data)
+remove_style_provider (FlashbackApplication *application,
+                       GdkScreen            *screen)
+{
+  GtkStyleProvider *provider;
+
+  if (application->provider == FALSE)
+    return;
+
+  provider = GTK_STYLE_PROVIDER (application->provider);
+  gtk_style_context_remove_provider_for_screen (screen, provider);
+  g_clear_object (&application->provider);
+}
+
+static void
+theme_changed (GtkSettings *settings,
+               gpointer      user_data)
+{
+  FlashbackApplication *application;
+  GdkScreen *screen;
+  gchar *theme;
+
+  application = FLASHBACK_APPLICATION (user_data);
+  screen = gdk_screen_get_default ();
+
+  g_object_get (settings, "gtk-theme-name", &theme, NULL);
+
+  if (g_strcmp0 (theme, "Adwaita") == 0 || g_strcmp0 (theme, "HighContrast") == 0)
+    {
+      gchar *resource;
+      GtkStyleProvider *provider;
+      gint priority;
+
+      application->provider = gtk_css_provider_new ();
+
+      resource = g_strdup_printf ("/org/gnome/gnome-flashback/%s.css", theme);
+      gtk_css_provider_load_from_resource (application->provider, resource);
+      g_free (resource);
+
+      provider = GTK_STYLE_PROVIDER (application->provider);
+      priority = GTK_STYLE_PROVIDER_PRIORITY_APPLICATION;
+
+      gtk_style_context_add_provider_for_screen (screen, provider, priority);
+    }
+  else
+    remove_style_provider (application, screen);
+
+  g_free (theme);
+}
+
+static void
+settings_changed (GSettings   *settings,
+                  const gchar *key,
+                  gpointer     user_data)
 {
   FlashbackApplication *application;
 
@@ -98,6 +150,8 @@ flashback_application_finalize (GObject *object)
 
   g_clear_object (&application->settings);
 
+  remove_style_provider (application, gdk_screen_get_default ());
+
   g_clear_object (&application->automount);
   g_clear_object (&application->background);
   g_clear_object (&application->config);
@@ -113,14 +167,18 @@ flashback_application_finalize (GObject *object)
 static void
 flashback_application_init (FlashbackApplication *application)
 {
+  GtkSettings *settings;
+
   application->settings = g_settings_new ("org.gnome.gnome-flashback");
+  settings = gtk_settings_get_default ();
 
   g_signal_connect (application->settings, "changed",
-                    G_CALLBACK (flashback_application_settings_changed),
-                    application);
+                    G_CALLBACK (settings_changed), application);
+  g_signal_connect (settings, "notify::gtk-theme-name",
+                    G_CALLBACK (theme_changed), application);
 
-  flashback_application_settings_changed (application->settings,
-                                          NULL, application);
+  settings_changed (application->settings, NULL, application);
+  theme_changed (settings, application);
 
   application->bus_name = g_bus_own_name (G_BUS_TYPE_SESSION,
                                           "org.gnome.Shell",
diff --git a/gnome-flashback/flashback.gresource.xml b/gnome-flashback/flashback.gresource.xml
new file mode 100644
index 0000000..363697a
--- /dev/null
+++ b/gnome-flashback/flashback.gresource.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<gresources>
+  <gresource prefix="/org/gnome/gnome-flashback">
+    <file>Adwaita.css</file>
+    <file>HighContrast.css</file>
+    <file alias="flashback-inhibit-dialog.ui" 
compressed="true">libend-session-dialog/flashback-inhibit-dialog.ui</file>
+  </gresource>
+</gresources>
diff --git a/gnome-flashback/libend-session-dialog/Makefile.am 
b/gnome-flashback/libend-session-dialog/Makefile.am
index f6ea2a0..9d3ba3d 100644
--- a/gnome-flashback/libend-session-dialog/Makefile.am
+++ b/gnome-flashback/libend-session-dialog/Makefile.am
@@ -12,9 +12,7 @@ libend_session_dialog_la_SOURCES = \
        flashback-end-session-dialog.c \
        flashback-end-session-dialog.h \
        flashback-inhibit-dialog.c \
-       flashback-inhibit-dialog.h \
-       flashback-resources.c \
-       flashback-resources.h
+       flashback-inhibit-dialog.h
 
 libend_session_dialog_la_LIBADD = \
        $(END_SESSION_DIALOG_LIBS)
@@ -27,20 +25,12 @@ dbus-end-session-dialog.c: org.gnome.SessionManager.EndSessionDialog.xml Makefil
                --c-namespace DBus \
                org.gnome.SessionManager.EndSessionDialog.xml
 
-flashback-resources.c: flashback.gresource.xml $(shell $(GLIB_COMPILE_RESOURCES) --sourcedir=$(srcdir) 
--generate-dependencies $(srcdir)/flashback.gresource.xml)
-       $(AM_V_GEN)$(GLIB_COMPILE_RESOURCES) --target=$@ --sourcedir=$(srcdir) --generate --c-name flashback 
--manual-register $<
-flashback-resources.h: flashback.gresource.xml $(shell $(GLIB_COMPILE_RESOURCES) --sourcedir=$(srcdir) 
--generate-dependencies $(srcdir)/flashback.gresource.xml)
-       $(AM_V_GEN)$(GLIB_COMPILE_RESOURCES) --target=$@ --sourcedir=$(srcdir) --generate --c-name flashback 
--manual-register $<
-
 BUILT_SOURCES = \
        dbus-end-session-dialog.h \
-       dbus-end-session-dialog.c \
-       flashback-resources.c \
-       flashback-resources.h
+       dbus-end-session-dialog.c
 
 EXTRA_DIST = \
        org.gnome.SessionManager.EndSessionDialog.xml \
-       flashback.gresource.xml \
        flashback-inhibit-dialog.ui
 
 CLEANFILES = \
diff --git a/gnome-flashback/libend-session-dialog/flashback-inhibit-dialog.c 
b/gnome-flashback/libend-session-dialog/flashback-inhibit-dialog.c
index 05f59d4..8d10848 100644
--- a/gnome-flashback/libend-session-dialog/flashback-inhibit-dialog.c
+++ b/gnome-flashback/libend-session-dialog/flashback-inhibit-dialog.c
@@ -30,7 +30,6 @@
 
 #include "config.h"
 #include "flashback-inhibit-dialog.h"
-#include "flashback-resources.h"
 
 #define IS_STRING_EMPTY(string) ((string) == NULL || (string)[0] == '\0')
 
@@ -794,7 +793,7 @@ flashback_inhibit_dialog_class_init (FlashbackInhibitDialogClass *klass)
        binding_set = gtk_binding_set_by_class (klass);
        gtk_binding_entry_add_signal (binding_set, GDK_KEY_Escape, 0, "close", 0);
 
-       flashback_register_resource ();
+       //flashback_register_resource ();
 
        gtk_widget_class_set_template_from_resource (widget_class, 
"/org/gnome/gnome-flashback/flashback-inhibit-dialog.ui");
        gtk_widget_class_bind_template_child_private (widget_class, FlashbackInhibitDialog, main_box);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]