On Fri, 19 Jun 2026 07:25:44 GMT, Marius Hanl <[email protected]> wrote:

>> This is an implementation for the long standing issue of allowing to commit 
>> a cell value when the focus is lost or the editing index (cell) changed. 
>> This also contains 
>> [JDK-8089311](https://bugs.openjdk.org/browse/JDK-8089311) (for better 
>> understanding the usecase with `TextField` cells, but we may split this 
>> later on).
>> 
>> TLDR
>> -
>> - New method `stopEdit()`
>> - Called when the editing operation was stopped or the focus is lost. 
>>   - Those two are situations where we can not guess what should happen. We 
>> do know though that cancelling the edit without further customization is 
>> wrong. Instead, developers can now decide what to do
>>   - Examples: Editing operation can be stopped by the cell container, 
>> because the developer called `edit()` with another index, or the user 
>> scrolled until the cell is reused
>>   - Default will call `cancelEdit()`
>>     -  to be backward compatible
>>     - because we do not know what value we should commit, even if we want to 
>> (subclasses will know that better)
>> - `TextFieldXXXCell`s will utilize and call `stopEdit()`, and they know 
>> exactly the value they can commit
>> 
>> Behavioral Change
>> -
>> - Developers can override `stopEdit()` and call `commitEdit()` with the 
>> desired value
>> - All `TextFieldXXXCell`s will now commit their value when the editing 
>> operation was stopped or the focus is lost
>>   - They will still always cancel their edit when Escape is pressed 
>> - Developers that subclassed `TextFieldXXXCell`s to implement their own 
>> commit-on-focus-lost handling may need to remove their custom logic. 
>>   - As all `Cell` operations that change the editing state will check the 
>> editing state (`isEditing()`) before, there might be no problem at all.
>>   - This is something I did for a lot of JavaFX projects. I guess everyone 
>> who tried to support this behavior found their way to do so
>>   - Developers can check out the `TextFieldXXXCell`s if they wish to adapt 
>> the pattern to their own cell implementations
>> 
>> ---
>> 
>> <details>
>> <summary>More about the API, Considerations and Follow Ups</summary>
>> 
>> API
>> -
>> - Instead of calling `cancelEdit`, every cell now calls `stopEdit` when the 
>> focus is lost or the editing index changed. The default behavior is 
>> cancelling the edit, but developers can now override the behavior and allow 
>> a `commitEdit` instead
>> - There are multiple 'events' that can lead to a editing change. Every 
>> change will now call `stopEdit`.
>> It is therefore the responsibility of the developer to decide, when it ...
>
> Marius Hanl has updated the pull request with a new target base due to a 
> merge or a rebase. The pull request now contains 14 commits:
> 
>  - Merge branch 'master' of https://github.com/openjdk/jfx into 
> focus-edit-stop
>    
>    # Conflicts:
>    #  modules/javafx.controls/src/main/java/javafx/scene/control/Cell.java
>  - Merge branch 'master' of https://github.com/openjdk/jfx into 
> focus-edit-stop
>  - fix tests the real way + doc
>  - review comments and test fix
>  - Merge branch 'master' of https://github.com/openjdk/jfx into 
> focus-edit-stop
>  - javadoc
>  - Improve behavior select signature, improve javadoc
>  - make it final, improve docs
>  - Merge branch 'master' of https://github.com/openjdk/jfx into 
> focus-edit-stop
>  - change the way focus is shifted
>  - ... and 4 more: https://git.openjdk.org/jfx/compare/8020a859...0d33a8b8

Marked as reviewed by angorya (Reviewer).

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

PR Review: https://git.openjdk.org/jfx/pull/1935#pullrequestreview-4545323340

Reply via email to