On Tue, 12 May 2026 17:18:35 GMT, Martin Fox <[email protected]> wrote:

> This PR alters the way ComboBox and Spinner deliver KeyEvents to their 
> TextField editors. When a ComboBox or Spinner is the focus owner it is the 
> target of all key events. Currently the skin installs a filter to catch key 
> events and re-fire most of them at the TextEdit. The skin copies the event, 
> fires the copy at the TextField, and then consumes the original event. This 
> confuses the system menu bar logic on macOS; only the original event can 
> trigger a menu item and that event is always being consumed.
> 
> In this PR only the original key event makes its way up and down the event 
> dispatch chain. To drive the TextField the skin delivers the event copy 
> directly to the TextField's event dispatcher and only consumes the original 
> event if the TextField consumes the copy.
> 
> ---------
> - [x] I confirm that I make this contribution in accordance with the [OpenJDK 
> Interim AI Policy](https://openjdk.org/legal/ai).

modules/javafx.controls/src/main/java/javafx/scene/control/skin/ComboBoxPopupControl.java
 line 189:

> 187: 
> 188:         EventDispatchChain chain = new EventDispatchChainImpl();
> 189:         chain.append(textField.getEventDispatcher());

you already have the dispatcher instance in L185

modules/javafx.controls/src/main/java/javafx/scene/control/skin/SpinnerSkin.java
 line 255:

> 253: 
> 254:         EventDispatchChain chain = new EventDispatchChainImpl();
> 255:         chain.append(textField.getEventDispatcher());

replace with the `dispatcher` pointer?

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

PR Review Comment: https://git.openjdk.org/jfx/pull/2166#discussion_r3250290330
PR Review Comment: https://git.openjdk.org/jfx/pull/2166#discussion_r3250294515

Reply via email to