Add g_themed_icon_new_with_default_fallbacks
authorAlexander Larsson <alexl@redhat.com>
Wed, 9 Jan 2008 15:20:49 +0000 (15:20 +0000)
committerAlexander Larsson <alexl@src.gnome.org>
Wed, 9 Jan 2008 15:20:49 +0000 (15:20 +0000)
2008-01-09  Alexander Larsson  <alexl@redhat.com>

        * gio.symbols:
        * gthemedicon.[ch]:
        Add g_themed_icon_new_with_default_fallbacks

        * gunixmounts.c:
Use default fallbacks for icons

svn path=/trunk/; revision=6284

gio/ChangeLog
gio/gio.symbols
gio/gthemedicon.c
gio/gthemedicon.h
gio/gunixmounts.c

index 4a67e8d5ced560cda45f204db5955344e7ee113c..48c8ac6a3d21a1ef8f4658199e22073fe0d7ea92 100644 (file)
@@ -1,3 +1,12 @@
+2008-01-09  Alexander Larsson  <alexl@redhat.com>
+
+        * gio.symbols:
+        * gthemedicon.[ch]:
+        Add g_themed_icon_new_with_default_fallbacks
+       
+        * gunixmounts.c:
+       Use default fallbacks for icons
+
 2008-01-09  Alexander Larsson  <alexl@redhat.com>
 
         * gio-marshal.list:
index 20defabf3f17ed35d163455455212c17a6b1328a..5d93b5264aad1861ad8de99961e045d0db7c24ec 100644 (file)
@@ -609,9 +609,10 @@ g_simple_async_report_gerror_in_idle
 #if IN_HEADER(__G_THEMED_ICON_H__)
 #if IN_FILE(__G_THEMED_ICON_C__)
 g_themed_icon_get_type  G_GNUC_CONST
-g_themed_icon_new 
-g_themed_icon_new_from_names 
-g_themed_icon_get_names 
+g_themed_icon_new
+g_themed_icon_new_with_default_fallbacks
+g_themed_icon_new_from_names
+g_themed_icon_get_names
 #endif
 #endif
 
index 909bc6e3a6ddaeea65a1ef981eaf236d9a681092..fdfbd4347a5af6b3c0ed173133f1dfcc4cfc5abc 100644 (file)
@@ -22,6 +22,8 @@
 
 #include <config.h>
 
+#include <string.h>
+
 #include "gthemedicon.h"
 
 #include "gioalias.h"
@@ -141,6 +143,41 @@ g_themed_icon_new_from_names (char **iconnames,
   return G_ICON (themed);
 }
 
+GIcon *
+g_themed_icon_new_with_default_fallbacks (const char *iconname)
+{
+  GThemedIcon *themed;
+  int i, dashes;
+  const char *p;
+  char *dashp;
+  char *last;
+
+  g_return_val_if_fail (iconname != NULL, NULL);
+  
+  themed = g_object_new (G_TYPE_THEMED_ICON, NULL);
+
+  dashes = 0;
+  p = iconname;
+  while (*p)
+    {
+      if (*p == '-')
+       dashes++;
+      p++;
+    }
+
+  themed->names = g_new (char *, dashes + 1 + 1);
+  i = 0;
+  themed->names[i++] = last = g_strdup (iconname);
+
+  while ((dashp = strrchr (last, '-')) != NULL)
+    themed->names[i++] = last = g_strndup (last, dashp - last);
+  
+  themed->names[i++] = NULL;
+
+  return G_ICON (themed);
+}
+
+
 /**
  * g_themed_icon_get_names:
  * @icon: a #GThemedIcon.
index 7c3a204ddd345f206b41ad4f4dc4c9c55f58f05b..f649e2d9e6cd949df29c5232b6a3b7ecf51bcbcf 100644 (file)
@@ -49,6 +49,7 @@ typedef struct _GThemedIconClass   GThemedIconClass;
 GType g_themed_icon_get_type (void) G_GNUC_CONST;
   
 GIcon *g_themed_icon_new (const char *iconname);
+GIcon *g_themed_icon_new_with_default_fallbacks (const char *iconname);
 GIcon *g_themed_icon_new_from_names (char **iconnames, int len);
 
 const char * const *g_themed_icon_get_names (GThemedIcon *icon);
index 4b26c2b9a74ebc4494ffd6ae990c28bbb8ffe084..361c0318b736a1c868c2d98637c2c585ad6de55f 100644 (file)
@@ -1769,7 +1769,7 @@ g_unix_mount_guess_name (GUnixMountEntry *mount_entry)
 GIcon *
 g_unix_mount_guess_icon (GUnixMountEntry *mount_entry)
 {
-  return g_themed_icon_new (type_to_icon (g_unix_mount_guess_type (mount_entry), FALSE));
+  return g_themed_icon_new_with_default_fallbacks (type_to_icon (g_unix_mount_guess_type (mount_entry), FALSE));
 }
 
 /**
@@ -1806,7 +1806,7 @@ g_unix_mount_point_guess_name (GUnixMountPoint *mount_point)
 GIcon *
 g_unix_mount_point_guess_icon (GUnixMountPoint *mount_point)
 {
-  return g_themed_icon_new (type_to_icon (g_unix_mount_point_guess_type (mount_point), TRUE));
+  return g_themed_icon_new_with_default_fallbacks (type_to_icon (g_unix_mount_point_guess_type (mount_point), TRUE));
 }
 
 /**