RFR: 8268877: TextInputControlSkin: incorrect inputMethod event handler after switching skin

Jeanette Winzenburg fastegal at openjdk.org
Thu Nov 3 16:57:13 UTC 2022


On Tue, 27 Sep 2022 19:36:46 GMT, Andy Goryachev <angorya at openjdk.org> wrote:

> Using new Skin.install() method to properly install and uninstall inputMethodTextChanged and inputMethodRequests properties on TextInputControl.
> 
> This avoids memory leaks resulting from skin change, as well as honors user-set properties when installing an uninstalling.
> 
> This PR depends on [JDK-8290844](https://bugs.openjdk.org/browse/JDK-8290844) Skin.install().

modules/javafx.controls/src/main/java/javafx/scene/control/skin/TextInputControlSkin.java line 340:

> 338:             control.setOnInputMethodTextChanged(inputMethodTextChangedHandler);
> 339:         }
> 340: 

for the record: this pattern is incorrect (no matter _where_ the skin implements it ;) - a skin should not set a singleton event handler on its control (see [JDK-8093590](https://bugs.openjdk.org/browse/JDK-8093590)).

Not sure how we should procede in this case: moving to install fixes the issue on face value (not overwriting a user-installed handler) but not the incorrect handler registration (should be replaced by an added listener as done in the fix of JDK-8093590) - the latter could be done in a follow-up issue, adding a code comment here?

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

PR: https://git.openjdk.org/jfx/pull/903


More information about the openjfx-dev mailing list