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.