From: Jose Dapena Paz Date: Wed, 13 May 2009 18:28:31 +0000 (+0200) Subject: Activate attachments on release, and show usual "light/unlight" on clicked item. X-Git-Tag: 3.0.17-rc5~9 X-Git-Url: http://git.maemo.org/git/?p=modest;a=commitdiff_plain;h=56b31bd5bbfebddb1b8d6665e7f142ef4dddd610 Activate attachments on release, and show usual "light/unlight" on clicked item. * src/widgets/modest-attachments-view.c: Now, on links style, we do the typical press release cycle for activation (cancelation if we move pointer off, light on press, etc). --- diff --git a/src/widgets/modest-attachments-view.c b/src/widgets/modest-attachments-view.c index a269d4f..ac8d05b 100644 --- a/src/widgets/modest-attachments-view.c +++ b/src/widgets/modest-attachments-view.c @@ -59,6 +59,7 @@ struct _ModestAttachmentsViewPrivate GtkWidget *box; GList *selected; GtkWidget *rubber_start; + GtkWidget *press_att_view; ModestAttachmentsViewStyle style; }; @@ -310,6 +311,7 @@ modest_attachments_view_instance_init (GTypeInstance *instance, gpointer g_class priv->msg = NULL; priv->box = gtk_vbox_new (FALSE, 0); priv->rubber_start = NULL; + priv->press_att_view = NULL; priv->selected = NULL; priv->style = MODEST_ATTACHMENTS_VIEW_STYLE_SELECTABLE; @@ -431,11 +433,9 @@ button_press_event (GtkWidget *widget, 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))) { - TnyMimePart *mime_part = tny_mime_part_view_get_part (TNY_MIME_PART_VIEW (att_view)); - if (TNY_IS_MIME_PART (mime_part)) { - g_signal_emit (G_OBJECT (widget), signals[ACTIVATE_SIGNAL], 0, mime_part); - g_object_unref (mime_part); - } + priv->press_att_view = att_view; + set_selected (MODEST_ATTACHMENTS_VIEW (widget), MODEST_ATTACHMENT_VIEW (att_view)); + gtk_grab_add (widget); } else { TnyMimePart *mime_part = tny_mime_part_view_get_part (TNY_MIME_PART_VIEW (att_view)); @@ -465,13 +465,25 @@ button_release_event (GtkWidget *widget, att_view = get_att_view_at_coords (MODEST_ATTACHMENTS_VIEW (widget), (gint) event->x_root, (gint) event->y_root); - if (att_view != NULL) { + if (priv->style == MODEST_ATTACHMENTS_VIEW_STYLE_LINKS) { unselect_all (MODEST_ATTACHMENTS_VIEW (widget)); - select_range (MODEST_ATTACHMENTS_VIEW (widget), - MODEST_ATTACHMENT_VIEW (priv->rubber_start), - MODEST_ATTACHMENT_VIEW (att_view)); + if (att_view == priv->press_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); + } + priv->press_att_view = NULL; + } else { + + if (att_view != NULL) { + unselect_all (MODEST_ATTACHMENTS_VIEW (widget)); + select_range (MODEST_ATTACHMENTS_VIEW (widget), + MODEST_ATTACHMENT_VIEW (priv->rubber_start), + MODEST_ATTACHMENT_VIEW (att_view)); + } + priv->rubber_start = NULL; } - priv->rubber_start = NULL; gtk_grab_remove (widget); } return TRUE; @@ -488,12 +500,20 @@ motion_notify_event (GtkWidget *widget, att_view = get_att_view_at_coords (MODEST_ATTACHMENTS_VIEW (widget), (gint) event->x_root, (gint) event->y_root); + if (priv->style == MODEST_ATTACHMENTS_VIEW_STYLE_LINKS) { + if (att_view == priv->press_att_view) { + set_selected (MODEST_ATTACHMENTS_VIEW (widget), MODEST_ATTACHMENT_VIEW (att_view)); + } else { + unselect_all (MODEST_ATTACHMENTS_VIEW (widget)); + } + } else { - if (att_view != NULL) { - unselect_all (MODEST_ATTACHMENTS_VIEW (widget)); - select_range (MODEST_ATTACHMENTS_VIEW (widget), - MODEST_ATTACHMENT_VIEW (priv->rubber_start), - MODEST_ATTACHMENT_VIEW (att_view)); + if (att_view != NULL) { + unselect_all (MODEST_ATTACHMENTS_VIEW (widget)); + select_range (MODEST_ATTACHMENTS_VIEW (widget), + MODEST_ATTACHMENT_VIEW (priv->rubber_start), + MODEST_ATTACHMENT_VIEW (att_view)); + } } } return TRUE;