diff options
author | Matthias Clasen <mclasen@redhat.com> | 2015-09-04 02:08:59 -0400 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2015-09-04 02:08:59 -0400 |
commit | 55d68726160a3106ad428266bdad624547e53469 (patch) | |
tree | 571ba6fc1d4819ccac9e85de824ef02040d7c725 /gtk/gtkfilesystem.c | |
parent | 1dc4eea096a48b4137a89fc56ba65ca19d6e481f (diff) | |
download | gtk+-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.c | 31 |
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; |