RFR: 8277122: SplitPane divider drag can hang the layout [v4]

Marius Hanl mhanl at openjdk.java.net
Thu Jan 27 20:48:40 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 and used global stageLoader + changed copyright year to 2022

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

Changes:
  - all: https://git.openjdk.java.net/jfx/pull/669/files
  - new: https://git.openjdk.java.net/jfx/pull/669/files/345552d4..a5f9f500

Webrevs:
 - full: https://webrevs.openjdk.java.net/?repo=jfx&pr=669&range=03
 - incr: https://webrevs.openjdk.java.net/?repo=jfx&pr=669&range=02-03

  Stats: 11 lines in 2 files changed: 7 ins; 1 del; 3 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