diff options
Diffstat (limited to 'widgets/misc/e-attachment.c')
-rw-r--r-- | widgets/misc/e-attachment.c | 37 |
1 files changed, 36 insertions, 1 deletions
diff --git a/widgets/misc/e-attachment.c b/widgets/misc/e-attachment.c index ba4e4004b3..1872de6b77 100644 --- a/widgets/misc/e-attachment.c +++ b/widgets/misc/e-attachment.c @@ -56,6 +56,7 @@ struct _EAttachmentPrivate { GFile *file; + GIcon *icon; GFileInfo *file_info; GCancellable *cancellable; CamelMimePart *mime_part; @@ -85,6 +86,7 @@ enum { PROP_ENCRYPTED, PROP_FILE, PROP_FILE_INFO, + PROP_ICON, PROP_LOADING, PROP_MIME_PART, PROP_PERCENT, @@ -357,7 +359,11 @@ attachment_update_icon_column (EAttachment *attachment) E_ATTACHMENT_STORE_COLUMN_ICON, icon, -1); - g_object_unref (icon); + /* Cache the icon to reuse for things like drag-n-drop. */ + if (attachment->priv->icon != NULL) + g_object_unref (attachment->priv->icon); + attachment->priv->icon = icon; + g_object_notify (G_OBJECT (attachment), "icon"); } static void @@ -601,6 +607,12 @@ attachment_get_property (GObject *object, E_ATTACHMENT (object))); return; + case PROP_ICON: + g_value_set_object ( + value, e_attachment_get_icon ( + E_ATTACHMENT (object))); + return; + case PROP_SHOWN: g_value_set_boolean ( value, e_attachment_get_shown ( @@ -659,6 +671,11 @@ attachment_dispose (GObject *object) priv->file = NULL; } + if (priv->icon != NULL) { + g_object_unref (priv->icon); + priv->icon = NULL; + } + if (priv->file_info != NULL) { g_object_unref (priv->file_info); priv->file_info = NULL; @@ -773,6 +790,16 @@ attachment_class_init (EAttachmentClass *class) g_object_class_install_property ( object_class, + PROP_ICON, + g_param_spec_object ( + "icon", + "Icon", + NULL, + G_TYPE_ICON, + G_PARAM_READABLE)); + + g_object_class_install_property ( + object_class, PROP_LOADING, g_param_spec_boolean ( "loading", @@ -1178,6 +1205,14 @@ e_attachment_get_file_info (EAttachment *attachment) return attachment->priv->file_info; } +GIcon * +e_attachment_get_icon (EAttachment *attachment) +{ + g_return_val_if_fail (E_IS_ATTACHMENT (attachment), NULL); + + return attachment->priv->icon; +} + gboolean e_attachment_get_loading (EAttachment *attachment) { |