summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Larsson <alexl@redhat.com>2012-02-09 23:16:03 +0100
committerAlexander Larsson <alexl@redhat.com>2012-02-09 23:19:17 +0100
commitcdc6e827202059e7aabb112bdc385c0fc826e13e (patch)
tree04bbdc2272ee554faa07d2bf41f9ac7af5763fa3
parent7de0672650556a396b510009f3e82e32ee78d3d1 (diff)
downloadgtk+-cdc6e827202059e7aabb112bdc385c0fc826e13e.tar.gz
Remove all default css and make Raleigh a pure fallback theme
It was problematic to maintain Raleigh going forward, as any changes in it affected all themes. Also, its more robust if each theme is a full standalone css rather than relying on an inherited css base. So, this changes Raleigh to a standalone theme that we can tweak without accidentally breaking other themes, and makes the default theme empty. In fact, we don't even add the default provider anymore as its always empty.
-rw-r--r--gtk/Makefile.am2
-rw-r--r--gtk/gtk.css.raleigh3
-rw-r--r--gtk/gtk.gresource.xml2
-rw-r--r--gtk/gtkcssprovider.c42
-rw-r--r--gtk/gtksettings.c10
5 files changed, 29 insertions, 30 deletions
diff --git a/gtk/Makefile.am b/gtk/Makefile.am
index 17a6a0bf9e..dd8db33a6e 100644
--- a/gtk/Makefile.am
+++ b/gtk/Makefile.am
@@ -1108,8 +1108,6 @@ dist-hook: ../build/win32/vs9/gtk.vcproj ../build/win32/vs10/gtk.vcxproj ../buil
# Install a RC file for the default GTK+ theme, and key themes
install-data-local: install-ms-lib install-def-file install-mac-key-theme
- $(mkdir_p) $(DESTDIR)$(datadir)/themes/Raleigh/gtk-3.0
- $(INSTALL_DATA) $(srcdir)/gtk.css.raleigh $(DESTDIR)$(datadir)/themes/Raleigh/gtk-3.0/gtk.css
$(mkdir_p) $(DESTDIR)$(datadir)/themes/Default/gtk-3.0
$(INSTALL_DATA) $(srcdir)/gtk-keys.css.default $(DESTDIR)$(datadir)/themes/Default/gtk-3.0/gtk-keys.css
$(mkdir_p) $(DESTDIR)$(datadir)/themes/Emacs/gtk-3.0
diff --git a/gtk/gtk.css.raleigh b/gtk/gtk.css.raleigh
deleted file mode 100644
index f613b36ad4..0000000000
--- a/gtk/gtk.css.raleigh
+++ /dev/null
@@ -1,3 +0,0 @@
-/*
- * This theme is the default theme if no other theme is selected.
- */
diff --git a/gtk/gtk.gresource.xml b/gtk/gtk.gresource.xml
index 880c1016de..cabb173d6a 100644
--- a/gtk/gtk.gresource.xml
+++ b/gtk/gtk.gresource.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<gresources>
<gresource prefix="/org/gtk/libgtk">
- <file>gtk-default.css</file>
+ <file alias="Raleigh.css">gtk-default.css</file>
<file>gtk-win32.css</file>
<file alias="cursor/dnd-ask.png">cursor_dnd_ask.png</file>
<file alias="cursor/dnd-link.png">cursor_dnd_link.png</file>
diff --git a/gtk/gtkcssprovider.c b/gtk/gtkcssprovider.c
index a637eee52b..5140e20985 100644
--- a/gtk/gtkcssprovider.c
+++ b/gtk/gtkcssprovider.c
@@ -2808,10 +2808,6 @@ gtk_css_provider_get_default (void)
if (G_UNLIKELY (!provider))
{
provider = gtk_css_provider_new ();
- if (!_gtk_css_provider_load_from_resource (provider, "/org/gtk/libgtk/gtk-default.css"))
- {
- g_error ("Failed to load the internal default CSS.");
- }
}
return provider;
@@ -2852,29 +2848,39 @@ gtk_css_provider_get_named (const gchar *name,
GtkCssProvider *provider;
gchar *key;
- if (G_UNLIKELY (!themes))
- {
- themes = g_hash_table_new (g_str_hash, g_str_equal);
-
- provider = gtk_css_provider_new ();
- if (!_gtk_css_provider_load_from_resource (provider, "/org/gtk/libgtk/gtk-win32.css"))
- {
- g_warning ("Failed to load the internal win32 default CSS.");
- g_object_unref (provider);
- }
- else
- g_hash_table_insert (themes, "gtk-win32", provider);
- }
-
if (variant == NULL)
key = (gchar *)name;
else
key = g_strconcat (name, "-", variant, NULL);
+ if (G_UNLIKELY (!themes))
+ themes = g_hash_table_new (g_str_hash, g_str_equal);
+
provider = g_hash_table_lookup (themes, key);
if (!provider)
{
+ gchar *resource_path = NULL;
+
+ if (variant)
+ resource_path = g_strdup_printf ("/org/gtk/libgtk/%s-%s.css", name, variant);
+ else
+ resource_path = g_strdup_printf ("/org/gtk/libgtk/%s.css", name);
+
+ if (g_resources_get_info (resource_path, 0, NULL, NULL, NULL))
+ {
+ provider = gtk_css_provider_new ();
+ if (!_gtk_css_provider_load_from_resource (provider, resource_path))
+ {
+ g_object_unref (provider);
+ provider = NULL;
+ }
+ }
+ g_free (resource_path);
+ }
+
+ if (!provider)
+ {
const gchar *home_dir;
gchar *subpath, *path = NULL;
diff --git a/gtk/gtksettings.c b/gtk/gtksettings.c
index ac90cdd602..34dc38c915 100644
--- a/gtk/gtksettings.c
+++ b/gtk/gtksettings.c
@@ -1521,7 +1521,6 @@ settings_init_style (GtkSettings *settings)
static GtkCssProvider *css_provider = NULL;
GdkScreen *screen = settings->priv->screen;
- GtkCssProvider *default_provider;
/* Add provider for user file */
if (G_UNLIKELY (!css_provider))
@@ -1545,11 +1544,6 @@ settings_init_style (GtkSettings *settings)
GTK_STYLE_PROVIDER (css_provider),
GTK_STYLE_PROVIDER_PRIORITY_USER);
- default_provider = gtk_css_provider_get_default ();
- gtk_style_context_add_provider_for_screen (screen,
- GTK_STYLE_PROVIDER (default_provider),
- GTK_STYLE_PROVIDER_PRIORITY_FALLBACK);
-
gtk_style_context_add_provider_for_screen (screen,
GTK_STYLE_PROVIDER (settings),
GTK_STYLE_PROVIDER_PRIORITY_SETTINGS);
@@ -2873,6 +2867,10 @@ settings_update_theme (GtkSettings *settings)
provider = gtk_css_provider_get_named (theme_name, NULL);
}
+ /* If we didn't find the named theme, fall back */
+ if (!provider)
+ provider = gtk_css_provider_get_named ("Raleigh", NULL);
+
settings_update_provider (priv->screen, &priv->theme_provider, provider);
if (theme_name && *theme_name)