From 63de0a583d1ce8c88c5362eecd0fc5ecd8c411a4 Mon Sep 17 00:00:00 2001
From: Adrian Lang <lang@cosmocode.de>
Date: Tue, 2 Mar 2010 14:30:37 +0100
Subject: [PATCH] =?UTF-8?q?Fix=20pageX=20and=20pageY=20in=20IE=E2=80=99s?=
 =?UTF-8?q?=20JS=20events?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 lib/scripts/drag.js   | 22 ++++------------------
 lib/scripts/events.js |  4 ++++
 2 files changed, 8 insertions(+), 18 deletions(-)

diff --git a/lib/scripts/drag.js b/lib/scripts/drag.js
index fa249a996..254eab4a6 100644
--- a/lib/scripts/drag.js
+++ b/lib/scripts/drag.js
@@ -50,8 +50,8 @@ var drag = {
 
         this.oX = parseInt(this.obj.style.left);
         this.oY = parseInt(this.obj.style.top);
-        this.eX = drag.evX(e);
-        this.eY = drag.evY(e);
+        this.eX = e.pageX;
+        this.eY = e.pageY;
 
         var _this = this;
         this.mousehandlers = [function (e) {return _this.drag(e);}, function (e) {return _this.stop(e);}];
@@ -80,23 +80,9 @@ var drag = {
      */
     drag: function(e) {
         if(this.obj) {
-            this.obj.style.top  = (this.evY(e)+this.oY-this.eY+'px');
-            this.obj.style.left = (this.evX(e)+this.oX-this.eX+'px');
+            this.obj.style.top  = (e.pageY+this.oY-this.eY+'px');
+            this.obj.style.left = (e.pageX+this.oX-this.eX+'px');
         }
     },
 
-    /**
-     * Returns the X position of the given event.
-     */
-    evX: function(e){
-        return (e.pageX) ? e.pageX : e.clientX + document.body.scrollTop; //fixme shouldn't this be scrollLeft?
-    },
-
-    /**
-     * Returns the Y position of the given event.
-     */
-    evY: function(e){
-        return (e.pageY) ? e.pageY : e.clientY + document.body.scrollTop;
-    }
-
 };
diff --git a/lib/scripts/events.js b/lib/scripts/events.js
index e7526ced7..2ea619085 100644
--- a/lib/scripts/events.js
+++ b/lib/scripts/events.js
@@ -55,6 +55,10 @@ function fixEvent(event) {
     event.stopPropagation = fixEvent.stopPropagation;
     // fix target
     event.target = event.srcElement;
+    // fix coords
+    event.pageX = (typeof event.pageX !== 'undefined') ? event.pageX : event.clientX + document.body.scrollTop;
+    event.pageY = (typeof event.pageY !== 'undefined') ? event.pageY : event.clientY + document.body.scrollTop;
+
     return event;
 };
 fixEvent.preventDefault = function() {
-- 
GitLab