X-Git-Url: http://git.maemo.org/git/?p=modest;a=blobdiff_plain;f=src%2Fmodest-ui-actions.c;h=90248603e06b244f33293a429cb12678be702833;hp=0a08812c77282d51b016e71b8e1de40f0285ef8c;hb=f4c8ac213f2217771e21aade64fbed16d618a77e;hpb=4f568be666ccea0e9f3a3b7dd4f230d516448d52 diff --git a/src/modest-ui-actions.c b/src/modest-ui-actions.c index 0a08812..9024860 100644 --- a/src/modest-ui-actions.c +++ b/src/modest-ui-actions.c @@ -395,11 +395,8 @@ void modest_ui_actions_refresh_message_window_after_delete (ModestMsgViewWindow* win) { /* Close msg view window or select next */ - if (modest_msg_view_window_last_message_selected (win) && - modest_msg_view_window_first_message_selected (win)) { - modest_ui_actions_on_close_window (NULL, MODEST_WINDOW (win)); - } else if (!modest_msg_view_window_select_next_message (win) && - !modest_msg_view_window_select_previous_message (win)) { + if (!modest_msg_view_window_select_next_message (win) && + !modest_msg_view_window_select_previous_message (win)) { gboolean ret_value; g_signal_emit_by_name (G_OBJECT (win), "delete-event", NULL, &ret_value); } @@ -3274,9 +3271,11 @@ modest_ui_actions_on_cut (GtkAction *action, GtkTextBuffer *buffer; buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (focused_widget)); - gtk_text_buffer_cut_clipboard (buffer, clipboard, TRUE); - gtk_clipboard_set_can_store (clipboard, NULL, 0); - gtk_clipboard_store (clipboard); + if (modest_text_utils_buffer_selection_is_valid (buffer)) { + gtk_text_buffer_cut_clipboard (buffer, clipboard, TRUE); + gtk_clipboard_set_can_store (clipboard, NULL, 0); + gtk_clipboard_store (clipboard); + } } else if (MODEST_IS_HEADER_VIEW (focused_widget)) { TnyList *header_list = modest_header_view_get_selected_headers ( MODEST_HEADER_VIEW (focused_widget)); @@ -3316,7 +3315,10 @@ modest_ui_actions_on_copy (GtkAction *action, focused_widget = gtk_window_get_focus (GTK_WINDOW (window)); if (GTK_IS_LABEL (focused_widget)) { - gtk_clipboard_set_text (clipboard, gtk_label_get_text (GTK_LABEL (focused_widget)), -1); + gchar *selection; + selection = modest_text_utils_label_get_selection (GTK_LABEL (focused_widget)); + gtk_clipboard_set_text (clipboard, selection, -1); + g_free (selection); gtk_clipboard_set_can_store (clipboard, NULL, 0); gtk_clipboard_store (clipboard); } else if (GTK_IS_EDITABLE (focused_widget)) { @@ -3330,9 +3332,11 @@ modest_ui_actions_on_copy (GtkAction *action, } else if (GTK_IS_TEXT_VIEW (focused_widget)) { GtkTextBuffer *buffer; buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (focused_widget)); - gtk_text_buffer_copy_clipboard (buffer, clipboard); - gtk_clipboard_set_can_store (clipboard, NULL, 0); - gtk_clipboard_store (clipboard); + if (modest_text_utils_buffer_selection_is_valid (buffer)) { + gtk_text_buffer_copy_clipboard (buffer, clipboard); + gtk_clipboard_set_can_store (clipboard, NULL, 0); + gtk_clipboard_store (clipboard); + } } else if (MODEST_IS_HEADER_VIEW (focused_widget)) { TnyList *header_list = modest_header_view_get_selected_headers ( MODEST_HEADER_VIEW (focused_widget)); @@ -3963,9 +3967,11 @@ on_move_to_dialog_folder_selection_changed (ModestFolderView* self, GtkWidget *folder_view = NULL; ModestTnyFolderRules rules; + g_return_if_fail (MODEST_IS_FOLDER_VIEW(self)); + if (!selected) return; - + /* Get the OK button */ dialog = gtk_widget_get_ancestor (GTK_WIDGET (self), GTK_TYPE_DIALOG); if (!dialog) @@ -4047,25 +4053,36 @@ on_move_to_dialog_folder_selection_changed (ModestFolderView* self, } g_object_unref (moved_folder); } else { - TnyHeader *header = NULL; TnyFolder *src_folder = NULL; /* Moving a message */ if (MODEST_IS_MSG_VIEW_WINDOW (user_data)) { - header = modest_msg_view_window_get_header (MODEST_MSG_VIEW_WINDOW (user_data)); - src_folder = tny_header_get_folder (header); - g_object_unref (header); + + TnyHeader *header = NULL; + header = modest_msg_view_window_get_header + (MODEST_MSG_VIEW_WINDOW (user_data)); + if (!TNY_IS_HEADER(header)) + g_warning ("%s: could not get source header", __FUNCTION__); + else + src_folder = tny_header_get_folder (header); + + if (header) + g_object_unref (header); } else { src_folder = - TNY_FOLDER (modest_folder_view_get_selected (MODEST_FOLDER_VIEW (folder_view))); + TNY_FOLDER (modest_folder_view_get_selected + (MODEST_FOLDER_VIEW (folder_view))); } - /* Do not allow to move the msg to the same folder */ - /* Do not allow to move the msg to an account */ - if ((gpointer) src_folder == (gpointer) folder_store || - TNY_IS_ACCOUNT (folder_store)) - ok_sensitive = FALSE; - g_object_unref (src_folder); + if (TNY_IS_FOLDER(src_folder)) { + /* Do not allow to move the msg to the same folder */ + /* Do not allow to move the msg to an account */ + if ((gpointer) src_folder == (gpointer) folder_store || + TNY_IS_ACCOUNT (folder_store)) + ok_sensitive = FALSE; + g_object_unref (src_folder); + } else + g_warning ("%s: could not get source folder", __FUNCTION__); } end: @@ -4307,11 +4324,8 @@ move_to_cb (ModestMailOperation *mail_op, if (MODEST_IS_MSG_VIEW_WINDOW (object)) { ModestMsgViewWindow *self = MODEST_MSG_VIEW_WINDOW (object); - if (modest_msg_view_window_last_message_selected (self) && - modest_msg_view_window_first_message_selected (self)) { - modest_ui_actions_on_close_window (NULL, MODEST_WINDOW (self)); - } else if (!modest_msg_view_window_select_next_message (self) && - !modest_msg_view_window_select_previous_message (self)) { + if (!modest_msg_view_window_select_next_message (self) && + !modest_msg_view_window_select_previous_message (self)) { /* No more messages to view, so close this window */ modest_ui_actions_on_close_window (NULL, MODEST_WINDOW(self)); } @@ -4342,7 +4356,17 @@ folder_move_to_cb (ModestMailOperation *mail_op, TnyFolder *new_folder, gpointer user_data) { + GtkWidget *folder_view; + GObject *object; + + object = modest_mail_operation_get_source (mail_op); + folder_view = modest_main_window_get_child_widget (MODEST_MAIN_WINDOW(object), + MODEST_MAIN_WINDOW_WIDGET_TYPE_FOLDER_VIEW); + g_object_ref (folder_view); + g_object_unref (object); move_to_cb (mail_op, user_data); + modest_folder_view_select_folder (MODEST_FOLDER_VIEW (folder_view), new_folder, FALSE); + g_object_unref (folder_view); } static void @@ -4470,6 +4494,7 @@ open_msg_for_purge_cb (ModestMailOperation *mail_op, tny_iterator_next (iter); } + g_object_unref (iter); tny_msg_rewrite_cache (msg); } @@ -4477,7 +4502,6 @@ open_msg_for_purge_cb (ModestMailOperation *mail_op, /* This string no longer exists, refer to NB#75415 for more info */ /* modest_platform_information_banner (NULL, NULL, _("mail_ib_attachment_already_purged")); */ } - g_object_unref (iter); modest_window_mgr_unregister_header (mgr, header); @@ -4490,7 +4514,6 @@ modest_ui_actions_on_main_window_remove_attachments (GtkAction *action, { GtkWidget *header_view; TnyList *header_list; - TnyIterator *iter; TnyHeader *header; TnyHeaderFlags flags; ModestWindow *msg_view_window = NULL; @@ -4508,7 +4531,7 @@ modest_ui_actions_on_main_window_remove_attachments (GtkAction *action, } if (tny_list_get_length (header_list) == 1) { - iter = tny_list_create_iterator (header_list); + TnyIterator *iter = tny_list_create_iterator (header_list); header = TNY_HEADER (tny_iterator_get_current (iter)); g_object_unref (iter); } else