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

Reply via email to