提交 ebd5d929 编写于 作者: S serb

7186371: [macosx] Main menu shortcuts not displayed (7u6 regression)

Reviewed-by: leonidr
上级 fa5c68bf
...@@ -34,7 +34,7 @@ import javax.swing.plaf.ComponentUI; ...@@ -34,7 +34,7 @@ import javax.swing.plaf.ComponentUI;
import sun.lwawt.macosx.CMenuItem; import sun.lwawt.macosx.CMenuItem;
class ScreenMenuItem extends MenuItem implements ActionListener, ComponentListener, ScreenMenuPropertyHandler { final class ScreenMenuItem extends MenuItem implements ActionListener, ComponentListener, ScreenMenuPropertyHandler {
ScreenMenuPropertyListener fListener; ScreenMenuPropertyListener fListener;
JMenuItem fMenuItem; JMenuItem fMenuItem;
...@@ -96,21 +96,31 @@ class ScreenMenuItem extends MenuItem implements ActionListener, ComponentListen ...@@ -96,21 +96,31 @@ class ScreenMenuItem extends MenuItem implements ActionListener, ComponentListen
fMenuItem.removeComponentListener(this); fMenuItem.removeComponentListener(this);
} }
public void setAccelerator(final KeyStroke ks) { static void syncLabelAndKS(MenuItem menuItem, String label, KeyStroke ks) {
if (ks == null) { final MenuComponentPeer peer = menuItem.getPeer();
setShortcut(null); if (!(peer instanceof CMenuItem)) {
//Is it possible?
return; return;
} }
final CMenuItem cmi = (CMenuItem) peer;
final MenuComponentPeer peer = getPeer(); if (ks == null) {
if (peer instanceof CMenuItem) { cmi.setLabel(label);
final CMenuItem ourPeer = (CMenuItem)peer;
ourPeer.setLabel(fMenuItem.getText(), ks.getKeyChar(), ks.getKeyCode(), ks.getModifiers());
} else { } 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) { public void actionPerformed(final ActionEvent e) {
fMenuItem.doClick(0); // This takes care of all the different events fMenuItem.doClick(0); // This takes care of all the different events
} }
......
...@@ -36,7 +36,7 @@ import com.apple.laf.AquaMenuItemUI.IndeterminateListener; ...@@ -36,7 +36,7 @@ import com.apple.laf.AquaMenuItemUI.IndeterminateListener;
import sun.lwawt.macosx.*; 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; JMenuItem fMenuItem;
MenuContainer fParent; MenuContainer fParent;
...@@ -110,19 +110,14 @@ class ScreenMenuItemCheckbox extends CheckboxMenuItem implements ActionListener, ...@@ -110,19 +110,14 @@ class ScreenMenuItemCheckbox extends CheckboxMenuItem implements ActionListener,
super.removeNotify(); super.removeNotify();
} }
public void setAccelerator(final KeyStroke ks) { @Override
if (ks == null) { public synchronized void setLabel(final String label) {
setShortcut(null); ScreenMenuItem.syncLabelAndKS(this, label, fMenuItem.getAccelerator());
return; }
}
final MenuComponentPeer peer = getPeer(); @Override
if (peer instanceof CMenuItem) { public void setAccelerator(final KeyStroke ks) {
final CMenuItem ourPeer = (CMenuItem)peer; ScreenMenuItem.syncLabelAndKS(this, fMenuItem.getText(), ks);
ourPeer.setLabel(fMenuItem.getText(), ks.getKeyChar(), ks.getKeyCode(), ks.getModifiers());
} else {
setShortcut(new MenuShortcut(ks.getKeyCode(), (ks.getModifiers() & InputEvent.SHIFT_MASK) != 0));
}
} }
public void actionPerformed(final ActionEvent e) { public void actionPerformed(final ActionEvent e) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册