aboutsummaryrefslogtreecommitdiffstats
path: root/widgets/misc
diff options
context:
space:
mode:
Diffstat (limited to 'widgets/misc')
-rw-r--r--widgets/misc/e-attachment-tree-view.c7
-rw-r--r--widgets/misc/e-attachment-view.c19
2 files changed, 19 insertions, 7 deletions
diff --git a/widgets/misc/e-attachment-tree-view.c b/widgets/misc/e-attachment-tree-view.c
index 42876e4bfb..5729a68069 100644
--- a/widgets/misc/e-attachment-tree-view.c
+++ b/widgets/misc/e-attachment-tree-view.c
@@ -100,15 +100,18 @@ attachment_tree_view_render_size (GtkTreeViewColumn *column,
GtkTreeModel *model,
GtkTreeIter *iter)
{
- gchar *display_size;
+ gchar *display_size = NULL;
gint column_id;
guint64 size;
column_id = E_ATTACHMENT_STORE_COLUMN_SIZE;
gtk_tree_model_get (model, iter, column_id, &size, -1);
- display_size = g_format_size_for_display ((goffset) size);
+ if (size > 0)
+ display_size = g_format_size_for_display ((goffset) size);
+
g_object_set (renderer, "text", display_size, NULL);
+
g_free (display_size);
}
diff --git a/widgets/misc/e-attachment-view.c b/widgets/misc/e-attachment-view.c
index 9725604865..5a5db57e07 100644
--- a/widgets/misc/e-attachment-view.c
+++ b/widgets/misc/e-attachment-view.c
@@ -826,7 +826,6 @@ e_attachment_view_init (EAttachmentView *view)
attachment_view_init_handlers (view);
e_attachment_view_drag_source_set (view);
- e_attachment_view_drag_dest_set (view);
/* Connect built-in drag and drop handlers. */
@@ -927,6 +926,11 @@ e_attachment_view_set_editable (EAttachmentView *view,
priv = e_attachment_view_get_private (view);
priv->editable = editable;
+ if (editable)
+ e_attachment_view_drag_dest_set (view);
+ else
+ e_attachment_view_drag_dest_unset (view);
+
g_object_notify (G_OBJECT (view), "editable");
}
@@ -1315,6 +1319,11 @@ e_attachment_view_drag_begin (EAttachmentView *view,
{
g_return_if_fail (E_IS_ATTACHMENT_VIEW (view));
g_return_if_fail (GDK_IS_DRAG_CONTEXT (context));
+
+ /* Prevent the user from dragging and dropping to
+ * the same attachment view, which would duplicate
+ * the attachment. */
+ e_attachment_view_drag_dest_unset (view);
}
void
@@ -1323,6 +1332,10 @@ e_attachment_view_drag_end (EAttachmentView *view,
{
g_return_if_fail (E_IS_ATTACHMENT_VIEW (view));
g_return_if_fail (GDK_IS_DRAG_CONTEXT (context));
+
+ /* Restore the previous drag destination state. */
+ if (e_attachment_view_get_editable (view))
+ e_attachment_view_drag_dest_set (view);
}
static void
@@ -1465,10 +1478,6 @@ e_attachment_view_drag_drop (EAttachmentView *view,
g_return_val_if_fail (E_IS_ATTACHMENT_VIEW (view), FALSE);
g_return_val_if_fail (GDK_IS_DRAG_CONTEXT (context), FALSE);
- /* Disallow drops if we're not editable. */
- if (!e_attachment_view_get_editable (view))
- return FALSE;
-
return TRUE;
}