Commit e8224623 authored by Ray Strode's avatar Ray Strode Committed by Ray Strode
Browse files

After using randr to get a list of monitors, sort the list such that the

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.

svn path=/trunk/; revision=22386
parent 92c30df3
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.
2009-02-19 Sven Neumann <sven@gimp.org>
* gdk/directfb/gdkwindow-directfb.c
......
......@@ -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,6 +757,8 @@ 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);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment