Goktug Gokdogan has submitted this change and it was merged.

Change subject: Removes delegation of event from TextBox event handler inside SuggestBox.
......................................................................


Removes delegation of event from TextBox event handler inside SuggestBox.

The events are already fired in SuggestBox as it is a composite, additional
delegation was causing events to be fired twice.

Bug: Issue 3533

Original author: Patrick Tucker

Change-Id: I70752f24667a83bee208f31f37ec63d79ec8b1b8
Review-Link: https://gwt-review.googlesource.com/#/c/3141/
---
M user/src/com/google/gwt/user/client/ui/SuggestBox.java
M user/test/com/google/gwt/user/client/ui/SuggestBoxTest.java
2 files changed, 44 insertions(+), 10 deletions(-)

Approvals:
  Leeroy Jenkins: Verified
  Goktug Gokdogan: Looks good to me, approved



diff --git a/user/src/com/google/gwt/user/client/ui/SuggestBox.java b/user/src/com/google/gwt/user/client/ui/SuggestBox.java
index 818e9b2..7d87fb2 100644
--- a/user/src/com/google/gwt/user/client/ui/SuggestBox.java
+++ b/user/src/com/google/gwt/user/client/ui/SuggestBox.java
@@ -21,7 +21,6 @@
 import com.google.gwt.editor.client.IsEditor;
 import com.google.gwt.editor.client.LeafValueEditor;
 import com.google.gwt.editor.client.adapters.TakesValueEditor;
-import com.google.gwt.event.dom.client.HandlesAllKeyEvents;
 import com.google.gwt.event.dom.client.HasAllKeyHandlers;
 import com.google.gwt.event.dom.client.KeyCodes;
 import com.google.gwt.event.dom.client.KeyDownEvent;
@@ -1119,8 +1118,7 @@
   }

   private void addEventsToTextBox() {
-    class TextBoxEvents extends HandlesAllKeyEvents implements
-        ValueChangeHandler<String> {
+ class TextBoxEvents implements KeyDownHandler, KeyUpHandler, ValueChangeHandler<String> {

       public void onKeyDown(KeyDownEvent event) {
         switch (event.getNativeKeyCode()) {
@@ -1140,17 +1138,11 @@
             }
             break;
         }
-        delegateEvent(SuggestBox.this, event);
-      }
-
-      public void onKeyPress(KeyPressEvent event) {
-        delegateEvent(SuggestBox.this, event);
       }

       public void onKeyUp(KeyUpEvent event) {
         // After every user key input, refresh the popup's suggestions.
         refreshSuggestions();
-        delegateEvent(SuggestBox.this, event);
       }

       public void onValueChange(ValueChangeEvent<String> event) {
@@ -1159,7 +1151,8 @@
     }

     TextBoxEvents events = new TextBoxEvents();
-    events.addKeyHandlersTo(box);
+    box.addKeyDownHandler(events);
+    box.addKeyUpHandler(events);
     box.addValueChangeHandler(events);
   }

diff --git a/user/test/com/google/gwt/user/client/ui/SuggestBoxTest.java b/user/test/com/google/gwt/user/client/ui/SuggestBoxTest.java
index 503c96e..cbb0e1b 100644
--- a/user/test/com/google/gwt/user/client/ui/SuggestBoxTest.java
+++ b/user/test/com/google/gwt/user/client/ui/SuggestBoxTest.java
@@ -17,6 +17,11 @@

 import com.google.gwt.dom.client.Document;
 import com.google.gwt.dom.client.Element;
+import com.google.gwt.dom.client.NativeEvent;
+import com.google.gwt.event.dom.client.KeyDownEvent;
+import com.google.gwt.event.dom.client.KeyDownHandler;
+import com.google.gwt.event.dom.client.KeyUpEvent;
+import com.google.gwt.event.dom.client.KeyUpHandler;
import com.google.gwt.user.client.ui.MultiWordSuggestOracle.MultiWordSuggestion;
 import com.google.gwt.user.client.ui.SuggestBox.DefaultSuggestionDisplay;
 import com.google.gwt.user.client.ui.SuggestBox.SuggestionCallback;
@@ -367,6 +372,42 @@
     assertTrue(b.getParent() == box);
   }

+  /**
+   * See https://code.google.com/p/google-web-toolkit/issues/detail?id=3533
+   */
+  public void testKeyDownEvent() {
+    final int[] eventFireCount = {0};
+    SuggestBox box = new SuggestBox();
+    RootPanel.get().add(box);
+    box.addKeyDownHandler(new KeyDownHandler() {
+      @Override
+      public void onKeyDown(KeyDownEvent event) {
+        eventFireCount[0]++;
+      }
+    });
+ NativeEvent e = Document.get().createKeyDownEvent(false, false, false, false, 'g');
+    box.getElement().dispatchEvent(e);
+    assertEquals(1, eventFireCount[0]);
+  }
+
+  /**
+   * See https://code.google.com/p/google-web-toolkit/issues/detail?id=3533
+   */
+  public void testKeyUpEvent() {
+    final int[] eventFireCount = {0};
+    SuggestBox box = new SuggestBox();
+    RootPanel.get().add(box);
+    box.addKeyUpHandler(new KeyUpHandler() {
+      @Override
+      public void onKeyUp(KeyUpEvent event) {
+        eventFireCount[0]++;
+      }
+    });
+ NativeEvent e = Document.get().createKeyUpEvent(false, false, false, false, 'g');
+    box.getElement().dispatchEvent(e);
+    assertEquals(1, eventFireCount[0]);
+  }
+
   protected SuggestBox createSuggestBox() {
     MultiWordSuggestOracle oracle = createOracle();
return new SuggestBox(oracle, new TextBox(), new TestSuggestionDisplay());

--
To view, visit https://gwt-review.googlesource.com/3141
To unsubscribe, visit https://gwt-review.googlesource.com/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I70752f24667a83bee208f31f37ec63d79ec8b1b8
Gerrit-PatchSet: 3
Gerrit-Project: gwt
Gerrit-Branch: master
Gerrit-Owner: Goktug Gokdogan <[email protected]>
Gerrit-Reviewer: Goktug Gokdogan <[email protected]>
Gerrit-Reviewer: Leeroy Jenkins <[email protected]>
Gerrit-Reviewer: Patrick Tucker <[email protected]>
Gerrit-Reviewer: Thomas Broyer <[email protected]>

--
http://groups.google.com/group/Google-Web-Toolkit-Contributors
--- You received this message because you are subscribed to the Google Groups "GWT Contributors" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to