]> Pileus Git - ~andy/gtk/commitdiff
[broadway] Report right root coors in toplevel mode
authorAlexander Larsson <alexl@redhat.com>
Wed, 6 Apr 2011 14:51:31 +0000 (16:51 +0200)
committerAlexander Larsson <alexl@redhat.com>
Thu, 7 Apr 2011 08:03:17 +0000 (10:03 +0200)
gdk/broadway/broadway.js

index 94d9b2e4e9d2354685f9dfd54b9070fad57726b2..0ce4b1111e3cb36e6ad95bcb2543e9cb7f8d0272 100644 (file)
@@ -673,21 +673,6 @@ function sendInput(cmd, args)
     }
 }
 
-function getDocumentCoordinates(element)
-{
-    var res = new Object();
-    res.x = element.offsetLeft;
-    res.y = element.offsetTop;
-
-    var offsetParent = element.offsetParent;
-    while (offsetParent != null) {
-       res.x += offsetParent.offsetLeft;
-       res.y += offsetParent.offsetTop;
-       offsetParent = offsetParent.offsetParent;
-    }
-    return res;
-}
-
 function getPositionsFromAbsCoord(absX, absY, relativeId) {
     var res = Object();
 
@@ -696,16 +681,24 @@ function getPositionsFromAbsCoord(absX, absY, relativeId) {
     res.winX = absX;
     res.winY = absY;
     if (relativeId != 0) {
-       var pos = getDocumentCoordinates(surfaces[relativeId].canvas);
-       res.winX = res.winX - pos.x;
-       res.winY = res.winY - pos.y;
+       var surface = surfaces[relativeId];
+       res.winX = res.winX - surface.x;
+       res.winY = res.winY - surface.y;
     }
 
     return res;
 }
 
 function getPositionsFromEvent(ev, relativeId) {
-    var res = getPositionsFromAbsCoord(ev.pageX, ev.pageY, relativeId);
+    var absX, absY;
+    if (useToplevelWindows) {
+       absX = ev.screenX;
+       absY = ev.screenY;
+    } else {
+       absX = ev.pageX;
+       absY = ev.pageY;
+    }
+    var res = getPositionsFromAbsCoord(absX, absY, relativeId);
 
     lastX = res.rootX;
     lastY = res.rootY;