Issue only exists in the Headless platform. Consider this test code:

KeyCombination combination = KeyCombination.valueOf("shortcut+,");

KeyEvent event = new KeyEvent(KeyEvent.KEY_PRESSED, "s", "S", KeyCode.S, false, 
true, false, false);
boolean match = combination.match(event);


What happens is that the KeyCombination is an instance of 
`KeyCharacterCombination`.

`KeyCharacterCombination` is special, because in its `match` function, it will 
call: 
`Toolkit.getToolkit().getKeyCodeForChar(getCharacter(), code));`
which will be delegated to the `HeadlessApplication`, which will throw an 
`UnsupportedOperationException`.

Most of the time, the `KeyCombination` is not an instance of 
`KeyCharacterCombination`, so this exception can only be reproduced with more 
special combinations like in the example with the comma.

I used the implementation we also use in `Monocle`. Rechecked with the US 
keyboard layout.

---

Trivia: JabRef found this issue when changing their tests from Monocle to 
Headless: [GHA 
run](https://github.com/JabRef/jabref/actions/runs/34032443925/job/101484543433?pr=16850)

---------
- [x] I confirm that I make this contribution in accordance with the [OpenJDK 
Interim AI Policy](https://openjdk.org/legal/ai).

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

Commit messages:
 - 8391883: Headless Tests may throw Exception when matching a 
KeyCharacterCombination

Changes: https://git.openjdk.org/jfx/pull/2297/files
  Webrev: https://webrevs.openjdk.org/?repo=jfx&pr=2297&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8391883
  Stats: 132 lines in 2 files changed: 130 ins; 0 del; 2 mod
  Patch: https://git.openjdk.org/jfx/pull/2297.diff
  Fetch: git fetch https://git.openjdk.org/jfx.git pull/2297/head:pull/2297

PR: https://git.openjdk.org/jfx/pull/2297

Reply via email to