in src/main/java/com/intellij/util/ui/MenuItemLayoutHelper.java [630:665]
private void doRTLColumnLayout(LayoutResult lr, ColumnAlignment alignment) {
// Set maximal width for all the five basic rects
// (three other ones are already maximal)
lr.iconRect.width = iconSize.maxWidth;
lr.textRect.width = textSize.maxWidth;
// Set X coordinates
calcXPositionsRTL(viewRect.x + viewRect.width, leadingGap, gap,
lr.checkRect, lr.iconRect, lr.textRect);
// Tune the gap after check icon
if (lr.checkRect.width > 0) { // there is the gap after check icon
lr.iconRect.x -= afterCheckIconGap - gap;
lr.textRect.x -= afterCheckIconGap - gap;
}
calcXPositionsLTR(viewRect.x, leadingGap, gap, lr.arrowRect,
lr.accRect);
// Take into account minimal text offset
int textOffset = (viewRect.x + viewRect.width)
- (lr.textRect.x + lr.textRect.width);
if (!isTopLevelMenu && (textOffset < minTextOffset)) {
lr.textRect.x -= minTextOffset - textOffset;
}
alignRects(lr, alignment);
// Set Y coordinates for text and icon.
// Y coordinates for other rects
// will be calculated later in layoutMenuItem.
calcTextAndIconYPositions(lr);
// Calculate valid X and Y coordinate for labelRect
lr.setLabelRect(lr.textRect.union(lr.iconRect));
}