Skip to content

Commit 9110263

Browse files
author
duke
committed
Backport fc5df4ac8f11f25611bd4def5b655578af27c882
1 parent 89c5659 commit 9110263

File tree

3 files changed

+37
-6
lines changed

3 files changed

+37
-6
lines changed

src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/WindowsIconFactory.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -914,8 +914,15 @@ public void paintIcon(Component c, Graphics g, int x, int y) {
914914
}
915915
}
916916
if (icon != null) {
917-
icon.paintIcon(c, g, x + VistaMenuItemCheckIconFactory.getIconWidth(),
918-
y + OFFSET);
917+
if (WindowsGraphicsUtils.isLeftToRight(c)) {
918+
icon.paintIcon(c, g,
919+
x + VistaMenuItemCheckIconFactory.getIconWidth(),
920+
y + OFFSET);
921+
} else {
922+
icon.paintIcon(c, g,
923+
x - VistaMenuItemCheckIconFactory.getIconWidth() + 2 * OFFSET,
924+
y + OFFSET);
925+
}
919926
}
920927
}
921928
private static WindowsMenuItemUIAccessor getAccessor(

src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/WindowsMenuItemUI.java

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
import javax.swing.JComponent;
4444
import javax.swing.JMenu;
4545
import javax.swing.JMenuItem;
46+
import javax.swing.SwingConstants;
4647
import javax.swing.UIManager;
4748
import javax.swing.plaf.ComponentUI;
4849
import javax.swing.plaf.UIResource;
@@ -218,8 +219,17 @@ static void paintMenuItem(WindowsMenuItemUIAccessor accessor, Graphics g,
218219

219220
if (lh.getCheckIcon() != null && lh.useCheckAndArrow()) {
220221
Rectangle rect = lr.getTextRect();
221-
222-
rect.x += lh.getAfterCheckIconGap();
222+
if (menuItem.getComponentOrientation().isLeftToRight()) {
223+
if (menuItem.getHorizontalTextPosition() != SwingConstants.LEADING
224+
&& menuItem.getHorizontalTextPosition() != SwingConstants.LEFT) {
225+
rect.x += lh.getAfterCheckIconGap();
226+
}
227+
} else {
228+
if (menuItem.getHorizontalTextPosition() != SwingConstants.LEADING
229+
&& menuItem.getHorizontalTextPosition() != SwingConstants.RIGHT) {
230+
rect.x -= lh.getAfterCheckIconGap();
231+
}
232+
}
223233

224234
lr.setTextRect(rect);
225235
}
@@ -235,7 +245,11 @@ static void paintMenuItem(WindowsMenuItemUIAccessor accessor, Graphics g,
235245
}
236246
if (lh.getCheckIcon() != null && lh.useCheckAndArrow()) {
237247
Rectangle rect = lr.getAccRect();
238-
rect.x += lh.getAfterCheckIconGap();
248+
if (menuItem.getComponentOrientation().isLeftToRight()) {
249+
rect.x += lh.getAfterCheckIconGap();
250+
} else {
251+
rect.x -= lh.getAfterCheckIconGap();
252+
}
239253
lr.setAccRect(rect);
240254
}
241255
SwingUtilities3.paintAccText(g, lh, lr, disabledForeground,

test/jdk/javax/swing/JMenuItem/RightLeftOrientation.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@
4545

4646
/*
4747
* @test id=windows
48-
* @bug 4211052
48+
* @bug 4211052 8370465
4949
* @requires (os.family == "windows")
5050
* @summary Verifies if menu items lay out correctly when their
5151
* ComponentOrientation property is set to RIGHT_TO_LEFT.
@@ -155,6 +155,16 @@ static void addMenuItems(JMenu menu, ComponentOrientation o) {
155155
menuItem.setHorizontalTextPosition(SwingConstants.LEADING);
156156
menu.add(menuItem);
157157

158+
menuItem = new JMenuItem("Text to the left", new MyMenuItemIcon());
159+
menuItem.setComponentOrientation(o);
160+
menuItem.setHorizontalTextPosition(SwingConstants.LEFT);
161+
menu.add(menuItem);
162+
163+
menuItem = new JMenuItem("Text to the right", new MyMenuItemIcon());
164+
menuItem.setComponentOrientation(o);
165+
menuItem.setHorizontalTextPosition(SwingConstants.RIGHT);
166+
menu.add(menuItem);
167+
158168
menuItem = new JRadioButtonMenuItem("Radio Button Menu Item");
159169
menuItem.setComponentOrientation(o);
160170
menuItem.setSelected(true);

0 commit comments

Comments
 (0)