summaryrefslogtreecommitdiffstats
path: root/client
diff options
context:
space:
mode:
Diffstat (limited to 'client')
-rw-r--r--client/src/com/vaadin/client/ui/VTextArea.java24
1 files changed, 24 insertions, 0 deletions
diff --git a/client/src/com/vaadin/client/ui/VTextArea.java b/client/src/com/vaadin/client/ui/VTextArea.java
index 5150ab2544..e6a3aa2a09 100644
--- a/client/src/com/vaadin/client/ui/VTextArea.java
+++ b/client/src/com/vaadin/client/ui/VTextArea.java
@@ -23,7 +23,9 @@ import com.google.gwt.dom.client.Style.WhiteSpace;
import com.google.gwt.dom.client.TextAreaElement;
import com.google.gwt.event.dom.client.ChangeEvent;
import com.google.gwt.event.dom.client.ChangeHandler;
+import com.google.gwt.event.dom.client.KeyCodes;
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.Command;
@@ -43,14 +45,21 @@ import com.vaadin.client.ui.dd.VDragCloneAware;
*
*/
public class VTextArea extends VTextField implements VDragCloneAware {
+
public static final String CLASSNAME = "v-textarea";
private boolean wordwrap = true;
private MaxLengthHandler maxLengthHandler = new MaxLengthHandler();
private boolean browserSupportsMaxLengthAttribute = browserSupportsMaxLengthAttribute();
+ private EnterDownHandler enterDownHandler = new EnterDownHandler();
public VTextArea() {
super(DOM.createTextArea());
setStyleName(CLASSNAME);
+
+ // KeyDownHandler is needed for correct text input on all
+ // browsers, not just those that don't support a max length attribute
+ addKeyDownHandler(enterDownHandler);
+
if (!browserSupportsMaxLengthAttribute) {
addKeyUpHandler(maxLengthHandler);
addChangeHandler(maxLengthHandler);
@@ -249,6 +258,20 @@ public class VTextArea extends VTextField implements VDragCloneAware {
}
}
+ private class EnterDownHandler implements KeyDownHandler {
+
+ @Override
+ public void onKeyDown(KeyDownEvent event) {
+ // Fix for #12424 - if the key being pressed is enter, we stop
+ // propagation of the KeyDownEvents. This prevents shortcuts that
+ // are bound to the enter key from being processed.
+ if (event.getNativeKeyCode() == KeyCodes.KEY_ENTER) {
+ event.stopPropagation();
+ }
+ }
+
+ }
+
@Override
public int getCursorPos() {
// This is needed so that TextBoxImplIE6 is used to return the correct
@@ -294,6 +317,7 @@ public class VTextArea extends VTextField implements VDragCloneAware {
// Overridden to avoid submitting TextArea value on enter in IE. This is
// another reason why widgets should inherit a common abstract
// class instead of directly each other.
+ // This method is overridden only for IE and Firefox.
}
@Override