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
