Integrated: 8277122: SplitPane divider drag can hang the layout

Marius Hanl mhanl at openjdk.java.net
Mon Jan 31 15:03:15 UTC 2022


On Mon, 15 Nov 2021 14:34:04 GMT, Marius Hanl <mhanl at openjdk.org> wrote:

> 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

This pull request has now been integrated.

Changeset: ee52d146
Author:    Marius Hanl <mhanl at openjdk.org>
Committer: Jeanette Winzenburg <fastegal at openjdk.org>
URL:       https://git.openjdk.java.net/jfx/commit/ee52d14653996921a9bd30e9b568151d3d4d06de
Stats:     84 lines in 2 files changed: 76 ins; 1 del; 7 mod

8277122: SplitPane divider drag can hang the layout

Reviewed-by: fastegal, aghaisas

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

PR: https://git.openjdk.java.net/jfx/pull/669


More information about the openjfx-dev mailing list