RFR: 8290310: ChangeListener events are incorrect or misleading when a nested change occurs [v2]
John Hendrikx
jhendrikx at openjdk.org
Tue Jan 3 09:42:05 UTC 2023
> This contains the following:
> - Nested changes or invalidations using ExpressionHelper are delayed until the current emission completes
> - This fixes odd change events being produced (with incorrect oldValue)
> - Also fixes a bug in ExpressionHelper where a nested change would unlock the listener list early, which could cause a `ConcurrentModificationException` if a nested change was combined with a remove/add listener call
> - A test for ExpressionHelper to verify the new behavior
> - A test for all *Property and *Binding classes that verifies correct listener behavior at the API level (this tests gets 85% coverage on ExpressionHelper on its own, the only thing it is not testing is the locking behavior, which is not relevant at the API level).
> - A fix for `WebColorFieldSkin` which triggered a nested change which used a flag to prevent an event loop (I've changed it now to match how `DoubleFieldSkin` and `IntegerFieldSkin` do it
John Hendrikx has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains two commits:
- Merge branch 'master' of https://git.openjdk.org/jfx into feature/delayed-nested-emission
- Delay nested event emission
-------------
Changes: https://git.openjdk.org/jfx/pull/837/files
Webrev: https://webrevs.openjdk.org/?repo=jfx&pr=837&range=01
Stats: 505 lines in 4 files changed: 466 ins; 12 del; 27 mod
Patch: https://git.openjdk.org/jfx/pull/837.diff
Fetch: git fetch https://git.openjdk.org/jfx pull/837/head:pull/837
PR: https://git.openjdk.org/jfx/pull/837
More information about the openjfx-dev
mailing list