diff -rup ../../gtk+-old/gtk/gtkmountoperation.c ./gtkmountoperation.c
--- ../../gtk+-old/gtk/gtkmountoperation.c	2008-03-13 16:20:30.000000000 +0100
+++ ./gtkmountoperation.c	2008-03-14 20:53:41.000000000 +0100
@@ -75,13 +75,15 @@ G_DEFINE_TYPE (GtkMountOperation, gtk_mo
 enum {
   PROP_0,
   PROP_PARENT,
-  PROP_IS_SHOWING
+  PROP_IS_SHOWING,
+  PROP_SCREEN
 
 };
 
 struct GtkMountOperationPrivate {
   GtkWindow *parent_window;
   GtkDialog *dialog;
+  GdkScreen *screen;
 
   /* for the ask-password dialog */
   GtkWidget *entry_container;
@@ -107,6 +109,9 @@ gtk_mount_operation_finalize (GObject *o
 
   if (priv->parent_window)
     g_object_unref (priv->parent_window);
+
+  if (priv->screen)
+    g_object_unref (priv->screen);
   
   G_OBJECT_CLASS (gtk_mount_operation_parent_class)->finalize (object);
 }
@@ -131,7 +136,7 @@ gtk_mount_operation_class_init (GtkMount
   g_object_class_install_property (object_class,
                                    PROP_PARENT,
                                    g_param_spec_object ("parent",
-                                                        P_("Parent Window"),
+                                                        P_("Parent"),
                                                         P_("The parent window"),
                                                         GTK_TYPE_WINDOW,
                                                         GTK_PARAM_READWRITE |
@@ -140,12 +145,21 @@ gtk_mount_operation_class_init (GtkMount
   g_object_class_install_property (object_class,
                                    PROP_IS_SHOWING,
                                    g_param_spec_boolean ("is-showing",
-                                                         P_("Is showing"),
+                                                         P_("Is Showing"),
                                                          P_("Are we showing a dialog"),
                                                          FALSE,
                                                          GTK_PARAM_READABLE));
 
-   
+
+  g_object_class_install_property (object_class,
+                                   PROP_SCREEN,
+                                   g_param_spec_object ("screen",
+                                                        P_("Screen"),
+                                                        P_("The screen where this window will be displayed."),
+                                                        GTK_TYPE_WINDOW,
+                                                        GTK_PARAM_READWRITE |
+                                                        G_PARAM_CONSTRUCT_ONLY));
+  
 }
 
 
@@ -591,7 +605,12 @@ gtk_mount_operation_ask_password (GMount
     gtk_widget_set_sensitive (priv->entry_container, FALSE);
 
   g_object_notify (G_OBJECT (operation), "is-showing");
+
+  if (priv->parent_window == NULL && priv->screen)
+    gtk_window_set_screen (GTK_WINDOW (dialog), priv->screen);
+
   gtk_widget_show_all (GTK_WIDGET (dialog));
+  
   g_object_ref (operation);
 }
 
@@ -668,6 +687,10 @@ gtk_mount_operation_ask_question (GMount
 
   priv->dialog = GTK_DIALOG (dialog);
   g_object_notify (G_OBJECT (op), "is-showing");
+
+  if (priv->parent_window == NULL && priv->screen)
+    gtk_window_set_screen (GTK_WINDOW (dialog), priv->screen);
+
   gtk_widget_show (dialog);
   g_object_ref (op);
 }
@@ -680,5 +703,34 @@ gtk_mount_operation_is_showing (GtkMount
   return op->priv->dialog;
 }
 
+void
+gtk_mount_operation_set_screen (GtkMountOperation *op,
+                                GdkScreen         *screen)
+{
+  GtkMountOperationPrivate *priv;
+
+  g_return_if_fail (GTK_IS_MOUNT_OPERATION (op));
+  g_return_if_fail (GDK_IS_SCREEN (screen));
+
+  priv = op->priv;
+  if (priv->screen)
+    g_object_unref (priv->screen);
+
+  priv->screen = screen;
+
+  if (priv->dialog)
+    gtk_window_set_screen (GTK_WINDOW (priv->dialog), screen);
+
+  g_object_notify (G_OBJECT (op), "screen");
+}
+
+GdkScreen *
+gtk_mount_operation_get_screen (GtkMountOperation *op)
+{
+  g_return_if_fail (GTK_IS_MOUNT_OPERATION (op));
+
+  return op->priv->screen;
+}
+
 #define __GTK_MOUNT_OPERATION_C__
 #include "gtkaliasdef.c"
diff -rup ../../gtk+-old/gtk/gtkmountoperation.h ./gtkmountoperation.h
--- ../../gtk+-old/gtk/gtkmountoperation.h	2008-03-13 15:38:35.000000000 +0100
+++ ./gtkmountoperation.h	2008-03-14 20:52:37.000000000 +0100
@@ -29,6 +29,7 @@
 
 #include <glib.h>
 #include <gio/gio.h>
+#include <gdk/gdkscreen.h>
 #include <gtk/gtkwindow.h>
 
 G_BEGIN_DECLS
@@ -57,9 +58,13 @@ struct GtkMountOperationClass 
 
 };
 
+
 GType            gtk_mount_operation_get_type   (void);
 GMountOperation *gtk_mount_operation_new        (GtkWindow         *parent);
 gboolean         gtk_mount_operation_is_showing (GtkMountOperation *op);
+void             gtk_mount_operation_set_screen (GtkMountOperation *op,
+                                                 GdkScreen         *screen);
+GdkScreen       *gtk_mount_operation_get_screen (GtkMountOperation *op);
 
 G_END_DECLS
 
diff -rup ../../gtk+-old/gtk/gtk.symbols ./gtk.symbols
--- ../../gtk+-old/gtk/gtk.symbols	2008-03-13 16:26:45.000000000 +0100
+++ ./gtk.symbols	2008-03-14 20:45:52.000000000 +0100
@@ -2409,6 +2409,8 @@ gtk_misc_set_padding
 gtk_mount_operation_get_type G_GNUC_CONST
 gtk_mount_operation_new
 gtk_mount_operation_is_showing
+gtk_mount_operation_set_screen
+gtk_mount_operation_get_screen
 #endif
 #endif
 
