From 22d9ed3e83705c9fd993a32ff5bc4cf2340c3e71 Mon Sep 17 00:00:00 2001 From: Julia Beliaeva Date: Sun, 9 Oct 2016 23:55:16 +0300 Subject: [PATCH] [vcs-log] more precise author column width calculation Take text style into account during calculation. --- .../intellij/vcs/log/ui/frame/VcsLogGraphTable.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/frame/VcsLogGraphTable.java b/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/frame/VcsLogGraphTable.java index 6274a6fe86c1..3285dd1d161d 100644 --- a/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/frame/VcsLogGraphTable.java +++ b/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/frame/VcsLogGraphTable.java @@ -74,6 +74,9 @@ import java.util.Date; import java.util.EventObject; import java.util.List; +import static com.intellij.vcs.log.VcsLogHighlighter.TextStyle.BOLD; +import static com.intellij.vcs.log.VcsLogHighlighter.TextStyle.ITALIC; + public class VcsLogGraphTable extends TableWithProgress implements DataProvider, CopyProvider { private static final Logger LOG = Logger.getInstance(VcsLogGraphTable.class); @@ -183,7 +186,15 @@ public class VcsLogGraphTable extends TableWithProgress implements DataProvider, int maxWidth = 0; for (int row = 0; row < maxRowsToCheck; row++) { String value = getModel().getValueAt(row, i).toString(); - maxWidth = Math.max(getFontMetrics(tableFont.deriveFont(Font.BOLD)).stringWidth(value), maxWidth); + Font font = tableFont; + VcsLogHighlighter.TextStyle style = getStyle(row, i, value, false, false).getTextStyle(); + if (BOLD.equals(style)) { + font = tableFont.deriveFont(Font.BOLD); + } + else if (ITALIC.equals(style)) { + font = tableFont.deriveFont(Font.ITALIC); + } + maxWidth = Math.max(getFontMetrics(font).stringWidth(value + "*"), maxWidth); if (!value.isEmpty()) sizeCalculated = true; } int min = Math.min(maxWidth + myStringCellRenderer.getHorizontalTextPadding(), MAX_DEFAULT_AUTHOR_COLUMN_WIDTH);