6736649: test/closed/javax/swing/JMenuItem/6458123/ManualBug6458123.java fails on Linux
Now text bearings are taken into account when labelRect width is calculated Reviewed-by: alexp
This commit is contained in:
parent
189c383d48
commit
b6db0aad85
@ -195,6 +195,7 @@ class SynthMenuItemLayoutHelper extends MenuItemLayoutHelper {
|
||||
getHorizontalAlignment(), getVerticalAlignment(),
|
||||
getHorizontalTextPosition(), getVerticalTextPosition(),
|
||||
getViewRect(), iconRect, textRect, getGap());
|
||||
textRect.width += getLeftTextExtraWidth() + getRightTextExtraWidth();
|
||||
Rectangle labelRect = iconRect.union(textRect);
|
||||
getLabelSize().setHeight(labelRect.height);
|
||||
getLabelSize().setWidth(labelRect.width);
|
||||
|
@ -83,6 +83,9 @@ public class MenuItemLayoutHelper {
|
||||
private int afterCheckIconGap;
|
||||
private int minTextOffset;
|
||||
|
||||
private int leftTextExtraWidth;
|
||||
private int rightTextExtraWidth;
|
||||
|
||||
private Rectangle viewRect;
|
||||
|
||||
private RectSize iconSize;
|
||||
@ -143,6 +146,7 @@ public class MenuItemLayoutHelper {
|
||||
this.checkSize = new RectSize();
|
||||
this.arrowSize = new RectSize();
|
||||
this.labelSize = new RectSize();
|
||||
calcExtraWidths();
|
||||
calcWidthsAndHeights();
|
||||
setOriginalWidths();
|
||||
calcMaxWidths();
|
||||
@ -151,6 +155,29 @@ public class MenuItemLayoutHelper {
|
||||
calcMaxTextOffset(viewRect);
|
||||
}
|
||||
|
||||
private void calcExtraWidths() {
|
||||
leftTextExtraWidth = getLeftExtraWidth(text);
|
||||
rightTextExtraWidth = getRightExtraWidth(text);
|
||||
}
|
||||
|
||||
private int getLeftExtraWidth(String str) {
|
||||
int lsb = SwingUtilities2.getLeftSideBearing(mi, fm, str);
|
||||
if (lsb < 0) {
|
||||
return -lsb;
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
private int getRightExtraWidth(String str) {
|
||||
int rsb = SwingUtilities2.getRightSideBearing(mi, fm, str);
|
||||
if (rsb > 0) {
|
||||
return rsb;
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
private void setOriginalWidths() {
|
||||
iconSize.origWidth = iconSize.width;
|
||||
textSize.origWidth = textSize.width;
|
||||
@ -286,6 +313,7 @@ public class MenuItemLayoutHelper {
|
||||
verticalAlignment, horizontalAlignment,
|
||||
verticalTextPosition, horizontalTextPosition,
|
||||
viewRect, iconRect, textRect, gap);
|
||||
textRect.width += leftTextExtraWidth + rightTextExtraWidth;
|
||||
Rectangle labelRect = iconRect.union(textRect);
|
||||
labelSize.height = labelRect.height;
|
||||
labelSize.width = labelRect.width;
|
||||
@ -1089,6 +1117,14 @@ public class MenuItemLayoutHelper {
|
||||
this.labelSize = labelSize;
|
||||
}
|
||||
|
||||
public int getLeftTextExtraWidth() {
|
||||
return leftTextExtraWidth;
|
||||
}
|
||||
|
||||
public int getRightTextExtraWidth() {
|
||||
return rightTextExtraWidth;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns false if the component is a JMenu and it is a top
|
||||
* level menu (on the menubar).
|
||||
|
Loading…
Reference in New Issue
Block a user