From ebd5d9290291d5719187774dadb0b955aa429ee6 Mon Sep 17 00:00:00 2001 From: serb Date: Tue, 28 Aug 2012 16:04:27 +0400 Subject: [PATCH] 7186371: [macosx] Main menu shortcuts not displayed (7u6 regression) Reviewed-by: leonidr --- .../classes/com/apple/laf/ScreenMenuItem.java | 30 ++++++++++++------- .../com/apple/laf/ScreenMenuItemCheckbox.java | 21 +++++-------- 2 files changed, 28 insertions(+), 23 deletions(-) diff --git a/src/macosx/classes/com/apple/laf/ScreenMenuItem.java b/src/macosx/classes/com/apple/laf/ScreenMenuItem.java index 49e499786..6852ea00a 100644 --- a/src/macosx/classes/com/apple/laf/ScreenMenuItem.java +++ b/src/macosx/classes/com/apple/laf/ScreenMenuItem.java @@ -34,7 +34,7 @@ import javax.swing.plaf.ComponentUI; import sun.lwawt.macosx.CMenuItem; -class ScreenMenuItem extends MenuItem implements ActionListener, ComponentListener, ScreenMenuPropertyHandler { +final class ScreenMenuItem extends MenuItem implements ActionListener, ComponentListener, ScreenMenuPropertyHandler { ScreenMenuPropertyListener fListener; JMenuItem fMenuItem; @@ -96,21 +96,31 @@ class ScreenMenuItem extends MenuItem implements ActionListener, ComponentListen fMenuItem.removeComponentListener(this); } - public void setAccelerator(final KeyStroke ks) { - if (ks == null) { - setShortcut(null); + static void syncLabelAndKS(MenuItem menuItem, String label, KeyStroke ks) { + final MenuComponentPeer peer = menuItem.getPeer(); + if (!(peer instanceof CMenuItem)) { + //Is it possible? return; } - - final MenuComponentPeer peer = getPeer(); - if (peer instanceof CMenuItem) { - final CMenuItem ourPeer = (CMenuItem)peer; - ourPeer.setLabel(fMenuItem.getText(), ks.getKeyChar(), ks.getKeyCode(), ks.getModifiers()); + final CMenuItem cmi = (CMenuItem) peer; + if (ks == null) { + cmi.setLabel(label); } else { - setShortcut(new MenuShortcut(ks.getKeyCode(), (ks.getModifiers() & InputEvent.SHIFT_MASK) != 0)); + cmi.setLabel(label, ks.getKeyChar(), ks.getKeyCode(), + ks.getModifiers()); } } + @Override + public synchronized void setLabel(final String label) { + syncLabelAndKS(this, label, fMenuItem.getAccelerator()); + } + + @Override + public void setAccelerator(final KeyStroke ks) { + syncLabelAndKS(this, fMenuItem.getText(), ks); + } + public void actionPerformed(final ActionEvent e) { fMenuItem.doClick(0); // This takes care of all the different events } diff --git a/src/macosx/classes/com/apple/laf/ScreenMenuItemCheckbox.java b/src/macosx/classes/com/apple/laf/ScreenMenuItemCheckbox.java index 15f314e14..644eaccc7 100644 --- a/src/macosx/classes/com/apple/laf/ScreenMenuItemCheckbox.java +++ b/src/macosx/classes/com/apple/laf/ScreenMenuItemCheckbox.java @@ -36,7 +36,7 @@ import com.apple.laf.AquaMenuItemUI.IndeterminateListener; import sun.lwawt.macosx.*; -class ScreenMenuItemCheckbox extends CheckboxMenuItem implements ActionListener, ComponentListener, ScreenMenuPropertyHandler, ItemListener { +final class ScreenMenuItemCheckbox extends CheckboxMenuItem implements ActionListener, ComponentListener, ScreenMenuPropertyHandler, ItemListener { JMenuItem fMenuItem; MenuContainer fParent; @@ -110,19 +110,14 @@ class ScreenMenuItemCheckbox extends CheckboxMenuItem implements ActionListener, super.removeNotify(); } - public void setAccelerator(final KeyStroke ks) { - if (ks == null) { - setShortcut(null); - return; - } + @Override + public synchronized void setLabel(final String label) { + ScreenMenuItem.syncLabelAndKS(this, label, fMenuItem.getAccelerator()); + } - final MenuComponentPeer peer = getPeer(); - if (peer instanceof CMenuItem) { - final CMenuItem ourPeer = (CMenuItem)peer; - ourPeer.setLabel(fMenuItem.getText(), ks.getKeyChar(), ks.getKeyCode(), ks.getModifiers()); - } else { - setShortcut(new MenuShortcut(ks.getKeyCode(), (ks.getModifiers() & InputEvent.SHIFT_MASK) != 0)); - } + @Override + public void setAccelerator(final KeyStroke ks) { + ScreenMenuItem.syncLabelAndKS(this, fMenuItem.getText(), ks); } public void actionPerformed(final ActionEvent e) { -- GitLab