-
Bug
-
Resolution: Cannot Reproduce
-
P4
-
None
-
jfx24
-
x86_64
-
windows
A DESCRIPTION OF THE PROBLEM :
It is not possible to get committed text from Windows IME until user presses Enter.
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
Run the provided code with Chinese Pinyin and this is what you will get:
1. User starts entering characters.
2. Windows IME appears.
3. User selects required symbol, for example, by pressing "2".
4. IME disappears.
5. Nothing happens until user presses Enter.
6. Selected symbol is added.
This issue is about #5 because it should work without pressing Enter for every symbol.
ACTUAL -
See https://i.sstatic.net/XVDJincg.gif
---------- BEGIN SOURCE ----------
public class Foo extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) throws Exception {
var textArea = new TextArea();
textArea.setOnInputMethodTextChanged(e -> {
System.out.println("Event:" + e.getCommitted().length());
textArea.appendText(e.getCommitted());
});
VBox.setVgrow(textArea, Priority.ALWAYS);
var root = new VBox(textArea);
var scene = new Scene(root, 400, 400);
primaryStage.setScene(scene);
primaryStage.show();
}
}
---------- END SOURCE ----------
FREQUENCY : always
It is not possible to get committed text from Windows IME until user presses Enter.
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
Run the provided code with Chinese Pinyin and this is what you will get:
1. User starts entering characters.
2. Windows IME appears.
3. User selects required symbol, for example, by pressing "2".
4. IME disappears.
5. Nothing happens until user presses Enter.
6. Selected symbol is added.
This issue is about #5 because it should work without pressing Enter for every symbol.
ACTUAL -
See https://i.sstatic.net/XVDJincg.gif
---------- BEGIN SOURCE ----------
public class Foo extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) throws Exception {
var textArea = new TextArea();
textArea.setOnInputMethodTextChanged(e -> {
System.out.println("Event:" + e.getCommitted().length());
textArea.appendText(e.getCommitted());
});
VBox.setVgrow(textArea, Priority.ALWAYS);
var root = new VBox(textArea);
var scene = new Scene(root, 400, 400);
primaryStage.setScene(scene);
primaryStage.show();
}
}
---------- END SOURCE ----------
FREQUENCY : always