gtk+ r22386 - in trunk: . gdk/x11
- From: halfline svn gnome org
- To: svn-commits-list gnome org
- Subject: gtk+ r22386 - in trunk: . gdk/x11
- Date: Fri, 20 Feb 2009 04:42:33 +0000 (UTC)
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]