On Fri, 18 Aug 2023 21:48:59 GMT, Michael Strauß <mstra...@openjdk.org> wrote:
>> thank you for explanations! >> >> one more question: suppose, prior to removal of the Pane it contained a >> focused (Scene.focusOwner) Node. >> 1. once the Pane is removed, what happens to Scene.focusOwner? >> 2. once the Pane is added back, would we have an inconsistent state in >> respect to Scene.focusOwner (if some other node requested focus in the mean >> time, wouldn't we have two focused nodes?) > >> thank you for explanations! >> >> one more question: suppose, prior to removal of the Pane it contained a >> focused (Scene.focusOwner) Node. >> >> 1. once the Pane is removed, what happens to Scene.focusOwner? > > There's quite a bit of logic happening. `Scene.focusCleanup()` is a good > starting point. Basically, we need to find a new focus owner if the old focus > owner is removed from the scene graph. > >> 2. once the Pane is added back, would we have an inconsistent state in >> respect to Scene.focusOwner (if some other node requested focus in the mean >> time, wouldn't we have two focused nodes?) > > It's not inconsistent, but it wouldn't be the same state as before. The > `focused` state would remain, but `Scene.focusOwner` would not be restored to > the previous node. That part of the focus story hasn't changed with the > introduction of `focus-visible` and `focus-within`. So, in the scenario # 2, we would arrive at situation when the previously focused Node is still decorated as having the focus, but won't be getting the events since Scene.focusOwner is different? I suppose it's the way the whole thing is designed to work. Thank you for the explanations! ------------- PR Review Comment: https://git.openjdk.org/jfx/pull/1210#discussion_r1298892884