RFR: 8277122: SplitPane divider drag can hang the layout [v3]
Marius Hanl
mhanl at openjdk.java.net
Wed Jan 26 20:08:11 UTC 2022
> When a divider is moved via drag or code it will call **requestLayout()** for the **SplitPane**.
> While this is fine, it is also called when the **SplitPaneSkin#layoutChildren(..)** method is repositioning the divider.
>
> This makes no sense since we are currently layouting everything, so we don't need to request it again. (The divider positioning is the first part of **layoutChildren(..)**. In the second part the SplitPane content is layouted based off those positions)
>
> -> With this behaviour the layout may hang under some conditions (check attached source). The problem is that the **requestLayout()** will mark the **SplitPane** dirty but won't propagate to the parent since the **SplitPane** is currently doing a layout.
>
> This PR fixes this by not requesting layout when we are currently doing it (and thus repositioning the dividers as part of it).
>
> Note: I also fixed a simple typo of a private method in SplitPaneSkin:
> initializeDivderEventHandlers -> initializeDiv**i**derEventHandlers
Marius Hanl has updated the pull request incrementally with one additional commit since the last revision:
8277122: Added bug id to the fix and test for future reference
-------------
Changes:
- all: https://git.openjdk.java.net/jfx/pull/669/files
- new: https://git.openjdk.java.net/jfx/pull/669/files/9db28ff0..345552d4
Webrevs:
- full: https://webrevs.openjdk.java.net/?repo=jfx&pr=669&range=02
- incr: https://webrevs.openjdk.java.net/?repo=jfx&pr=669&range=01-02
Stats: 5 lines in 2 files changed: 4 ins; 1 del; 0 mod
Patch: https://git.openjdk.java.net/jfx/pull/669.diff
Fetch: git fetch https://git.openjdk.java.net/jfx pull/669/head:pull/669
PR: https://git.openjdk.java.net/jfx/pull/669
More information about the openjfx-dev
mailing list