Fix modest_utils_show_dialog_and_forget for gtk and modest shell
authorJose Dapena Paz <jdapena@igalia.com>
Tue, 1 Dec 2009 12:20:39 +0000 (13:20 +0100)
committerJose Dapena Paz <jdapena@igalia.com>
Tue, 1 Dec 2009 12:22:24 +0000 (13:22 +0100)
src/gtk/modest-gtk-window-mgr.c
src/gtk/modest-gtk-window-mgr.h
src/modest-ui-actions.c
src/modest-utils.c
src/modest-utils.h

index 48e9e70..2ff3a19 100644 (file)
@@ -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;
+}
index 62afe69..867b38a 100644 (file)
@@ -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
 
index 0e92ca5..8a35578 100644 (file)
@@ -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));
        }
 }
 
index 4d169be..14d9795 100644 (file)
@@ -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 <modest-gtk-window-mgr.h>
+#endif
 #include <langinfo.h>
 
 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,
index 669d778..b5f87e2 100644 (file)
@@ -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: