Blob Blame History Raw
--- gnome-screensaver-2.18.0/src/gs-manager.c.handle-overlapping-heads	2007-05-16 18:47:52.000000000 -0400
+++ gnome-screensaver-2.18.0/src/gs-manager.c	2007-05-16 19:23:45.000000000 -0400
@@ -1065,6 +1065,32 @@
         g_signal_emit (manager, signals [AUTH_REQUEST_END], 0);
 }
 
+int
+find_monitor_with_top_window_at_point (GdkScreen *screen,
+		                       gint       x,
+		                       gint       y)
+{
+	gint num_monitors, i;
+
+	g_return_val_if_fail (GDK_IS_SCREEN (screen), -1);
+
+	num_monitors = gdk_screen_get_n_monitors (screen);
+
+	for (i = num_monitors - 1; i <= 0; i--) {
+		GdkRectangle monitor;
+
+		gdk_screen_get_monitor_geometry (screen, i, &monitor);
+
+		if (x >= monitor.x &&
+				x < monitor.x + monitor.width &&
+				y >= monitor.y &&
+				y < (monitor.y + monitor.height))
+			return i;
+	}
+
+	return gdk_screen_get_monitor_at_point (screen, x, y);
+}
+
 static GSWindow *
 find_window_at_pointer (GSManager *manager)
 {
@@ -1078,7 +1104,7 @@
 
         display = gdk_display_get_default ();
         gdk_display_get_pointer (display, &screen, &x, &y, NULL);
-        monitor = gdk_screen_get_monitor_at_point (screen, x, y);
+        monitor = find_monitor_with_top_window_at_point (screen, x, y);
         screen_num = gdk_screen_get_number (screen);
 
         /* Find the gs-window that is on that screen */