On Tue, 11 Feb 2025 15:46:17 GMT, Andy Goryachev <ango...@openjdk.org> wrote:

> ## Root Cause
> 
> Each time a `PaginationSkin.IndicatorButton` gets created it adds two 
> listeners (to the control's `styleClass` property and to the skin's 
> tooltipVisible property) via `ListenerHelper`.  This was not detected by the 
> `SkinMemoryLeakTest` because all listeners got removed correctly upon skin 
> change.
> 
> ## Solution
> 
> Add a single listener to the control's `styleClass` property at the skin 
> level, and insert the call to the skin's `tooltipVisible` property both of 
> which iterate over indicator button to do their thing.

The fix looks good to me. I tested it in a couple of different ways, and 
everything works as expected.

With this fix and the fix for PR #1698 with the call to `System.gc()` removed, 
the test passes with no OOM.

modules/javafx.controls/src/main/java/javafx/scene/control/skin/PaginationSkin.java
 line 201:

> 199: 
> 200:         navigation = new NavigationControl();
> 201:         navigation.initializePageIndicators();

Minor: would it make sense to move this back to the`NavigationControl` 
constructor (at the end)?

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

Marked as reviewed by kcr (Lead).

PR Review: https://git.openjdk.org/jfx/pull/1705#pullrequestreview-2610114615
PR Review Comment: https://git.openjdk.org/jfx/pull/1705#discussion_r1951646931

Reply via email to