run_account_setup_wizard (ModestWindow *win)
{
ModestEasysetupWizardDialog *wizard;
-
+
g_return_if_fail (MODEST_IS_WINDOW(win));
wizard = modest_easysetup_wizard_dialog_new ();
gtk_window_set_transient_for (GTK_WINDOW (wizard), GTK_WINDOW (win));
+
+ /* Don't make this a modal window, because secondary windows will then
+ * be unusable, freezing the UI: */
+ /* gtk_window_set_modal (GTK_WINDOW (wizard), TRUE); */
+
gtk_dialog_run (GTK_DIALOG (wizard));
gtk_widget_destroy (GTK_WIDGET (wizard));
}
"uses the tinymail email framework written by Philip van Hoof"));
gtk_about_dialog_set_authors (GTK_ABOUT_DIALOG(about), authors);
gtk_about_dialog_set_website (GTK_ABOUT_DIALOG(about), "http://modest.garage.maemo.org");
+ gtk_window_set_transient_for (GTK_WINDOW (about), GTK_WINDOW (win));
+ gtk_window_set_modal (GTK_WINDOW (about), TRUE);
gtk_dialog_run (GTK_DIALOG (about));
gtk_widget_destroy(about);
gpointer user_data)
{
modest_do_message_delete (header, win);
-
-/* refilter treemodel to hide marked-as-deleted rows */
-/* if (MODEST_IS_HEADER_VIEW (user_data)) */
-/* modest_header_view_refilter (MODEST_HEADER_VIEW (user_data)); */
}
/** After deleing a message that is currently visible in a window,
/* Remove each header. If it's a view window header_view == NULL */
do_headers_action (win, headers_action_delete, header_view);
+ /* refresh the header view (removing marked-as-deleted)*/
+ modest_header_view_refilter (MODEST_HEADER_VIEW(header_view));
+
if (MODEST_IS_MSG_VIEW_WINDOW (win)) {
modest_ui_actions_refresh_message_window_after_delete (MODEST_MSG_VIEW_WINDOW (win));
} else {
/* Show the list of accounts: */
GtkDialog *account_win = GTK_DIALOG(modest_account_view_window_new ());
+ gtk_window_set_transient_for (GTK_WINDOW (account_win), GTK_WINDOW (win));
+
+ /* Don't make this a modal window, because secondary windows will then
+ * be unusable, freezing the UI: */
+ /* gtk_window_set_modal (GTK_WINDOW (account_win), TRUE); */
modest_maemo_show_dialog_and_forget (GTK_WINDOW (win), account_win);
}
#else
/* Create and register edit window */
/* This is destroyed by TOOD. */
- msg_win = modest_msg_edit_window_new (msg, account_name);
+ msg_win = modest_msg_edit_window_new (msg, account_name, FALSE);
mgr = modest_runtime_get_window_mgr ();
modest_window_mgr_register_window (mgr, msg_win);
run_account_setup_wizard(parent_win);
goto cleanup;
}
- win = modest_msg_edit_window_new (msg, account);
+ win = modest_msg_edit_window_new (msg, account, TRUE);
+
} else {
gchar *uid = modest_tny_folder_get_header_unique_id (header);
switch (rf_helper->action) {
case ACTION_REPLY:
new_msg =
- modest_tny_msg_create_reply_msg (msg, from, signature,
+ modest_tny_msg_create_reply_msg (msg, header, from, signature,
rf_helper->reply_forward_type,
MODEST_TNY_MSG_REPLY_MODE_SENDER);
break;
case ACTION_REPLY_TO_ALL:
new_msg =
- modest_tny_msg_create_reply_msg (msg, from, signature, rf_helper->reply_forward_type,
+ modest_tny_msg_create_reply_msg (msg, header, from, signature, rf_helper->reply_forward_type,
MODEST_TNY_MSG_REPLY_MODE_ALL);
edit_type = MODEST_EDIT_TYPE_REPLY;
break;
}
/* Create and register the windows */
- msg_win = modest_msg_edit_window_new (new_msg, rf_helper->account_name);
+ msg_win = modest_msg_edit_window_new (new_msg, rf_helper->account_name, FALSE);
mgr = modest_runtime_get_window_mgr ();
modest_window_mgr_register_window (mgr, msg_win);
if (account)
g_object_unref (G_OBJECT (account));
/* g_object_unref (msg); */
- g_object_unref (header);
free_reply_forward_helper (rf_helper);
}
TnyList *header_list = NULL;
ReplyForwardHelper *rf_helper = NULL;
guint reply_forward_type;
- gboolean continue_download;
+ gboolean continue_download = TRUE;
+ gboolean do_retrieve = TRUE;
g_return_if_fail (MODEST_IS_WINDOW(win));
if (!header_list)
return;
+ reply_forward_type =
+ modest_conf_get_int (modest_runtime_get_conf (),
+ (action == ACTION_FORWARD) ? MODEST_CONF_FORWARD_TYPE : MODEST_CONF_REPLY_TYPE,
+ NULL);
+
/* Check that the messages have been previously downloaded */
- continue_download = download_uncached_messages (header_list, GTK_WINDOW (win), TRUE);
+ do_retrieve = (action == ACTION_FORWARD) || (reply_forward_type != MODEST_TNY_MSG_REPLY_TYPE_CITE);
+ if (do_retrieve)
+ continue_download = download_uncached_messages (header_list, GTK_WINDOW (win), TRUE);
if (!continue_download) {
g_object_unref (header_list);
return;
}
- reply_forward_type =
- modest_conf_get_int (modest_runtime_get_conf (),
- (action == ACTION_FORWARD) ? MODEST_CONF_FORWARD_TYPE : MODEST_CONF_REPLY_TYPE,
- NULL);
/* We assume that we can only select messages of the
same folder and that we reply all of them from the
same account. In fact the interface currently only
if (!msg || !header) {
if (msg)
g_object_unref (msg);
- if (header)
- g_object_unref (header);
g_printerr ("modest: no message found\n");
return;
} else {
reply_forward_cb (NULL, header, msg, rf_helper);
}
+ if (header)
+ g_object_unref (header);
} else {
TnyHeader *header;
TnyIterator *iter;
- /* Retrieve messages */
- mail_op = modest_mail_operation_new_with_error_handling (MODEST_MAIL_OPERATION_TYPE_RECEIVE,
- G_OBJECT(win),
- modest_ui_actions_get_msgs_full_error_handler,
- NULL);
- modest_mail_operation_queue_add (modest_runtime_get_mail_operation_queue (), mail_op);
-
/* Only reply/forward to one message */
iter = tny_list_create_iterator (header_list);
header = TNY_HEADER (tny_iterator_get_current (iter));
g_object_unref (iter);
if (header) {
- modest_mail_operation_get_msg (mail_op,
- header,
- reply_forward_cb,
- rf_helper);
+ /* Retrieve messages */
+ if (do_retrieve) {
+ mail_op = modest_mail_operation_new_with_error_handling (
+ MODEST_MAIL_OPERATION_TYPE_RECEIVE,
+ G_OBJECT(win),
+ modest_ui_actions_get_msgs_full_error_handler,
+ NULL);
+ modest_mail_operation_queue_add (
+ modest_runtime_get_mail_operation_queue (), mail_op);
+
+ modest_mail_operation_get_msg (mail_op,
+ header,
+ reply_forward_cb,
+ rf_helper);
+ /* Clean */
+ g_object_unref(mail_op);
+ } else {
+ /* we put a ref here to prevent double unref as the reply
+ * forward callback unrefs the header at its end */
+ reply_forward_cb (NULL, header, NULL, rf_helper);
+ }
-/* modest_mail_operation_get_msgs_full (mail_op, */
-/* header_list, */
-/* reply_forward_cb, */
-/* rf_helper, */
-/* free_reply_forward_helper); */
g_object_unref (header);
}
- /* Clean */
- g_object_unref(mail_op);
}
/* Free */
g_return_if_fail (MODEST_IS_MAIN_WINDOW(main_window));
g_return_if_fail (MODEST_IS_HEADER_VIEW (header_view));
+ /* in the case the folder is empty, show the empty folder message and focus
+ * folder view */
+ if (!header && gtk_widget_is_focus (GTK_WIDGET (header_view))) {
+ if (modest_header_view_is_empty (header_view)) {
+ TnyFolder *folder = modest_header_view_get_folder (header_view);
+ GtkWidget *folder_view =
+ modest_main_window_get_child_widget (main_window,
+ MODEST_WIDGET_TYPE_FOLDER_VIEW);
+ if (folder != NULL)
+ modest_folder_view_select_folder (MODEST_FOLDER_VIEW (folder_view), folder, FALSE);
+ gtk_widget_grab_focus (GTK_WIDGET (folder_view));
+ return;
+ }
+ }
/* If no header has been selected then exit */
if (!header)
return;
gtk_window_set_default_size (GTK_WINDOW(dialog), 300, 300);
if (gtk_dialog_run (GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) {
-// modest_platform_connect_and_wait ();
+ /* TODO: Comment about why is this commented out: */
+ /* modest_platform_connect_and_wait (); */
}
}
gtk_widget_destroy (dialog);
account_name = modest_account_mgr_get_default_account (account_mgr);
if (!account_name) {
- g_printerr ("modest: no account found\n");
+ /* Run account setup wizard */
+ run_account_setup_wizard(MODEST_WINDOW(edit_window));
return;
}
(modest_runtime_get_account_store(),
account_name));
if (!transport_account) {
- g_printerr ("modest: no transport account found for '%s'\n", account_name);
- g_free (account_name);
- modest_msg_edit_window_free_msg_data (edit_window, data);
+ /* Run account setup wizard */
+ run_account_setup_wizard(MODEST_WINDOW(edit_window));
return;
}
ModestWindow *window)
{
GtkWidget *focused_widget;
+ GtkClipboard *clipboard;
+ clipboard = gtk_clipboard_get (GDK_SELECTION_CLIPBOARD);
focused_widget = gtk_window_get_focus (GTK_WINDOW (window));
if (GTK_IS_EDITABLE (focused_widget)) {
gtk_editable_cut_clipboard (GTK_EDITABLE(focused_widget));
+ gtk_clipboard_set_can_store (clipboard, NULL, 0);
+ gtk_clipboard_store (clipboard);
} else if (GTK_IS_TEXT_VIEW (focused_widget)) {
GtkTextBuffer *buffer;
- GtkClipboard *clipboard;
- clipboard = gtk_clipboard_get (GDK_SELECTION_CLIPBOARD);
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);
} else if (MODEST_IS_HEADER_VIEW (focused_widget)) {
modest_header_view_cut_selection (MODEST_HEADER_VIEW (focused_widget));
} else if (MODEST_IS_FOLDER_VIEW (focused_widget)) {
if (GTK_IS_LABEL (focused_widget)) {
gtk_clipboard_set_text (clipboard, gtk_label_get_text (GTK_LABEL (focused_widget)), -1);
+ gtk_clipboard_set_can_store (clipboard, NULL, 0);
+ gtk_clipboard_store (clipboard);
} else if (GTK_IS_EDITABLE (focused_widget)) {
gtk_editable_copy_clipboard (GTK_EDITABLE(focused_widget));
+ gtk_clipboard_set_can_store (clipboard, NULL, 0);
+ gtk_clipboard_store (clipboard);
} else if (GTK_IS_HTML (focused_widget)) {
gtk_html_copy (GTK_HTML (focused_widget));
+ gtk_clipboard_set_can_store (clipboard, NULL, 0);
+ gtk_clipboard_store (clipboard);
} 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);
} else if (MODEST_IS_HEADER_VIEW (focused_widget)) {
TnyList *header_list = modest_header_view_get_selected_headers (MODEST_HEADER_VIEW (focused_widget));
TnyIterator *iter = tny_list_create_iterator (header_list);
dialog = modest_details_dialog_new_with_header (GTK_WINDOW (window), header);
/* Run dialog */
+ gtk_window_set_modal (GTK_WINDOW (dialog), TRUE);
gtk_widget_show_all (dialog);
gtk_dialog_run (GTK_DIALOG (dialog));
dialog = modest_details_dialog_new_with_folder (window, folder);
/* Run dialog */
+ gtk_window_set_modal (GTK_WINDOW (dialog), TRUE);
gtk_widget_show_all (dialog);
gtk_dialog_run (GTK_DIALOG (dialog));
/* Create and run the dialog */
dialog = create_move_to_dialog (GTK_WINDOW (win), folder_view, &tree_view);
modest_folder_view_select_first_inbox_or_local (MODEST_FOLDER_VIEW (tree_view));
+ gtk_window_set_modal (GTK_WINDOW (dialog), TRUE);
result = gtk_dialog_run (GTK_DIALOG(dialog));
g_object_ref (tree_view);
gtk_widget_destroy (dialog);
dialog = modest_platform_get_global_settings_dialog ();
gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (win));
+ gtk_window_set_modal (GTK_WINDOW (dialog), TRUE);
gtk_widget_show_all (dialog);
gtk_dialog_run (GTK_DIALOG (dialog));