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