gtk+ r22386 - in trunk: . gdk/x11



Author: halfline
Date: Fri Feb 20 04:42:33 2009
New Revision: 22386
URL: http://svn.gnome.org/viewvc/gtk+?rev=22386&view=rev

Log:
2009-02-19  Ray Strode  <rstrode redhat com>

	* gdk/x11/gdkscreen-x11.c
	(monitor_compare_function), (init_randr13):
	After using randr to get a list of monitors,
	sort the list such that the biggest output
	of "cloned" outputs comes first in the list.
	This helps apps that don't generally handle
	overlapping outputs to work better in randr
	clone mode.


Modified:
   trunk/ChangeLog
   trunk/gdk/x11/gdkscreen-x11.c

Modified: trunk/gdk/x11/gdkscreen-x11.c
==============================================================================
--- trunk/gdk/x11/gdkscreen-x11.c	(original)
+++ trunk/gdk/x11/gdkscreen-x11.c	Fri Feb 20 04:42:33 2009
@@ -663,6 +663,31 @@
   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,6 +757,8 @@
       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);
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]