]> Pileus Git - ~andy/gtk/blobdiff - gtk/gtkicontheme.c
Display an error when we come to the root.
[~andy/gtk] / gtk / gtkicontheme.c
index 9064973427ab1e1d3f21873e08717d3a9e7c8aa9..92270bc459dfb13ad9eb8995174c250a73d80d95 100644 (file)
@@ -40,6 +40,7 @@
 #include "gtkiconcache.h"
 #include "gtkbuiltincache.h"
 #include "gtkintl.h"
+#include "gtkmain.h"
 #include "gtksettings.h"
 #include "gtkprivate.h"
 #include "gtkalias.h"
@@ -551,7 +552,6 @@ gtk_icon_theme_init (GtkIconTheme *icon_theme)
   for (i = 0; xdg_data_dirs[i]; i++) ;
 
   priv->search_path_len = 2 * i + 2;
-  g_print ("search_path_len 1 %d\n", priv->search_path_len);
   
   priv->search_path = g_new (char *, priv->search_path_len);
   
@@ -579,7 +579,7 @@ free_dir_mtime (IconThemeDirMtime *dir_mtime)
     _gtk_icon_cache_unref (dir_mtime->cache);
 
   g_free (dir_mtime->dir);
-  g_free (dir_mtime);
+  g_slice_free (IconThemeDirMtime, dir_mtime);
 
 }
 
@@ -619,7 +619,8 @@ do_theme_change (GtkIconTheme *icon_theme)
 
   if (!priv->reset_styles_idle)
     priv->reset_styles_idle = 
-      g_idle_add (reset_styles_idle, icon_theme);
+      g_idle_add_full (GTK_PRIORITY_RESIZE - 2, 
+                      reset_styles_idle, icon_theme, NULL);
 }
 
 static void
@@ -717,8 +718,6 @@ gtk_icon_theme_set_search_path (GtkIconTheme *icon_theme,
   priv->search_path = g_new (gchar *, n_elements);
   priv->search_path_len = n_elements;
 
-  g_print ("search_path_len 2 %d\n", priv->search_path_len);
-
   for (i = 0; i < priv->search_path_len; i++)
     priv->search_path[i] = g_strdup (path[i]);
 
@@ -785,8 +784,6 @@ gtk_icon_theme_append_search_path (GtkIconTheme *icon_theme,
   
   priv->search_path_len++;
 
-  g_print ("search_path_len 3 %d\n", priv->search_path_len);
-
   priv->search_path = g_renew (gchar *, priv->search_path, priv->search_path_len);
   priv->search_path[priv->search_path_len-1] = g_strdup (path);
 
@@ -887,7 +884,6 @@ insert_theme (GtkIconTheme *icon_theme, const char *theme_name)
   
   priv = icon_theme->priv;
 
-  g_print ("insert_theme %d\n", priv->search_path_len);
   for (l = priv->themes; l != NULL; l = l->next)
     {
       theme = l->data;
@@ -900,7 +896,7 @@ insert_theme (GtkIconTheme *icon_theme, const char *theme_name)
       path = g_build_filename (priv->search_path[i],
                               theme_name,
                               NULL);
-      dir_mtime = g_new (IconThemeDirMtime, 1);
+      dir_mtime = g_slice_new (IconThemeDirMtime);
       dir_mtime->cache = NULL;
       dir_mtime->dir = path;
       if (g_stat (path, &stat_buf) == 0 && S_ISDIR (stat_buf.st_mode))
@@ -1050,7 +1046,7 @@ load_themes (GtkIconTheme *icon_theme)
     {
       dir = icon_theme->priv->search_path[base];
 
-      dir_mtime = g_new (IconThemeDirMtime, 1);
+      dir_mtime = g_slice_new (IconThemeDirMtime);
       dir_mtime->cache = _gtk_icon_cache_new_for_path (dir);
       dir_mtime->dir = g_strdup (dir);
       if (g_stat (dir, &stat_buf) == 0 && S_ISDIR (stat_buf.st_mode))
@@ -1135,7 +1131,7 @@ load_themes (GtkIconTheme *icon_theme)
   priv->last_stat_time = tv.tv_sec;
 }
 
-static void
+void
 _gtk_icon_theme_ensure_builtin_cache (void)
 {
   static gboolean initialized = FALSE;
@@ -2062,7 +2058,6 @@ load_icon_data (IconThemeDir *dir, const char *path, const char *name)
   char *base_name;
   char **split;
   gsize length;
-  char *dot;
   char *str;
   char *split_point;
   int i;
@@ -2082,9 +2077,7 @@ load_icon_data (IconThemeDir *dir, const char *path, const char *name)
     }
   else
     {
-      base_name = g_strdup (name);
-      dot = strrchr (base_name, '.');
-      *dot = 0;
+      base_name = strip_suffix (name);
       
       data = g_slice_new0 (GtkIconData);
       g_hash_table_replace (dir->icon_data, base_name, data);