in src/main/java/com/intellij/util/ui/MenuItemLayoutHelper.java [564:599]
private void doLTRColumnLayout(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
// All rects will be aligned at the left side
calcXPositionsLTR(viewRect.x, leadingGap, gap, lr.checkRect,
lr.iconRect, lr.textRect);
// Tune afterCheckIconGap
if (lr.checkRect.width > 0) { // there is the afterCheckIconGap
lr.iconRect.x += afterCheckIconGap - gap;
lr.textRect.x += afterCheckIconGap - gap;
}
calcXPositionsRTL(viewRect.x + viewRect.width, leadingGap, gap,
lr.arrowRect, lr.accRect);
// Take into account minimal text offset
int textOffset = lr.textRect.x - viewRect.x;
if (!isTopLevelMenu && (textOffset < minTextOffset)) {
lr.textRect.x += minTextOffset - textOffset;
}
alignRects(lr, alignment);
// Set Y coordinate for text and icon.
// Y coordinates for other rects
// will be calculated later in layoutMenuItem.
calcTextAndIconYPositions(lr);
// Calculate valid X and Y coordinates for labelRect
lr.setLabelRect(lr.textRect.union(lr.iconRect));
}