[gtk+] file system: Add an api to get a GIcon
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] file system: Add an api to get a GIcon
- Date: Fri, 4 Sep 2015 06:11:54 +0000 (UTC)
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]