The issue was a glaring contract violation of TextAreaSkin which throws a UnsupportedOperationException. The fix was to remove the throwing and cleanup on dispose which implies
in TextAreaBehavior: - remove the listener to focusProperty in dispose in TextAreaSkin: - register all listeners to control properties via skin api - remove installed event filter in dispose - remove direct children (here only the scrollPane) Added tests to guard the listener re-wiring (must pass before and after), and tests to expose side-effects on replacing the skin (fail before, pass after) ------------- Commit messages: - 8244419: TextAreaSkin: throws UnsupportedOperation on dispose Changes: https://git.openjdk.java.net/jfx/pull/604/files Webrev: https://webrevs.openjdk.java.net/?repo=jfx&pr=604&range=00 Issue: https://bugs.openjdk.java.net/browse/JDK-8244419 Stats: 392 lines in 8 files changed: 332 ins; 37 del; 23 mod Patch: https://git.openjdk.java.net/jfx/pull/604.diff Fetch: git fetch https://git.openjdk.java.net/jfx pull/604/head:pull/604 PR: https://git.openjdk.java.net/jfx/pull/604