summaryrefslogtreecommitdiff
path: root/gtk/gtkfilesystem.c
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2015-09-04 02:08:59 -0400
committerMatthias Clasen <mclasen@redhat.com>2015-09-04 02:08:59 -0400
commit55d68726160a3106ad428266bdad624547e53469 (patch)
tree571ba6fc1d4819ccac9e85de824ef02040d7c725 /gtk/gtkfilesystem.c
parent1dc4eea096a48b4137a89fc56ba65ca19d6e481f (diff)
downloadgtk+-55d68726160a3106ad428266bdad624547e53469.tar.gz
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.
Diffstat (limited to 'gtk/gtkfilesystem.c')
-rw-r--r--gtk/gtkfilesystem.c31
1 files changed, 17 insertions, 14 deletions
diff --git a/gtk/gtkfilesystem.c b/gtk/gtkfilesystem.c
index 17213e15c7..421166325f 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;