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);
}
if (!MODEST_IS_MAIN_WINDOW(parent_window) || canceled || (err!=NULL)) {
g_object_unref (G_OBJECT (info->folder));
g_free (info);
+ return;
}
folder_view = modest_main_window_get_child_widget (
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));
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)) {
} 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));
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)
}
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:
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));
}
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
}
typedef struct {
- TnyAccount *dst_account;
- ModestConnectedPerformer callback;
- gpointer data;
-} DoubleConnectionInfo;
-
-static void
-src_account_connect_performer (gboolean canceled,
- GError *err,
- GtkWindow *parent_window,
- TnyAccount *src_account,
- gpointer user_data)
-{
- DoubleConnectionInfo *info = (DoubleConnectionInfo *) user_data;
-
- if (canceled || err) {
- /* If there was any error call the user callback */
- info->callback (canceled, err, parent_window, src_account, info->data);
- } else {
- /* Connect the destination account */
- modest_platform_connect_if_remote_and_perform (parent_window, TRUE,
- TNY_FOLDER_STORE (info->dst_account),
- info->callback, info->data);
- }
-
- /* Free the info object */
- g_object_unref (info->dst_account);
- g_slice_free (DoubleConnectionInfo, info);
-}
-
-typedef struct {
TnyFolder *src_folder;
TnyFolderStore *dst_folder;
gboolean delete_original;
g_free (user_data);
}
+static TnyAccount *
+get_account_from_folder_store (TnyFolderStore *folder_store)
+{
+ if (TNY_IS_ACCOUNT (folder_store))
+ return g_object_ref (folder_store);
+ else
+ return tny_folder_get_account (TNY_FOLDER (folder_store));
+}
+
/*
* UI handler for the "Move to" action when invoked from the
* ModestMainWindow
/* Allow only to transfer folders to the local root folder */
if (TNY_IS_ACCOUNT (dst_folder) &&
- !MODEST_IS_TNY_LOCAL_FOLDERS_ACCOUNT (dst_folder)) {
+ !MODEST_IS_TNY_LOCAL_FOLDERS_ACCOUNT (dst_folder) &&
+ !modest_tny_account_is_memory_card_account (TNY_ACCOUNT (dst_folder))) {
do_xfer = FALSE;
} else if (!TNY_IS_FOLDER (src_folder)) {
g_warning ("%s: src_folder is not a TnyFolder.\n", __FUNCTION__);
do_xfer = FALSE;
- } /* else if (!online && modest_tny_folder_store_is_remote(src_folder)) {
- guint num_headers = tny_folder_get_all_count(TNY_FOLDER (src_folder));
- TnyAccount *account = tny_folder_get_account (TNY_FOLDER (src_folder));
- if (!connect_to_get_msg(MODEST_WINDOW (win), num_headers, account))
- do_xfer = FALSE;
- g_object_unref (account);
- }*/
+ }
- if (do_xfer) {
+ if (do_xfer) {
MoveFolderInfo *info = g_new0 (MoveFolderInfo, 1);
- info->src_folder = TNY_FOLDER (src_folder);
- info->dst_folder = dst_folder;
+ DoubleConnectionInfo *connect_info = g_slice_new (DoubleConnectionInfo);
+
+ info->src_folder = g_object_ref (src_folder);
+ info->dst_folder = g_object_ref (dst_folder);
info->delete_original = TRUE;
info->folder_view = folder_view;
- g_object_ref (G_OBJECT (info->src_folder));
- g_object_ref (G_OBJECT (info->dst_folder));
- modest_platform_connect_if_remote_and_perform(GTK_WINDOW (win), TRUE,
- TNY_FOLDER_STORE (dst_folder), on_move_folder_cb, info);
+
+ connect_info->callback = on_move_folder_cb;
+ connect_info->dst_account = get_account_from_folder_store (TNY_FOLDER_STORE (dst_folder));
+ connect_info->data = info;
+
+ modest_platform_double_connect_and_perform(GTK_WINDOW (win), TRUE,
+ TNY_FOLDER_STORE (src_folder),
+ connect_info);
}
} else if (gtk_widget_is_focus (GTK_WIDGET(header_view))) {
gboolean do_xfer = TRUE;
g_object_unref(headers);
}
if (do_xfer) /* Transfer messages */ {
- DoubleConnectionInfo *info = g_slice_new (DoubleConnectionInfo);
- info->callback = xfer_messages_from_move_to_cb;
- info->dst_account = tny_folder_get_account (TNY_FOLDER (dst_folder));
- info->data = g_object_ref (dst_folder);
-
- modest_platform_connect_if_remote_and_perform(GTK_WINDOW (win), TRUE,
- TNY_FOLDER_STORE (src_folder),
- src_account_connect_performer,
- info);
+ DoubleConnectionInfo *connect_info = g_slice_new (DoubleConnectionInfo);
+ connect_info->callback = xfer_messages_from_move_to_cb;
+ connect_info->dst_account = tny_folder_get_account (TNY_FOLDER (dst_folder));
+ connect_info->data = g_object_ref (dst_folder);
+
+ modest_platform_double_connect_and_perform(GTK_WINDOW (win), TRUE,
+ TNY_FOLDER_STORE (src_folder),
+ connect_info);
}
}