GList *selected;
GtkWidget *rubber_start;
GtkWidget *press_att_view;
+ GtkWidget *previous_selection;
ModestAttachmentsViewStyle style;
};
priv->selected = NULL;
gtk_container_foreach (GTK_CONTAINER (priv->box), (GtkCallback) gtk_widget_destroy, NULL);
-
- if (priv->msg == NULL) {
+
+ if (priv->msg == NULL)
return;
- }
part_to_check = modest_tny_msg_get_attachments_parent (TNY_MSG (msg));
-
msg_content_type = modest_tny_mime_part_get_content_type (TNY_MIME_PART (part_to_check));
is_alternate = !strcasecmp (msg_content_type, "multipart/alternative");
g_free (msg_content_type);
header_content_type = modest_tny_mime_part_get_headers_content_type (TNY_MIME_PART (part_to_check));
-
+
if ((header_content_type != NULL) &&
!strstr (header_content_type, "application/")) {
application_multipart = TRUE;
g_object_unref (iter);
g_object_unref (parts);
g_object_unref (part_to_check);
-
gtk_widget_queue_draw (GTK_WIDGET (attachments_view));
if (att_view != NULL) {
if (priv->style == MODEST_ATTACHMENTS_VIEW_STYLE_NO_FOCUS) {
unselect_all (MODEST_ATTACHMENTS_VIEW (widget));
- } else if ((priv->style == MODEST_ATTACHMENTS_VIEW_STYLE_LINKS) ||
- (GTK_WIDGET_STATE (att_view) == GTK_STATE_SELECTED && (g_list_length (priv->selected) < 2))) {
+ } else if (priv->style == MODEST_ATTACHMENTS_VIEW_STYLE_LINKS) {
priv->press_att_view = att_view;
set_selected (MODEST_ATTACHMENTS_VIEW (widget), MODEST_ATTACHMENT_VIEW (att_view));
gtk_grab_add (widget);
} else {
+ if (g_list_length (priv->selected) == 1) {
+ priv->previous_selection = GTK_WIDGET (priv->selected->data);
+ } else {
+ priv->previous_selection = NULL;
+ }
TnyMimePart *mime_part = tny_mime_part_view_get_part (TNY_MIME_PART_VIEW (att_view));
/* Do not select purged attachments */
priv->press_att_view = NULL;
} else {
- if (att_view != NULL) {
+ if (priv->style != MODEST_ATTACHMENTS_VIEW_STYLE_NO_FOCUS &&
+ priv->rubber_start == att_view &&
+ priv->previous_selection == att_view) {
+ TnyMimePart *mime_part;
+ mime_part = tny_mime_part_view_get_part (TNY_MIME_PART_VIEW (att_view));
+ g_signal_emit (G_OBJECT (widget), signals[ACTIVATE_SIGNAL], 0, mime_part);
+ g_object_unref (mime_part);
+ } else if (att_view != NULL) {
unselect_all (MODEST_ATTACHMENTS_VIEW (widget));
select_range (MODEST_ATTACHMENTS_VIEW (widget),
MODEST_ATTACHMENT_VIEW (priv->rubber_start),