2002/05/28 18:30:30
[org.ibex.core.git] / src / org / xwt / Surface.java
index d8b944d..7cecd62 100644 (file)
@@ -92,6 +92,12 @@ public abstract class Surface {
     /** the y-position of the mouse the last time a Press message was enqueued */
     int last_press_y = Integer.MAX_VALUE;
 
+    /** the last button to recieve a Click message; used for simulating DoubleClick's */
+    static int lastClickButton = 0;
+
+    /** the last time a Click message was processed; used for simulating DoubleClick's */
+    static long lastClickTime = 0;
+
 
     
     // Methods to be overridden by subclasses ///////////////////////////////////////////////////////
@@ -177,6 +183,12 @@ public abstract class Surface {
         if (button == 1) new SimpleMessage("Click1", Boolean.TRUE, root.whoIs(mousex, mousey));
         else if (button == 2) new SimpleMessage("Click2", Boolean.TRUE, root.whoIs(mousex, mousey));
         else if (button == 3) new SimpleMessage("Click3", Boolean.TRUE, root.whoIs(mousex, mousey));
+        if (Platform.needsAutoDoubleClick()) {
+            long now = System.currentTimeMillis();
+            if (lastClickButton == button && now - lastClickTime < 350) DoubleClick(button);
+            lastClickButton = button;
+            lastClickTime = now;
+        }
     }
 
     protected final void DoubleClick(int button) {
@@ -551,11 +563,11 @@ public abstract class Surface {
     }
 
     // FEATURE: reinstate recycler
-    private class SimpleMessage implements Message {
+    public class SimpleMessage implements Message {
         
         private Box boxContainingMouse;
         private Object value;
-        private String name;
+        public String name;
         
         SimpleMessage(String name, Object value, Box boxContainingMouse) {
             this.boxContainingMouse = boxContainingMouse;