mirror of
https://github.com/JFormDesigner/FlatLaf.git
synced 2026-02-12 23:07:15 -06:00
MenuItem on macOS: removed plus characters from accelerator text and made modifier key order conform with macOS standard (issue #141)
This commit is contained in:
@@ -29,6 +29,8 @@ FlatLaf Change Log
|
|||||||
string. (issue #134)
|
string. (issue #134)
|
||||||
- ComboBox: Fixed width of popup, which was too small if popup is wider than
|
- ComboBox: Fixed width of popup, which was too small if popup is wider than
|
||||||
combo box and vertical scroll bar is visible. (issue #137)
|
combo box and vertical scroll bar is visible. (issue #137)
|
||||||
|
- MenuItem on macOS: Removed plus characters from accelerator text and made
|
||||||
|
modifier key order conform with macOS standard. (issue #141)
|
||||||
|
|
||||||
|
|
||||||
## 0.38
|
## 0.38
|
||||||
|
|||||||
@@ -41,6 +41,7 @@ import javax.swing.text.View;
|
|||||||
import com.formdev.flatlaf.FlatLaf;
|
import com.formdev.flatlaf.FlatLaf;
|
||||||
import com.formdev.flatlaf.util.Graphics2DProxy;
|
import com.formdev.flatlaf.util.Graphics2DProxy;
|
||||||
import com.formdev.flatlaf.util.HiDPIUtils;
|
import com.formdev.flatlaf.util.HiDPIUtils;
|
||||||
|
import com.formdev.flatlaf.util.SystemInfo;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Renderer for menu items.
|
* Renderer for menu items.
|
||||||
@@ -418,36 +419,78 @@ debug*/
|
|||||||
|
|
||||||
private KeyStroke cachedAccelerator;
|
private KeyStroke cachedAccelerator;
|
||||||
private String cachedAcceleratorText;
|
private String cachedAcceleratorText;
|
||||||
|
private boolean cachedAcceleratorLeftToRight;
|
||||||
|
|
||||||
private String getAcceleratorText() {
|
private String getAcceleratorText() {
|
||||||
KeyStroke accelerator = menuItem.getAccelerator();
|
KeyStroke accelerator = menuItem.getAccelerator();
|
||||||
if( accelerator == null )
|
if( accelerator == null )
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
if( accelerator == cachedAccelerator )
|
boolean leftToRight = menuItem.getComponentOrientation().isLeftToRight();
|
||||||
|
|
||||||
|
if( accelerator == cachedAccelerator && leftToRight == cachedAcceleratorLeftToRight )
|
||||||
return cachedAcceleratorText;
|
return cachedAcceleratorText;
|
||||||
|
|
||||||
cachedAccelerator = accelerator;
|
cachedAccelerator = accelerator;
|
||||||
cachedAcceleratorText = getTextForAccelerator( accelerator );
|
cachedAcceleratorText = getTextForAccelerator( accelerator );
|
||||||
|
cachedAcceleratorLeftToRight = leftToRight;
|
||||||
|
|
||||||
return cachedAcceleratorText;
|
return cachedAcceleratorText;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected String getTextForAccelerator( KeyStroke accelerator ) {
|
protected String getTextForAccelerator( KeyStroke accelerator ) {
|
||||||
StringBuilder buf = new StringBuilder();
|
StringBuilder buf = new StringBuilder();
|
||||||
int modifiers = accelerator.getModifiers();
|
boolean leftToRight = menuItem.getComponentOrientation().isLeftToRight();
|
||||||
if( modifiers != 0 )
|
|
||||||
buf.append( InputEvent.getModifiersExText( modifiers ) ).append( acceleratorDelimiter );
|
|
||||||
|
|
||||||
|
// modifiers
|
||||||
|
int modifiers = accelerator.getModifiers();
|
||||||
|
if( modifiers != 0 ) {
|
||||||
|
if( SystemInfo.isMacOS ) {
|
||||||
|
if( leftToRight )
|
||||||
|
buf.append( getMacOSModifiersExText( modifiers, leftToRight ) );
|
||||||
|
} else
|
||||||
|
buf.append( InputEvent.getModifiersExText( modifiers ) ).append( acceleratorDelimiter );
|
||||||
|
}
|
||||||
|
|
||||||
|
// key
|
||||||
int keyCode = accelerator.getKeyCode();
|
int keyCode = accelerator.getKeyCode();
|
||||||
if( keyCode != 0 )
|
if( keyCode != 0 )
|
||||||
buf.append( KeyEvent.getKeyText( keyCode ) );
|
buf.append( KeyEvent.getKeyText( keyCode ) );
|
||||||
else
|
else
|
||||||
buf.append( accelerator.getKeyChar() );
|
buf.append( accelerator.getKeyChar() );
|
||||||
|
|
||||||
|
// modifiers if right-to-left on macOS
|
||||||
|
if( modifiers != 0 && !leftToRight && SystemInfo.isMacOS )
|
||||||
|
buf.append( getMacOSModifiersExText( modifiers, leftToRight ) );
|
||||||
|
|
||||||
return buf.toString();
|
return buf.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected String getMacOSModifiersExText( int modifiers, boolean leftToRight ) {
|
||||||
|
StringBuilder buf = new StringBuilder();
|
||||||
|
|
||||||
|
if( (modifiers & InputEvent.CTRL_DOWN_MASK) != 0 )
|
||||||
|
buf.append( controlGlyph );
|
||||||
|
if( (modifiers & (InputEvent.ALT_DOWN_MASK | InputEvent.ALT_GRAPH_DOWN_MASK)) != 0 )
|
||||||
|
buf.append( optionGlyph );
|
||||||
|
if( (modifiers & InputEvent.SHIFT_DOWN_MASK) != 0 )
|
||||||
|
buf.append( shiftGlyph );
|
||||||
|
if( (modifiers & InputEvent.META_DOWN_MASK) != 0 )
|
||||||
|
buf.append( commandGlyph );
|
||||||
|
|
||||||
|
// reverse order for right-to-left
|
||||||
|
if( !leftToRight )
|
||||||
|
buf.reverse();
|
||||||
|
|
||||||
|
return buf.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static final char
|
||||||
|
controlGlyph = 0x2303,
|
||||||
|
optionGlyph = 0x2325,
|
||||||
|
shiftGlyph = 0x21E7,
|
||||||
|
commandGlyph = 0x2318;
|
||||||
|
|
||||||
//---- class MinSizeIcon --------------------------------------------------
|
//---- class MinSizeIcon --------------------------------------------------
|
||||||
|
|
||||||
private class MinSizeIcon
|
private class MinSizeIcon
|
||||||
|
|||||||
Reference in New Issue
Block a user