summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <matthiasc@src.gnome.org>2009-03-24 05:57:53 +0000
committerMatthias Clasen <matthiasc@src.gnome.org>2009-03-24 05:57:53 +0000
commit7dfb01937d119c17c160fff912f99fb53fbf8de3 (patch)
treeee699553dc815f502d38437a9656e4a9430806e8
parente0045d59c7fb7bc6df3606b90f72ebc340700db4 (diff)
downloadgtk+-7dfb01937d119c17c160fff912f99fb53fbf8de3.tar.gz
Fix get_nearest_monitor
svn path=/trunk/; revision=22582
-rw-r--r--ChangeLog8
-rw-r--r--gdk/gdkscreen.c9
2 files changed, 13 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index 3ec2493cbf..3f58176e03 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2009-03-24 Matthias Clasen <mclasen@redhat.com>
+
+ Bug 576306 – gdkscreen.c: get_nearest_monitor too simple, gives wrong
+ result, mispositioning tooltips
+
+ * gdk/gdkscreen.c (get_nearest_monitor): Make this function work.
+ Problem reported by Dave Gilbert.
+
2009-03-23 Hiroyuki Ikezoe <poincare@ikezoe.net>
Bug 576254 - <object> requires attribute "id"
diff --git a/gdk/gdkscreen.c b/gdk/gdkscreen.c
index 468aaec8b7..17c09f9236 100644
--- a/gdk/gdkscreen.c
+++ b/gdk/gdkscreen.c
@@ -213,7 +213,7 @@ get_nearest_monitor (GdkScreen *screen,
gint num_monitors, i;
gint nearest_dist = G_MAXINT;
gint nearest_monitor = 0;
-
+
g_return_val_if_fail (GDK_IS_SCREEN (screen), -1);
num_monitors = gdk_screen_get_n_monitors (screen);
@@ -221,7 +221,7 @@ get_nearest_monitor (GdkScreen *screen,
for (i = 0; i < num_monitors; i++)
{
GdkRectangle monitor;
- gint dist_x, dist_y;
+ gint dist_x, dist_y, dist;
gdk_screen_get_monitor_geometry (screen, i, &monitor);
@@ -239,9 +239,10 @@ get_nearest_monitor (GdkScreen *screen,
else
dist_y = 0;
- if (MIN (dist_x, dist_y) < nearest_dist)
+ dist = dist_x + dist_y;
+ if (dist < nearest_dist)
{
- nearest_dist = MIN (dist_x, dist_y);
+ nearest_dist = dist;
nearest_monitor = i;
}
}