RFR: 8296621: Stage steals focus on scene change [v4]

Ambarish Rapte arapte at openjdk.org
Tue Dec 6 05:41:55 UTC 2022


On Mon, 5 Dec 2022 21:03:09 GMT, Thiago Milczarek Sayao <tsayao at openjdk.org> wrote:

>> Simple fix to not requestFocus() on scene change.
>> 
>> The attached bug sample shows that the TextField focused on the scene remains focused when the scene comes back.
>
> Thiago Milczarek Sayao has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Add new line

Suggesting minor changes in the test.

tests/system/src/test/java/test/robot/javafx/scene/SceneChangeShouldNotFocusStageTest.java line 61:

> 59:     public static void initFX() throws Exception {
> 60:         new Thread(() -> Application.launch(TestApp.class, (String[]) null)).start();
> 61:         waitForLatch(startupLatch, 10, "FX runtime failed to start.");

With the changes made in #950, we have a new pattern for launch and exit.
These two lines would be now:  `Util.launch(startupLatch, TestApp.class);`
and similarly exit method would be : `Util.shutdown(stage);`
and `waitForLatch` method can be removed.

tests/system/src/test/java/test/robot/javafx/scene/SceneChangeShouldNotFocusStageTest.java line 80:

> 78:             tl.setCycleCount(Animation.INDEFINITE);
> 79:             tl.getKeyFrames().addAll(new KeyFrame(Duration.millis(0), e -> stage.setScene(scene1)),
> 80:                     new KeyFrame(Duration.millis(200), e -> stage.setScene(scene2)));

With `Duration.millis(0)`, JavaFX gets no time to switch to `scene2`. We should allow some time for `stage.setScene(scene2)` to be processed.
We can observe the behavior by commenting two lines 55 and 88, and adding a delay `Util.sleep(10000)` in `exit()` method : The `scene2` will never be seen on Window.
I would recommend to change `Duration.millis(0)` to `Duration.millis(100)` OR any other duration with sufficient gap between the two Frames.

-------------

Changes requested by arapte (Reviewer).

PR: https://git.openjdk.org/jfx/pull/940


More information about the openjfx-dev mailing list