From 8d9fca3e8501e5116e2a16c9717c540586778071 Mon Sep 17 00:00:00 2001 From: Alexey Pegov Date: Fri, 25 Nov 2011 15:10:12 +0400 Subject: [PATCH] ui: fix editor tabs height for multiple rows & rows > 2 + text vertical alignment for same case --- .../src/com/intellij/ui/tabs/impl/JBEditorTabs.java | 10 +++++++++- .../src/com/intellij/ui/tabs/impl/TabLabel.java | 7 ++++++- .../intellij/ui/tabs/impl/table/TableLayout.java | 13 ++++++++++++- 3 files changed, 27 insertions(+), 3 deletions(-) diff --git a/platform/platform-api/src/com/intellij/ui/tabs/impl/JBEditorTabs.java b/platform/platform-api/src/com/intellij/ui/tabs/impl/JBEditorTabs.java index e90c37554186..15bcc6c4ab7e 100644 --- a/platform/platform-api/src/com/intellij/ui/tabs/impl/JBEditorTabs.java +++ b/platform/platform-api/src/com/intellij/ui/tabs/impl/JBEditorTabs.java @@ -22,6 +22,7 @@ import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.ui.tabs.JBTabsPosition; import com.intellij.ui.tabs.TabInfo; import com.intellij.ui.tabs.TabsUtil; +import com.intellij.ui.tabs.impl.table.TableLayout; import com.intellij.util.ui.SameColor; import com.intellij.util.ui.UIUtil; import org.jetbrains.annotations.NotNull; @@ -74,7 +75,14 @@ public class JBEditorTabs extends JBTabsImpl { if (isSingleRow() && getPosition() == JBTabsPosition.bottom) { _y += TabsUtil.ACTIVE_TAB_UNDERLINE_HEIGHT; } else { - _height -= TabsUtil.ACTIVE_TAB_UNDERLINE_HEIGHT; + if (isSingleRow()) { + _height -= TabsUtil.ACTIVE_TAB_UNDERLINE_HEIGHT; + } else { + TabInfo info = label.getInfo(); + if (((TableLayout)getEffectiveLayout()).isLastRow(info)) { + _height -= TabsUtil.ACTIVE_TAB_UNDERLINE_HEIGHT; + } + } } } diff --git a/platform/platform-api/src/com/intellij/ui/tabs/impl/TabLabel.java b/platform/platform-api/src/com/intellij/ui/tabs/impl/TabLabel.java index 18d74df9c17d..54dd2366b569 100644 --- a/platform/platform-api/src/com/intellij/ui/tabs/impl/TabLabel.java +++ b/platform/platform-api/src/com/intellij/ui/tabs/impl/TabLabel.java @@ -31,6 +31,7 @@ import com.intellij.ui.tabs.JBTabsPosition; import com.intellij.ui.tabs.TabInfo; import com.intellij.ui.tabs.TabsUtil; import com.intellij.ui.tabs.UiDecorator; +import com.intellij.ui.tabs.impl.table.TableLayout; import com.intellij.util.PairConsumer; import com.intellij.util.ui.Centerizer; @@ -226,7 +227,11 @@ public class TabLabel extends JPanel { private int getNonSelectedOffset() { if (myTabs.isEditorTabs()) { int offset = (TabsUtil.ACTIVE_TAB_UNDERLINE_HEIGHT / 2); - return myTabs.getTabsPosition() == JBTabsPosition.bottom ? -(offset + 1) : -offset + 1; + if (myTabs.isSingleRow()) { + return myTabs.getTabsPosition() == JBTabsPosition.bottom ? -(offset + 1) : -offset + 1; + } else { + return ((TableLayout)myTabs.getEffectiveLayout()).isLastRow(getInfo()) ? -offset + 1 : offset - 1; + } } return 2; diff --git a/platform/platform-api/src/com/intellij/ui/tabs/impl/table/TableLayout.java b/platform/platform-api/src/com/intellij/ui/tabs/impl/table/TableLayout.java index c1d7fae5c1e4..d28f6b4eb91c 100644 --- a/platform/platform-api/src/com/intellij/ui/tabs/impl/table/TableLayout.java +++ b/platform/platform-api/src/com/intellij/ui/tabs/impl/table/TableLayout.java @@ -111,7 +111,18 @@ public class TableLayout extends TabLayout { return data; } - + + public boolean isLastRow(TabInfo info) { + if (info == null) return false; + List rows = myLastTableLayout.table; + if (rows.size() > 0) { + for (TabInfo tabInfo : rows.get(rows.size() - 1).myColumns) { + if (tabInfo == info) return true; + } + } + + return false; + } public LayoutPassInfo layoutTable(List visibleInfos) { myTabs.resetLayout(true);