From a4d6d6091caaedde1971bc2f9b4276da5af49d84 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Feb 26 2009 15:17:27 +0000 Subject: missing patch --- diff --git a/monitor-sizes.patch b/monitor-sizes.patch new file mode 100644 index 0000000..8acf0f1 --- /dev/null +++ b/monitor-sizes.patch @@ -0,0 +1,49 @@ +diff -up gtk+-2.15.4/gdk/x11/gdkscreen-x11.c.monitor-sizes gtk+-2.15.4/gdk/x11/gdkscreen-x11.c +--- gtk+-2.15.4/gdk/x11/gdkscreen-x11.c.monitor-sizes 2009-02-23 17:46:34.738078794 -0500 ++++ gtk+-2.15.4/gdk/x11/gdkscreen-x11.c 2009-02-23 17:47:01.228887089 -0500 +@@ -663,6 +663,31 @@ init_fake_xinerama (GdkScreen *screen) + return FALSE; + } + ++static int ++monitor_compare_function (GdkX11Monitor *monitor1, ++ GdkX11Monitor *monitor2) ++{ ++ /* Sort the leftmost/topmost monitors first. ++ * For "cloned" monitors, sort the bigger ones first ++ * (giving preference to taller monitors over wider ++ * monitors) ++ */ ++ ++ if (monitor1->geometry.x != monitor2->geometry.x) ++ return monitor1->geometry.x - monitor2->geometry.x; ++ ++ if (monitor1->geometry.y != monitor2->geometry.y) ++ return monitor1->geometry.y - monitor2->geometry.y; ++ ++ if (monitor1->geometry.height != monitor2->geometry.height) ++ return - (monitor1->geometry.height - monitor2->geometry.height); ++ ++ if (monitor1->geometry.width != monitor2->geometry.width) ++ return - (monitor1->geometry.width - monitor2->geometry.width); ++ ++ return 0; ++} ++ + static gboolean + init_randr13 (GdkScreen *screen) + { +@@ -732,10 +757,12 @@ init_randr13 (GdkScreen *screen) + return FALSE; + } + ++ g_array_sort (monitors, ++ (GCompareFunc) monitor_compare_function); + screen_x11->n_monitors = monitors->len; + screen_x11->monitors = (GdkX11Monitor *)g_array_free (monitors, FALSE); + +- return TRUE; ++ return screen_x11->n_monitors > 0; + #endif + + return FALSE;