[gtk+] file system: Add an api to get a GIcon



commit 55d68726160a3106ad428266bdad624547e53469
Author: Matthias Clasen <mclasen redhat com>
Date:   Fri Sep 4 02:08:59 2015 -0400

    file system: Add an api to get a GIcon
    
    Using prerendered surfaces is not working well when it comes
    to state changes, so make the GIcon available.

 gtk/gtkfilesystem.c |   31 +++++++++++++++++--------------
 gtk/gtkfilesystem.h |    1 +
 2 files changed, 18 insertions(+), 14 deletions(-)
---
diff --git a/gtk/gtkfilesystem.c b/gtk/gtkfilesystem.c
index 17213e1..4211663 100644
--- a/gtk/gtkfilesystem.c
+++ b/gtk/gtkfilesystem.c
@@ -770,29 +770,32 @@ _gtk_file_system_volume_render_icon (GtkFileSystemVolume  *volume,
   return surface;
 }
 
+GIcon *
+_gtk_file_system_volume_get_symbolic_icon (GtkFileSystemVolume *volume)
+{
+  if (IS_ROOT_VOLUME (volume))
+    return g_themed_icon_new ("drive-harddisk-symbolic");
+  else if (G_IS_DRIVE (volume))
+    return g_drive_get_symbolic_icon (G_DRIVE (volume));
+  else if (G_IS_VOLUME (volume))
+    return g_volume_get_symbolic_icon (G_VOLUME (volume));
+  else if (G_IS_MOUNT (volume))
+    return g_mount_get_symbolic_icon (G_MOUNT (volume));
+  else
+    return NULL;
+}
+
 cairo_surface_t *
 _gtk_file_system_volume_render_symbolic_icon (GtkFileSystemVolume  *volume,
                                              GtkWidget            *widget,
                                              gint                  icon_size,
                                              GError              **error)
 {
-  GIcon *icon = NULL;
+  GIcon *icon;
   cairo_surface_t *surface;
 
-  if (IS_ROOT_VOLUME (volume))
-    icon = g_themed_icon_new ("drive-harddisk-symbolic");
-  else if (G_IS_DRIVE (volume))
-    icon = g_drive_get_symbolic_icon (G_DRIVE (volume));
-  else if (G_IS_VOLUME (volume))
-    icon = g_volume_get_symbolic_icon (G_VOLUME (volume));
-  else if (G_IS_MOUNT (volume))
-    icon = g_mount_get_symbolic_icon (G_MOUNT (volume));
-
-  if (!icon)
-    return NULL;
-
+  icon = _gtk_file_system_volume_get_symbolic_icon (volume);
   surface = get_surface_from_gicon (icon, widget, icon_size, error);
-
   g_object_unref (icon);
 
   return surface;
diff --git a/gtk/gtkfilesystem.h b/gtk/gtkfilesystem.h
index 70bd3ea..be19885 100644
--- a/gtk/gtkfilesystem.h
+++ b/gtk/gtkfilesystem.h
@@ -93,6 +93,7 @@ GtkFileSystemVolume * _gtk_file_system_get_volume_for_file (GtkFileSystem
 gchar *               _gtk_file_system_volume_get_display_name (GtkFileSystemVolume *volume);
 gboolean              _gtk_file_system_volume_is_mounted       (GtkFileSystemVolume *volume);
 GFile *               _gtk_file_system_volume_get_root         (GtkFileSystemVolume *volume);
+GIcon *               _gtk_file_system_volume_get_symbolic_icon (GtkFileSystemVolume *volume);
 cairo_surface_t *     _gtk_file_system_volume_render_icon      (GtkFileSystemVolume  *volume,
                                                                GtkWidget            *widget,
                                                                gint                  icon_size,


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]