The Mac platform code figures out where characters are on the keyboard as the 
user types. The character table is updated on every key press by calling a 
registerKeyEvent: in GlassApplication. This character table is used to resolve 
KeyCharacterCombination accelerators like Cmd + "+".

On a US English layout when the user types Cmd + "+" on the main keyboard 
they're actually typing Cmd + "=". There's special handling in macOS for this 
combination that can cause two NSEvents to be sent and so there's special 
handling in the Glass code so we don't process both events. When this special 
case is invoked registerKeyEvent: isn't being called to update the character 
table. This bug was introduced when code was consolidated in PR #1528.

The fix is a simple one-liner. I've added a test for this in the 
KeyboardTest.java program. It's an isolated test because it requires the Robot 
to send events to hold down a modifier while a character key is pressed. I also 
updated some obsolete comments and tweaked it to test all 
KeyCharacterCombinations since they should now work reliably on all platforms.

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

Commit messages:
 - Fixed Cmd + "+" accelerator (again)

Changes: https://git.openjdk.org/jfx/pull/1837/files
  Webrev: https://webrevs.openjdk.org/?repo=jfx&pr=1837&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8360886
  Stats: 117 lines in 2 files changed: 110 ins; 3 del; 4 mod
  Patch: https://git.openjdk.org/jfx/pull/1837.diff
  Fetch: git fetch https://git.openjdk.org/jfx.git pull/1837/head:pull/1837

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

Reply via email to