On Wed, 29 Jun 2022 13:35:15 GMT, Marius Hanl <mh...@openjdk.org> wrote:
> For some reason the `skinProperty` did not allow to set a new skin which is > the same class as the previous one. > This leads to multiple issues: > 1. When creating a new skin (same class as previous), the skin will likely > install some children and listener but is then rejected when setting it due > to the `skinProperty` class constraint > -> Control is in a weird state as the current skin was not disposed since it > is still set, although we already created and 'set' a new skin > 2. A skin of the same class can behave differently, so it is not really valid > to reject a skin just because it is the same class as the previous > -> Just imagine we have the following skin class > > class MyCustomButtonSkin extends ButtonSkin { > public MyCustomButtonSkin(Button button, boolean someFlag) { > super(button); ... } > } > > Now if we would change the skin of the Button two times like this: > > button.setSkin(new MyCustomButtonSkin(button, true)); > button.setSkin(new MyCustomButtonSkin(button, false)); > > The second time the skin will be rejected as it is the same class, although I > may changed the skin behaviour, in this case demonstrated by a boolean flag > for showing purposes. I used the tests you wrote in comments of the ticket. Thanks! ------------- PR Comment: https://git.openjdk.org/jfx/pull/806#issuecomment-1169999580