From: Vivek Sekar Date: Mon, 4 Aug 2008 13:47:43 +0000 (+0000) Subject: Merged fix for bugs 87039, 87093 from trunk X-Git-Url: http://vcs.maemo.org/git/?a=commitdiff_plain;h=d54fe0da0e6628147d754aed9806d6ff920551e9;p=modest Merged fix for bugs 87039, 87093 from trunk pmo-diablo-r5255 --- diff --git a/src/maemo/modest-main-window.c b/src/maemo/modest-main-window.c index 4bfc990..dd7719a 100644 --- a/src/maemo/modest-main-window.c +++ b/src/maemo/modest-main-window.c @@ -1370,7 +1370,9 @@ modest_main_window_set_style (ModestMainWindow *self, ModestWindowPrivate *parent_priv; GtkAction *action; gboolean active; - + GtkTreeSelection *sel; + GList *rows, *list; + g_return_if_fail (MODEST_IS_MAIN_WINDOW (self)); priv = MODEST_MAIN_WINDOW_GET_PRIVATE(self); @@ -1392,6 +1394,11 @@ modest_main_window_set_style (ModestMainWindow *self, g_signal_handlers_unblock_by_func (action, modest_ui_actions_toggle_folders_view, self); } + /* We need to store the selection because it's lost when the + widget is reparented */ + sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (priv->header_view)); + rows = gtk_tree_selection_get_selected_rows (sel, NULL); + priv->style = style; switch (style) { case MODEST_MAIN_WINDOW_STYLE_SIMPLE: @@ -1420,9 +1427,27 @@ modest_main_window_set_style (ModestMainWindow *self, break; default: + g_list_foreach (rows, (GFunc) gtk_tree_path_free, NULL); + g_list_free (rows); g_return_if_reached (); } + /* Reselect the previously selected folders. We disable the + dimming rules execution during that time because there is + no need to work out it again and it could take a lot of + time if all the headers are selected */ + list = rows; + modest_window_disable_dimming (MODEST_WINDOW (self)); + while (list) { + gtk_tree_selection_select_path (sel, (GtkTreePath *) list->data); + list = g_list_next (list); + } + modest_window_enable_dimming (MODEST_WINDOW (self)); + + /* Free */ + g_list_foreach (rows, (GFunc) gtk_tree_path_free, NULL); + g_list_free (rows); + /* Let header view grab the focus if it's being shown */ if (priv->contents_style == MODEST_MAIN_WINDOW_CONTENTS_STYLE_HEADERS) gtk_widget_grab_focus (GTK_WIDGET (priv->header_view)); diff --git a/src/maemo/modest-msg-edit-window.c b/src/maemo/modest-msg-edit-window.c index 09401e8..611f552 100644 --- a/src/maemo/modest-msg-edit-window.c +++ b/src/maemo/modest-msg-edit-window.c @@ -173,8 +173,8 @@ static void text_buffer_mark_set (GtkTextBuffer *buffer, GtkTextIter *iter, GtkTextMark *mark, ModestMsgEditWindow *userdata); -void vadj_changed (GtkAdjustment *adj, - ModestMsgEditWindow *window); +static void vadj_changed (GtkAdjustment *adj, + ModestMsgEditWindow *window); static void DEBUG_BUFFER (WPTextBuffer *buffer) { @@ -627,8 +627,9 @@ copy_clipboard_check (GtkTextView *text_view, } } -void vadj_changed (GtkAdjustment *adj, - ModestMsgEditWindow *window) +static void +vadj_changed (GtkAdjustment *adj, + ModestMsgEditWindow *window) { ModestMsgEditWindowPrivate *priv; @@ -641,6 +642,14 @@ void vadj_changed (GtkAdjustment *adj, } static void +attachment_deleted (ModestAttachmentsView *attachments_view, + gpointer user_data) +{ + modest_msg_edit_window_remove_attachments (MODEST_MSG_EDIT_WINDOW (user_data), + NULL); +} + +static void connect_signals (ModestMsgEditWindow *obj) { ModestMsgEditWindowPrivate *priv; @@ -708,7 +717,7 @@ connect_signals (ModestMsgEditWindow *obj) g_signal_connect (G_OBJECT (priv->msg_body), "cut-clipboard", G_CALLBACK (cut_clipboard_check), NULL); g_signal_connect (G_OBJECT (priv->msg_body), "copy-clipboard", G_CALLBACK (copy_clipboard_check), NULL); - + g_signal_connect (G_OBJECT (priv->attachments_view), "delete", G_CALLBACK (attachment_deleted), obj); } static void diff --git a/src/widgets/modest-attachments-view.c b/src/widgets/modest-attachments-view.c index ab549ab..51a0408 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, + DELETE_SIGNAL, LAST_SIGNAL }; @@ -355,6 +356,15 @@ modest_attachments_view_class_init (ModestAttachmentsViewClass *klass) g_cclosure_marshal_VOID__OBJECT, G_TYPE_NONE, 1, G_TYPE_OBJECT); + signals[DELETE_SIGNAL] = + g_signal_new ("delete", + G_TYPE_FROM_CLASS (object_class), + G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION, + G_STRUCT_OFFSET(ModestAttachmentsViewClass, delete), + NULL, NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, 0); + return; } @@ -611,6 +621,11 @@ key_press_event (GtkWidget *widget, return TRUE; } + if (event->keyval == GDK_BackSpace) { + g_signal_emit (G_OBJECT (widget), signals[DELETE_SIGNAL], 0); + return TRUE; + } + /* Activates selected item */ if (g_list_length (priv->selected) == 1) { ModestAttachmentView *att_view = (ModestAttachmentView *) priv->selected->data; diff --git a/src/widgets/modest-attachments-view.h b/src/widgets/modest-attachments-view.h index 2bad760..6e7872f 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 (*delete) (ModestAttachmentsView *attachments_view, TnyMimePart *mime_part); }; GType modest_attachments_view_get_type (void);