X-Git-Url: http://git.maemo.org/git/?p=modest;a=blobdiff_plain;f=src%2Fdbus_api%2Fmodest-dbus-callbacks.c;h=9832c3c7a66af967dfe395addb2abdec6438a84f;hp=3432018a663bbefbef9d3abd02f4cde133537758;hb=94bf2a181e8b2644f037246b2fc3a70c865c22e2;hpb=d33107e7927e5f03a6329b27f8cfd013fe62e787 diff --git a/src/dbus_api/modest-dbus-callbacks.c b/src/dbus_api/modest-dbus-callbacks.c index 3432018..9832c3c 100644 --- a/src/dbus_api/modest-dbus-callbacks.c +++ b/src/dbus_api/modest-dbus-callbacks.c @@ -537,8 +537,11 @@ find_msg_async_cb (TnyFolder *folder, } if (msg_view != NULL) { - modest_window_mgr_register_window (win_mgr, msg_view); - gtk_widget_show_all (GTK_WIDGET (msg_view)); + if (!modest_window_mgr_register_window (win_mgr, msg_view, NULL)) { + gtk_widget_destroy (GTK_WIDGET (msg_view)); + } else { + gtk_widget_show_all (GTK_WIDGET (msg_view)); + } } } @@ -732,8 +735,8 @@ on_remove_msgs_finished (ModestMailOperation *mail_op, modest_header_view_refilter (header_view); } -static gboolean -on_idle_delete_message (gpointer user_data) +static gpointer +thread_prepare_delete_message (gpointer userdata) { TnyList *headers = NULL, *tmp_headers = NULL; TnyFolder *folder = NULL; @@ -741,13 +744,13 @@ on_idle_delete_message (gpointer user_data) TnyHeader *header = NULL, *msg_header = NULL; TnyMsg *msg = NULL; TnyAccount *account = NULL; - const char *uri = NULL; + char *uri; gchar *uid = NULL; ModestMailOperation *mail_op = NULL; ModestWindow *main_win = NULL; - uri = (char *) user_data; - + uri = (char *) userdata; + msg = find_message_by_url (uri, &account); if (account) g_object_unref (account); @@ -755,6 +758,7 @@ on_idle_delete_message (gpointer user_data) if (!msg) { g_warning ("%s: Could not find message '%s'", __FUNCTION__, uri); g_idle_add (notify_error_in_dbus_callback, NULL); + g_free (uri); return FALSE; } @@ -766,6 +770,7 @@ on_idle_delete_message (gpointer user_data) g_warning ("%s: Could not find folder (uri:'%s')", __FUNCTION__, uri); g_object_unref (msg); g_idle_add (notify_error_in_dbus_callback, NULL); + g_free (uri); return FALSE; } @@ -808,6 +813,7 @@ on_idle_delete_message (gpointer user_data) if (folder) g_object_unref (folder); g_idle_add (notify_error_in_dbus_callback, NULL); + g_free (uri); return FALSE; } @@ -835,10 +841,24 @@ on_idle_delete_message (gpointer user_data) /* Clean */ if (header) g_object_unref (header); + g_free (uri); return FALSE; } +static gboolean +on_idle_delete_message (gpointer user_data) +{ + const char *uri = NULL; + + uri = (char *) user_data; + + g_thread_create (thread_prepare_delete_message, g_strdup (uri), FALSE, NULL); + + return FALSE; + +} + @@ -1141,6 +1161,11 @@ on_idle_top_application (gpointer user_data) gdk_threads_enter (); /* CHECKED */ +#ifdef MODEST_TOOLKIT_HILDON2 + main_win = modest_window_mgr_get_main_window (modest_runtime_get_window_mgr (), + TRUE); + new_window = TRUE; +#else main_win = modest_window_mgr_get_main_window (modest_runtime_get_window_mgr (), FALSE); @@ -1149,13 +1174,9 @@ on_idle_top_application (gpointer user_data) TRUE); new_window = TRUE; } +#endif if (main_win) { - /* Ideally, we would just use gtk_widget_show(), - * but this widget is not coded correctly to support that: */ - gtk_widget_show_all (GTK_WIDGET (main_win)); - gtk_window_present (GTK_WINDOW (main_win)); - /* If we're showing an already existing window then reselect the INBOX */ if (!new_window) { @@ -1166,6 +1187,13 @@ on_idle_top_application (gpointer user_data) } } +#ifndef MODEST_TOOLKIT_HILDON2 + if (main_win) { + gtk_widget_show_all (GTK_WIDGET (main_win)); + gtk_window_present (GTK_WINDOW (main_win)); + } +#endif + gdk_threads_leave (); /* CHECKED */ return FALSE; /* Do not call this callback again. */