Request for review 7151821: [macosx] Mnemonic doesn't work in JTabbedPane
leonid.romanov at oracle.com
Tue Mar 13 09:26:19 PDT 2012
Thanks! I've played with javax/swing/JTabbedPane/4624207/bug4624207.java and there is an interesting thing about it: although mnemonics for switching between tabs don't work, setting focus to the "Name" text field via ctrl+alt+m works just fine. So, could it be that there is something broken about the way how JTabbedPane mnemonics are handled? I'm not an expert when it comes to mnemonics, but it seems to me that mnemonics use key codes, so they shouldn't be affected by key char value, right?
On 13.03.2012, at 20:05, Alexandr Scherbatiy wrote:
> 13.03.2012 18:35, Leonid Romanov пишет:
>> Hit "Send" too early. Basically, what you are describing in 7151821 is exactly the way JDK 6 works. So, what is wrong with it? Does it break anything?
> It is definitely a regression from the b225.
> The key listener got a KeyEvent with the key char 'a' after pressing for example the Ctrl+Alt+a.
> And it is expected that the key char should be 'a' in this case.
> In the latest build the key char is not 'a' for a KeyEvent.
> The test case with the KeyListener installed to the JPanel is described in the issue 7151821:
> The Alt+Key combination is a system combination on Mac and can't be used for mnemonics.
> It seems that the Mac OS X is not friendly to the Java mnemonics.
> Here is some comments from the document:
> Using mnemonics is discouraged in Mac OS X, because mnemonics violate the principles of Mac OS X Human Interface Guidelines. If you are developing a Java application for multiple platforms and some of those platforms recommend the use of mnemonics, just include a single setMnemonics() method that is conditionally called (based on the platform) when constructing your interface.
> Note: Since the ALT_MASK modifier is the Option key in Mac OS X, Control-Alt masks set for Windows become Command-Option masks if you use getMenuShortcutKeyMask() in conjunction with ALT_MASK.
> So the Ctrl+Alt+char used for the mnemonics on all tests instead of the Alt+char.
>> On 13.03.2012, at 19:24, Leonid Romanov wrote:
>>> What is the test case for this issue? What Control+alt+char is supposed to do?
>>> On 13.03.2012, at 17:13, Alexander Scherbatiy wrote:
>>>> Please review a fix for 7151821.
>>>> webrev: http://cr.openjdk.java.net/~alexsch/7151821/webrev.00/
>>>> This is a fix for regression after switching using [event charactersIgnoringModifiers] string to [event characters] during the MACOSX_PORT-568 issue fixing:
>>>> The characters string is null during Ctrl+Alt+Char mnemonic pressing.
>>>> According to the NSEvent charactersIgnoringModifiers doc:
>>>> This method returns the non-modifier key character pressed for dead keys, such as Option-e.
>>>> For example, Option-e (no shift key) returns an “e" for this method, whereas the characters method returns an empty string.
>>>> The fix uses the charactersIgnoringModifiers string for the keychar when the Ctrl+Alt mnemonic key combination is pressed.
More information about the macosx-port-dev