void-packages/srcpkgs/nemo/patches/desktop-theme.patch
2015-01-24 10:37:30 +01:00

131 lines
3.5 KiB
Diff

From 64ad6c0a96b46a9d86d9a8babac1298c18d5fc1f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ball=C3=B3=20Gy=C3=B6rgy?= <ballogyor@gmail.com>
Date: Sat, 22 Nov 2014 21:23:25 +0100
Subject: [PATCH] Add application-specific theme for Adwaita
Based on this patch for Nautilus:
https://git.gnome.org/browse/nautilus/commit/?id=3fd7e847d531fbbfc4ebba24864bdd0f8b81c750
---
src/Adwaita.css | 26 +++++++++++++++++++++++++
src/nemo-application.c | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++
src/nemo.gresource.xml | 1 +
3 files changed, 79 insertions(+)
create mode 100644 src/Adwaita.css
diff --git a/src/Adwaita.css b/src/Adwaita.css
new file mode 100644
index 0000000..d8b1f0c
--- /dev/null
+++ src/Adwaita.css
@@ -0,0 +1,26 @@
+.nemo-canvas-item {
+ border-radius: 5px;
+}
+
+.nemo-desktop.nemo-canvas-item {
+ color: @theme_selected_fg_color;
+ text-shadow: 1px 1px black;
+}
+
+.nemo-desktop.nemo-canvas-item:active {
+ color: @theme_text_color;
+}
+
+.nemo-desktop.nemo-canvas-item:selected {
+ color: @theme_selected_fg_color;
+}
+
+.nemo-desktop.nemo-canvas-item:active,
+.nemo-desktop.nemo-canvas-item:prelight,
+.nemo-desktop.nemo-canvas-item:selected {
+ text-shadow: none;
+}
+
+.nemo-desktop.nemo-canvas-item:selected:backdrop {
+ color: @theme_unfocused_selected_fg_color;
+}
diff --git a/src/nemo-application.c b/src/nemo-application.c
index b3e8945..e5dd014 100644
--- src/nemo-application.c
+++ src/nemo-application.c
@@ -1041,6 +1041,56 @@ out_a:
}
static void
+theme_changed (GtkSettings *settings)
+{
+ static GtkCssProvider *adwaita_provider = NULL;
+ gchar *theme;
+ GdkScreen *screen;
+
+ g_object_get (settings, "gtk-theme-name", &theme, NULL);
+ screen = gdk_screen_get_default ();
+
+ if (g_str_equal (theme, "Adwaita"))
+ {
+ if (adwaita_provider == NULL)
+ {
+ GFile *file;
+
+ adwaita_provider = gtk_css_provider_new ();
+ file = g_file_new_for_uri ("resource:///org/nemo/Adwaita.css");
+ gtk_css_provider_load_from_file (adwaita_provider, file, NULL);
+ g_object_unref (file);
+ }
+
+ gtk_style_context_add_provider_for_screen (screen,
+ GTK_STYLE_PROVIDER (adwaita_provider),
+ GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
+ }
+ else if (adwaita_provider != NULL)
+ {
+ gtk_style_context_remove_provider_for_screen (screen,
+ GTK_STYLE_PROVIDER (adwaita_provider));
+ g_clear_object (&adwaita_provider);
+ }
+
+ g_free (theme);
+}
+
+static void
+setup_theme_extensions (void)
+{
+ GtkSettings *settings;
+
+ /* Set up a handler to load our custom css for Adwaita.
+ * See https://bugzilla.gnome.org/show_bug.cgi?id=732959
+ * for a more automatic solution that is still under discussion.
+ */
+ settings = gtk_settings_get_default ();
+ g_signal_connect (settings, "notify::gtk-theme-name", G_CALLBACK (theme_changed), NULL);
+ theme_changed (settings);
+}
+
+static void
init_icons_and_styles (void)
{
/* initialize search path for custom icons */
@@ -1052,6 +1102,8 @@ init_icons_and_styles (void)
NEMO_STATUSBAR_ICON_SIZE);
nemo_application_add_app_css_provider ();
+
+ setup_theme_extensions ();
}
static void
diff --git a/src/nemo.gresource.xml b/src/nemo.gresource.xml
index 8bb2bd3..6e6029d 100644
--- src/nemo.gresource.xml
+++ src/nemo.gresource.xml
@@ -11,6 +11,7 @@
<file>nemo-statusbar-ui.xml</file>
<file alias="icons/thumbnail_frame.png">../icons/thumbnail_frame.png</file>
<file alias="icons/knob.png">../icons/knob.png</file>
+ <file>Adwaita.css</file>
<file>nemo-style-fallback.css</file>
</gresource>
</gresources>
--
2.1.3