On Fri, 19 Jan 2024 16:15:10 GMT, Martin Fox <m...@openjdk.org> wrote:
>> On Windows we need to ensure InputMethodRequests coming from JFXPanel are >> processed on the JavaFX application thread instead of the AWT EventQueue >> thread. This PR adds the runAndWait() calls to do that. >> >> This would be difficult to test on Windows without a fix for >> [JDK-8090267](https://bugs.openjdk.org/browse/JDK-8090267) so I've included >> the fix first proposed by @prsadhuk in PR #1169. If a developer uses the >> sample code provided in the JavaDoc to create and show a JFXPanel there's a >> good chance the JFXPanel will get focus before the scene has been set. To >> ensure AWT always treats the JFXPanel as an active IME client we return a >> stub version of the InputMethodRequests object if there's no scene. AWT will >> continue to ask for the InputMethodRequests and once the scene has been set >> the panel will return a non-stub version. > > Martin Fox has updated the pull request incrementally with one additional > commit since the last revision: > > Switched to local array variables modules/javafx.swing/src/main/java/javafx/embed/swing/InputMethodSupport.java line 125: > 123: @Override > 124: public AttributedCharacterIterator > getSelectedText(AttributedCharacterIterator.Attribute[] attributes) { > 125: String[] selected = { null }; Would AtomicReference<String> be a better choice here? modules/javafx.swing/src/main/java/javafx/embed/swing/InputMethodSupport.java line 132: > 130: } > 131: if (selected[0] == null) selected[0] = ""; > 132: return new AttributedString(selected[0]).getIterator(); AtomicReference<String> ref = ... ... String s = ref.get(); return new AttributedString(s == null ? "" : s).getIterator(); here and L102? ------------- PR Review Comment: https://git.openjdk.org/jfx/pull/1337#discussion_r1459911995 PR Review Comment: https://git.openjdk.org/jfx/pull/1337#discussion_r1459916837