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 <gok...@google.com>
Gerrit-Reviewer: Goktug Gokdogan <gok...@google.com>
Gerrit-Reviewer: Leeroy Jenkins <jenk...@gwtproject.org>
Gerrit-Reviewer: Patrick Tucker <tucker...@gmail.com>
Gerrit-Reviewer: Thomas Broyer <t.bro...@gmail.com>

--
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 google-web-toolkit-contributors+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to