Reviewers: ,

Description:
I used Issue 51810 as my template for this
(http://gwt-code-reviews.appspot.com/51810).

I use sinkEvents to catch onPaste events to a TextBox so I can react to
changes on TextBoxes without waiting for it to loose focus. This works well
for IE and Firefox but Opera does not support onPaste.

Opera has an onInput event that provides a way to detect a TextBox change.
This patch allows the onInput event to be detected in GWT.

Please review this at http://gwt-code-reviews.appspot.com/1248801/show

Affected files:
   user/src/com/google/gwt/user/client/Event.java
   user/src/com/google/gwt/user/client/impl/DOMImpl.java
   user/src/com/google/gwt/user/client/impl/DOMImplOpera.java
   user/src/com/google/gwt/user/client/impl/DOMImplStandard.java
   user/src/com/google/gwt/user/client/impl/DOMImplTrident.java


Index: user/src/com/google/gwt/user/client/impl/DOMImpl.java
===================================================================
--- user/src/com/google/gwt/user/client/impl/DOMImpl.java       (revision
9483)
+++ user/src/com/google/gwt/user/client/impl/DOMImpl.java       (working
copy)
@@ -92,6 +92,7 @@
      case "gesturestart": return 0x1000000;
      case "gesturechange": return 0x2000000;
      case "gestureend": return 0x4000000;
+       case "input": return 0x8000000;
      default: return -1;
      }
    }-*/;
Index: user/src/com/google/gwt/user/client/impl/DOMImplStandard.java
===================================================================
--- user/src/com/google/gwt/user/client/impl/DOMImplStandard.java
(revision  
9483)
+++ user/src/com/google/gwt/user/client/impl/DOMImplStandard.java
(working  
copy)
@@ -271,6 +271,8 @@
          @com.google.gwt.user.client.impl.DOMImplStandard::dispatchEvent :

null;
      if (chMask & 0x4000000) elem.ongestureend    = (bits & 0x4000000) ?
          @com.google.gwt.user.client.impl.DOMImplStandard::dispatchEvent :

null;
+       if (chMask & 0x8000000) elem.oninput       = (bits & 0x8000000) ?
+        @com.google.gwt.user.client.impl.DOMImplStandard::dispatchEvent :  
null;
    }-*/;

    private native void releaseCaptureImpl(Element elem) /*-{
Index: user/src/com/google/gwt/user/client/impl/DOMImplOpera.java
===================================================================
--- user/src/com/google/gwt/user/client/impl/DOMImplOpera.java  (revision  
9483)
+++ user/src/com/google/gwt/user/client/impl/DOMImplOpera.java  (working  
copy)
@@ -68,5 +68,7 @@
          @com.google.gwt.user.client.impl.DOMImplStandard::dispatchEvent :

null;
      elem.onpaste       = (bits & 0x80000) ?
          @com.google.gwt.user.client.impl.DOMImplStandard::dispatchEvent :

null;
+       elem.oninput       = (bits & 0x8000000) ?
+        @com.google.gwt.user.client.impl.DOMImplStandard::dispatchEvent :  
null;
    }-*/;
  }
Index: user/src/com/google/gwt/user/client/impl/DOMImplTrident.java
===================================================================
--- user/src/com/google/gwt/user/client/impl/DOMImplTrident.java
(revision  
9483)
+++ user/src/com/google/gwt/user/client/impl/DOMImplTrident.java
(working  
copy)
@@ -278,5 +278,7 @@
           
@com.google.gwt.user.client.impl.DOMImplTrident::callDispatchEvent : null;
      if (chMask & 0x80000) elem.onpaste       = (bits & 0x80000) ?
           
@com.google.gwt.user.client.impl.DOMImplTrident::callDispatchEvent : null;
+       if (chMask & 0x8000000) elem.oninput       = (bits & 0x8000000) ?
+         
@com.google.gwt.user.client.impl.DOMImplTrident::callDispatchEvent : null;
    }-*/;
  }
Index: user/src/com/google/gwt/user/client/Event.java
===================================================================
--- user/src/com/google/gwt/user/client/Event.java      (revision 9483)
+++ user/src/com/google/gwt/user/client/Event.java      (working copy)
@@ -272,6 +272,15 @@
     */
    public static final int ONGESTURESTART = 0x1000000;

+   /**
+   * Fired when the contents of a textarea, input:text, input:password or
+   * input:search element have changed, because the onchange event on these
+   * elements fires when the element loses focus, not immediately after
the modification.
+   *
+   * Note: This event is <em>not</em> supported on Internet Explorer.
+   */
+  public static final int ONINPUT = 0x8000000;
+
    /**
     * Fired when the user depresses a key.
     */



-- 
http://groups.google.com/group/Google-Web-Toolkit-Contributors

Reply via email to