Skip to content

Commit d2d44b4

Browse files
Jeanette Winzenburgaghaisas
Jeanette Winzenburg
authored andcommitted
8207759: VK_ENTER not consumed by TextField when default Button exists
Reviewed-by: aghaisas, kcr
1 parent fc539b5 commit d2d44b4

8 files changed

+681
-25
lines changed

modules/javafx.controls/src/main/java/com/sun/javafx/scene/control/behavior/TextFieldBehavior.java

+13-12
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,16 @@
2525

2626
package com.sun.javafx.scene.control.behavior;
2727

28+
29+
import com.sun.javafx.PlatformUtil;
30+
import com.sun.javafx.geom.transform.Affine3D;
31+
import com.sun.javafx.scene.NodeHelper;
2832
import com.sun.javafx.scene.control.Properties;
33+
import com.sun.javafx.scene.control.skin.Utils;
34+
import com.sun.javafx.stage.WindowHelper;
35+
36+
import static com.sun.javafx.PlatformUtil.*;
37+
2938
import javafx.beans.value.ChangeListener;
3039
import javafx.beans.value.WeakChangeListener;
3140
import javafx.event.ActionEvent;
@@ -35,23 +44,14 @@
3544
import javafx.geometry.Rectangle2D;
3645
import javafx.scene.Node;
3746
import javafx.scene.Scene;
38-
import javafx.scene.control.ContextMenu;
3947
import javafx.scene.control.TextField;
4048
import javafx.scene.control.skin.TextFieldSkin;
41-
import com.sun.javafx.scene.control.skin.Utils;
4249
import javafx.scene.input.ContextMenuEvent;
4350
import javafx.scene.input.KeyEvent;
4451
import javafx.scene.input.MouseEvent;
4552
import javafx.scene.text.HitInfo;
4653
import javafx.stage.Screen;
4754
import javafx.stage.Window;
48-
import com.sun.javafx.PlatformUtil;
49-
import com.sun.javafx.geom.transform.Affine3D;
50-
51-
import static com.sun.javafx.PlatformUtil.isMac;
52-
import static com.sun.javafx.PlatformUtil.isWindows;
53-
import com.sun.javafx.scene.NodeHelper;
54-
import com.sun.javafx.stage.WindowHelper;
5555

5656
/**
5757
* Text field behavior.
@@ -183,9 +183,10 @@ public void setTextFieldSkin(TextFieldSkin skin) {
183183

184184
textField.commitValue();
185185
textField.fireEvent(actionEvent);
186-
187-
if (onAction == null && !actionEvent.isConsumed()) {
188-
forwardToParent(event);
186+
// fix of JDK-8207759: reverted logic
187+
// mapping not auto-consume and consume if handled by action
188+
if (onAction != null || actionEvent.isConsumed()) {
189+
event.consume();
189190
}
190191
}
191192

modules/javafx.controls/src/main/java/com/sun/javafx/scene/control/behavior/TextInputControlBehavior.java

+5-13
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,7 @@ public TextInputControlBehavior(T c) {
124124
final Predicate<KeyEvent> validOnLinux = e -> !PlatformUtil.isLinux();
125125

126126
KeyMapping cancelEditMapping;
127+
KeyMapping fireMapping;
127128
KeyMapping consumeMostPressedEventsMapping;
128129

129130
// create a child input map for mappings which are applicable on all
@@ -136,7 +137,7 @@ public TextInputControlBehavior(T c) {
136137
keyMapping(HOME, e -> c.home()),
137138
keyMapping(DOWN, e -> c.end()),
138139
keyMapping(END, e -> c.end()),
139-
keyMapping(ENTER, this::fire),
140+
fireMapping = keyMapping(ENTER, this::fire),
140141

141142
keyMapping(new KeyBinding(HOME).shortcut(), e -> c.home()),
142143
keyMapping(new KeyBinding(END).shortcut(), e -> c.end()),
@@ -213,6 +214,8 @@ public TextInputControlBehavior(T c) {
213214
);
214215

215216
cancelEditMapping.setAutoConsume(false);
217+
// fix of JDK-8207759: don't auto-consume
218+
fireMapping.setAutoConsume(false);
216219
consumeMostPressedEventsMapping.setAutoConsume(false);
217220

218221
// mac os specific mappings
@@ -620,18 +623,7 @@ private void rightWord() {
620623
}
621624

622625
protected void fire(KeyEvent event) { } // TODO move to TextFieldBehavior
623-
protected void cancelEdit(KeyEvent event) { forwardToParent(event);} // not autoconsumed
624-
625-
protected void forwardToParent(KeyEvent event) {
626-
// fix for JDK-8145515
627-
if (getNode().getProperties().containsKey(DISABLE_FORWARD_TO_PARENT)) {
628-
return;
629-
}
630-
631-
if (getNode().getParent() != null) {
632-
getNode().getParent().fireEvent(event);
633-
}
634-
}
626+
protected void cancelEdit(KeyEvent event) { };
635627

636628
protected void selectHome() {
637629
getNode().selectHome();

0 commit comments

Comments
 (0)