From d63e7f81545fd03064797f4cd1ca683130b6b53b Mon Sep 17 00:00:00 2001 From: Jose Dapena Paz Date: Sat, 12 Jan 2008 19:24:00 +0000 Subject: [PATCH] * src/widgets/modest-attachments-view.[ch]: * Implemented new signal that notifies everytime the selection is changed. * src/maemo/modest-msg-edit-window.c: * Execute dimming rules on attachments selection change. This way we properly update remove attachment status. * src/modest-ui-dimming-rules.c: * Now we only dim editor remove attachments action if there are no selected attachments (fixes NB#78873). pmo-trunk-r4026 --- src/maemo/modest-msg-edit-window.c | 9 +++++++++ src/modest-ui-dimming-rules.c | 2 +- src/widgets/modest-attachments-view.c | 18 ++++++++++++++++++ src/widgets/modest-attachments-view.h | 1 + 4 files changed, 29 insertions(+), 1 deletion(-) diff --git a/src/maemo/modest-msg-edit-window.c b/src/maemo/modest-msg-edit-window.c index 7af8f5d..cf25101 100644 --- a/src/maemo/modest-msg-edit-window.c +++ b/src/maemo/modest-msg-edit-window.c @@ -96,6 +96,7 @@ static void modest_msg_edit_window_finalize (GObject *obj); static gboolean msg_body_focus (GtkWidget *focus, GdkEventFocus *event, gpointer userdata); static void body_changed (GtkTextBuffer *buffer, ModestMsgEditWindow *editor); +static void attachments_selection_changed (ModestAttachmentsView *buffer, ModestMsgEditWindow *editor); static void recpt_field_changed (GtkTextBuffer *buffer, ModestMsgEditWindow *editor); static void text_buffer_refresh_attributes (WPTextBuffer *buffer, ModestMsgEditWindow *window); @@ -516,6 +517,8 @@ connect_signals (ModestMsgEditWindow *obj) G_CALLBACK (text_buffer_can_redo), obj); g_signal_connect (G_OBJECT (priv->text_buffer), "changed", G_CALLBACK (body_changed), obj); + g_signal_connect (G_OBJECT (priv->attachments_view), "selection-changed", + G_CALLBACK (attachments_selection_changed), obj); g_signal_connect (G_OBJECT (obj), "window-state-event", G_CALLBACK (modest_msg_edit_window_window_state_event), NULL); @@ -2767,6 +2770,12 @@ body_changed (GtkTextBuffer *buffer, ModestMsgEditWindow *editor) modest_ui_actions_check_window_dimming_rules (MODEST_WINDOW (editor)); } +static void +attachments_selection_changed (ModestAttachmentsView *atts_view, ModestMsgEditWindow *window) +{ + modest_ui_actions_check_window_dimming_rules (MODEST_WINDOW (window)); +} + void modest_msg_edit_window_reset_modified (ModestMsgEditWindow *editor) { diff --git a/src/modest-ui-dimming-rules.c b/src/modest-ui-dimming-rules.c index b637877..88e8fc5 100644 --- a/src/modest-ui-dimming-rules.c +++ b/src/modest-ui-dimming-rules.c @@ -1549,7 +1549,7 @@ modest_ui_dimming_rules_on_editor_remove_attachment (ModestWindow *win, gpointer n_att_selected = tny_list_get_length (selected_attachments); g_object_unref (selected_attachments); - dimmed = (n_att_selected != 1); + dimmed = (n_att_selected == 0); } return dimmed; diff --git a/src/widgets/modest-attachments-view.c b/src/widgets/modest-attachments-view.c index a56ceba..392263d 100644 --- a/src/widgets/modest-attachments-view.c +++ b/src/widgets/modest-attachments-view.c @@ -46,6 +46,7 @@ static GObjectClass *parent_class = NULL; /* signals */ enum { ACTIVATE_SIGNAL, + SELECTION_CHANGED_SIGNAL, LAST_SIGNAL }; @@ -320,6 +321,15 @@ modest_attachments_view_class_init (ModestAttachmentsViewClass *klass) NULL, NULL, g_cclosure_marshal_VOID__OBJECT, G_TYPE_NONE, 1, G_TYPE_OBJECT); + + signals[SELECTION_CHANGED_SIGNAL] = + g_signal_new ("selection-changed", + G_TYPE_FROM_CLASS (object_class), + G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION, + G_STRUCT_OFFSET (ModestAttachmentsViewClass, selection_changed), + NULL, NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, 0); return; } @@ -613,6 +623,8 @@ set_selected (ModestAttachmentsView *atts_view, ModestAttachmentView *att_view) g_object_unref (part); own_clipboard (atts_view); + + g_signal_emit (G_OBJECT (atts_view), signals[SELECTION_CHANGED_SIGNAL], 0); } static void @@ -658,6 +670,8 @@ select_range (ModestAttachmentsView *atts_view, ModestAttachmentView *att1, Mode g_list_free (children); own_clipboard (atts_view); + + g_signal_emit (G_OBJECT (atts_view), signals[SELECTION_CHANGED_SIGNAL], 0); } static void clipboard_get (GtkClipboard *clipboard, GtkSelectionData *selection_data, @@ -756,6 +770,8 @@ modest_attachments_view_select_all (ModestAttachmentsView *atts_view) g_list_free (children); own_clipboard (atts_view); + + g_signal_emit (G_OBJECT (atts_view), signals[SELECTION_CHANGED_SIGNAL], 0); } gboolean @@ -794,6 +810,8 @@ focus_out_event (GtkWidget *widget, GdkEventFocus *event, ModestAttachmentsView if (!gtk_widget_is_focus (widget)) unselect_all (atts_view); + g_signal_emit (G_OBJECT (atts_view), signals[SELECTION_CHANGED_SIGNAL], 0); + return FALSE; } diff --git a/src/widgets/modest-attachments-view.h b/src/widgets/modest-attachments-view.h index 89837ad..160efd8 100644 --- a/src/widgets/modest-attachments-view.h +++ b/src/widgets/modest-attachments-view.h @@ -60,6 +60,7 @@ struct _ModestAttachmentsViewClass GtkEventBoxClass parent_class; void (*activate) (ModestAttachmentsView *attachments_view, TnyMimePart *mime_part); + void (*selection_changed) (ModestAttachmentsView *attachments_view); }; GType modest_attachments_view_get_type (void); -- 1.7.9.5