RFR: 8296387: [Tooltip, CSS] -fx-show-delay is only applied to the first tooltip that is shown before it is displayed [v10]

Kevin Rushforth kcr at openjdk.org
Wed Jul 10 23:15:02 UTC 2024


On Wed, 10 Jul 2024 09:42:57 GMT, Marius Hanl <mhanl at openjdk.org> wrote:

>> This PR fixes a long standing issue where the `Tooltip` will always wait one second until it appears the very first time, even if the 
>> `-fx-show-delay` was set to another value.
>> 
>> The culprit is, that the `cssForced` flag is not inside `Tooltip`, but inside the `TooltipBehaviour`. So the very first `Tooltip` gets processed correctly, but after no `Tooltip` will be processed by CSS before showing, resulting in the set `-fx-show-delay` to not be applied immediately.
>> 
>> Added a bunch of headful and headless tests for the behaviour since there were none before.
>
> Marius Hanl has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains 12 additional commits since the last revision:
> 
>  - Merge branch 'master' of https://github.com/openjdk/jfx into 8296387-tooltip-css
>  - Use Base64 encoder in tests
>  - Improve time measurement and simplify test diff code
>  - add many more unit tests for Tooltip
>  - Use Helper class instead
>  - Doc
>  - Add a test for changing the stylesheet and always process CSS for that matter
>  - Add more documentation and improve css stylesheet test threshold
>  - Implement applyStylesheetFromOwner(..) and use it instead to ensure correct CSS processing for the Tooltip Node.
>  - Merge branch 'master' of https://github.com/openjdk/jfx into 8296387-tooltip-css
>  - ... and 2 more: https://git.openjdk.org/jfx/compare/bb34dd85...f917d18e

I ran it on our CI Linux and macOS systems and it passed on all of them. It also passed on my local Linux system.

On my Windows machine I still get the following test failure almost every time I run it:


TooltipTest > testShowDelayCssShowTooltipTwice() FAILED
    org.opentest4j.AssertionFailedError: 260 <= 180 ==> expected: <true> but was: <false>
        at app//org.junit.jupiter.api.AssertionUtils.fail(AssertionUtils.java:55)
        at app//org.junit.jupiter.api.AssertTrue.assertTrue(AssertTrue.java:40)
        at app//org.junit.jupiter.api.Assertions.assertTrue(Assertions.java:210)
        at app//test.robot.javafx.scene.TooltipTest.assertTooltipShowDelay(TooltipTest.java:69)
        at app//test.robot.javafx.scene.TooltipTest.testShowDelayCssShowTooltipTwice(TooltipTest.java:202)


I've seen the actual result as high as 390 one time. The other times were in the 200 - 260 range.

Have you run it on Windows? If it's only my system, we could file a bug and look at it later. We might consider skipping that test on Windows using `@Ignore` and referencing that follow-on bug.

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

PR Comment: https://git.openjdk.org/jfx/pull/1394#issuecomment-2221678986


More information about the openjfx-dev mailing list