From: Jose Dapena Paz Date: Tue, 1 Dec 2009 12:20:39 +0000 (+0100) Subject: Fix modest_utils_show_dialog_and_forget for gtk and modest shell X-Git-Tag: jdapena-ppa-3.90.4-modest0~173 X-Git-Url: http://git.maemo.org/git/?p=modest;a=commitdiff_plain;h=3faeed1822d68733fd07100ba52cf99abea6d83e Fix modest_utils_show_dialog_and_forget for gtk and modest shell --- diff --git a/src/gtk/modest-gtk-window-mgr.c b/src/gtk/modest-gtk-window-mgr.c index 48e9e70..2ff3a19 100644 --- a/src/gtk/modest-gtk-window-mgr.c +++ b/src/gtk/modest-gtk-window-mgr.c @@ -839,7 +839,7 @@ modest_gtk_window_mgr_set_modal (ModestWindowMgr *self, if (GTK_IS_WINDOW (parent)) { gtk_window_set_transient_for (window, parent); } else { - gtk_window_set_transient_for (window, priv->shell); + gtk_window_set_transient_for (window, GTK_WINDOW (priv->shell)); } gtk_window_set_destroy_with_parent (window, TRUE); } @@ -1025,3 +1025,13 @@ modest_gtk_window_mgr_close_all_but_initial (ModestWindowMgr *self) return TRUE; } + +GtkWidget * +modest_gtk_window_mgr_get_shell (ModestGtkWindowMgr *self) +{ + ModestGtkWindowMgrPrivate *priv; + + priv = MODEST_GTK_WINDOW_MGR_GET_PRIVATE(self); + + return priv->shell; +} diff --git a/src/gtk/modest-gtk-window-mgr.h b/src/gtk/modest-gtk-window-mgr.h index 62afe69..867b38a 100644 --- a/src/gtk/modest-gtk-window-mgr.h +++ b/src/gtk/modest-gtk-window-mgr.h @@ -76,6 +76,8 @@ ModestWindowMgr* modest_gtk_window_mgr_new (void); void modest_gtk_window_mgr_set_account_store (ModestGtkWindowMgr *self, TnyAccountStore *acc_store); +GtkWidget *modest_gtk_window_mgr_get_shell (ModestGtkWindowMgr *self); + G_END_DECLS diff --git a/src/modest-ui-actions.c b/src/modest-ui-actions.c index 0e92ca5..8a35578 100644 --- a/src/modest-ui-actions.c +++ b/src/modest-ui-actions.c @@ -568,7 +568,7 @@ modest_ui_actions_on_accounts (GtkAction *action, /* The accounts dialog must be modal */ modest_window_mgr_set_modal (modest_runtime_get_window_mgr (), GTK_WINDOW (account_win), (GtkWindow *) win); - modest_utils_show_dialog_and_forget (GTK_WINDOW (win), GTK_DIALOG (account_win)); + modest_utils_show_dialog_and_forget (GTK_WIDGET (win), GTK_DIALOG (account_win)); } } diff --git a/src/modest-utils.c b/src/modest-utils.c index 4d169be..14d9795 100644 --- a/src/modest-utils.c +++ b/src/modest-utils.c @@ -53,6 +53,9 @@ #include "modest-widget-memory.h" #include "widgets/modest-sort-criterium-view.h" #include "widgets/modest-header-window.h" +#ifdef MODEST_TOOLKIT_GTK +#include +#endif #include GQuark @@ -417,13 +420,26 @@ modest_utils_get_supported_secure_authentication_methods (ModestProtocolType pro } void -modest_utils_show_dialog_and_forget (GtkWindow *parent_window, +modest_utils_show_dialog_and_forget (GtkWidget *parent_window, GtkDialog *dialog) { - g_return_if_fail (GTK_IS_WINDOW(parent_window)); g_return_if_fail (GTK_IS_DIALOG(dialog)); +#ifdef MODEST_TOOLKIT_GTK + if (GTK_IS_WINDOW (parent_window)) { + gtk_window_set_transient_for (GTK_WINDOW (dialog), parent_window); + } else { + ModestWindowMgr *window_mgr; + GtkWidget *shell; + + window_mgr = modest_runtime_get_window_mgr (); + shell = modest_gtk_window_mgr_get_shell (MODEST_GTK_WINDOW_MGR (window_mgr)); + gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (shell)); + } +#else + g_return_if_fail (GTK_IS_WINDOW(parent_window)); gtk_window_set_transient_for (GTK_WINDOW (dialog), parent_window); +#endif /* Destroy the dialog when it is closed: */ g_signal_connect_swapped (dialog, diff --git a/src/modest-utils.h b/src/modest-utils.h index 669d778..b5f87e2 100644 --- a/src/modest-utils.h +++ b/src/modest-utils.h @@ -127,7 +127,7 @@ void modest_utils_show_information_note_in_main_context_and_forget (GtkWindow *p * blocking. Use this when you don't want to use gtk_dialog_run(), which might lead * to hangs. */ -void modest_utils_show_dialog_and_forget (GtkWindow *parent_window, GtkDialog *dialog); +void modest_utils_show_dialog_and_forget (GtkWidget *parent_window, GtkDialog *dialog); /** * modest_toggle_action_set_active_block_notify: