]> source.dussan.org Git - gwtquery.git/commitdiff
fix problem for supporting touch events in iOS.
authorJulien Dramaix <julien.dramaix@gmail.com>
Wed, 9 May 2012 16:09:12 +0000 (16:09 +0000)
committerJulien Dramaix <julien.dramaix@gmail.com>
Wed, 9 May 2012 16:09:12 +0000 (16:09 +0000)
touches array seems to be shared between events. Keep in memory the original touch point.

gwtquery-core/src/main/java/com/google/gwt/query/client/plugins/MousePlugin.java

index 8f73c2509a01d208fb927dae5bc3da3a20315fa9..cfc2367719f2e4cd3de0938b4ada8bf2d3866f57 100755 (executable)
@@ -20,6 +20,8 @@ import com.google.gwt.query.client.Function;
 import com.google.gwt.query.client.GQuery;\r
 import com.google.gwt.query.client.plugins.events.GqEvent;\r
 import com.google.gwt.user.client.Event;\r
+import com.google.gwt.user.client.ui.Label;\r
+import com.google.gwt.user.client.ui.RootPanel;\r
 \r
 /**\r
  * Base class for all plug-in that need to handle some mouse interactions.\r
@@ -33,6 +35,8 @@ public abstract class MousePlugin extends UiPlugin {
   private MouseOptions options;\r
   private boolean preventClickEvent = false;\r
   private boolean touchSupported = false;\r
+  private int startX = -1;\r
+  private int startY = -1;\r
 \r
   protected MousePlugin(GQuery gq) {\r
     super(gq);\r
@@ -171,6 +175,7 @@ public abstract class MousePlugin extends UiPlugin {
    * \r
    */\r
   protected boolean mouseMove(Element element, GqEvent event) {\r
+\r
     if (started) {\r
       event.getOriginalEvent().preventDefault();\r
       return mouseDrag(element, event);\r
@@ -208,12 +213,14 @@ public abstract class MousePlugin extends UiPlugin {
    * \r
    */\r
   protected boolean mouseUp(Element element, GqEvent event) {\r
+\r
     unbindOtherEvents();\r
     if (started) {\r
       started = false;\r
       preventClickEvent = (event.getCurrentEventTarget() == startEvent.getCurrentEventTarget());\r
       mouseStop(element, event);\r
     }\r
+\r
     return true;\r
 \r
   }\r
@@ -264,14 +271,13 @@ public abstract class MousePlugin extends UiPlugin {
 \r
   private boolean distanceConditionMet(GqEvent event) {\r
     int neededDistance = options.getDistance();\r
-    int startX = getClientX(startEvent);\r
-    int startY = getClientY(startEvent);\r
     int xDistance = Math.abs(startX - getClientX(event));\r
     int yDistance = Math.abs(startY - getClientY(event));\r
     // in jQuery-ui we take the greater distance between x and y... not really\r
     // good !\r
     // int mouseDistance = Math.max(xMouseDistance, yMouseDistance);\r
     // use Pythagor theorem !!\r
+   \r
     int mouseDistance = (int) Math.sqrt(xDistance * xDistance + yDistance * yDistance);\r
     return mouseDistance >= neededDistance;\r
   }\r
@@ -301,6 +307,8 @@ public abstract class MousePlugin extends UiPlugin {
 \r
   private void reset(GqEvent nativeEvent) {\r
     this.startEvent = nativeEvent;\r
+    this.startX = getClientX(nativeEvent);\r
+    this.startY = getClientY(nativeEvent);\r
     this.mouseUpDuration = new Duration();\r
   }\r
 \r