On Wed, 20 Mar 2024 10:55:56 GMT, Jose Pereda <jper...@openjdk.org> wrote:
> This PR fixes the issue that after committing an edit on a > ListView/TreeView/TableView/TreeTableView control, the control might lose the > focus unexpectedly. > > For that, it refactors the > `ControlUtils::requestFocusOnControlOnlyIfCurrentFocusOwnerIsChild` method, > in order to check if the control (`ListView`, `TreeView`, `TableView`, > `TreeTableView`) should request the focus _before_ the actual focus owner > (which could be the control added to the cell to edit its content, like a > `TextField`) is removed from the cell, so the `Control::requestFocus` call, > if needed, can be still invoked after the edit commit is done (as it was done > before). > > By adding `ControlUtils::controlShouldRequestFocusIfCurrentFocusOwnerIsChild` > the `Cell::commitEdit` implementations can now query if the control should > have the focus, after `super.commitEdit(newValue);` but before firing the > `CellEditEvent` and calling `updateItem()`, and if the result is true, then > request focus after the edit commit ends (like it was done before). > > Two new tests per control have been included, to verify that the focus > remains at the control, one for edit cancel (this passes before and after the > proposed changes), one for edit commit (this fails before and passes after > including the proposed fix). This pull request has now been integrated. Changeset: 0d336063 Author: Jose Pereda <jper...@openjdk.org> URL: https://git.openjdk.org/jfx/commit/0d336063346879671e1c9fbdeed4926d69c6cf44 Stats: 443 lines in 9 files changed: 422 ins; 5 del; 16 mod 8324939: Editable TableView loses focus after commit Reviewed-by: angorya, mhanl ------------- PR: https://git.openjdk.org/jfx/pull/1411