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

Reply via email to