On Tue, 16 Jan 2024 17:59:42 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. This generally looks good. I left a couple comments inline. modules/javafx.swing/src/main/java/javafx/embed/swing/InputMethodSupport.java line 63: > 61: private Point2D pointValue; > 62: private int intValue; > 63: private String stringValue; Using instance fields like this is not thread-safe in general (although unlikely to cause problems in practice for this specific case). I recommend either creating a utility method that returns the result of a `Future` (see PR #1321 ) or changing these to local `AtomicObject<Type>` / `AtomicInteger` (or `Type[]` `int[]`) variables. ------------- PR Review: https://git.openjdk.org/jfx/pull/1337#pullrequestreview-1829689559 PR Review Comment: https://git.openjdk.org/jfx/pull/1337#discussion_r1457447528