From 64ad6c0a96b46a9d86d9a8babac1298c18d5fc1f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ball=C3=B3=20Gy=C3=B6rgy?= 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 @@ nemo-statusbar-ui.xml ../icons/thumbnail_frame.png ../icons/knob.png + Adwaita.css nemo-style-fallback.css -- 2.1.3