ui: fix editor tabs height for multiple rows & rows > 2 + text vertical alignment for same case

This commit is contained in:
Alexey Pegov
2011-11-25 15:10:12 +04:00
parent af79376fef
commit 8d9fca3e85
3 changed files with 27 additions and 3 deletions
@@ -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;
}
}
}
}
@@ -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;
@@ -111,7 +111,18 @@ public class TableLayout extends TabLayout {
return data;
}
public boolean isLastRow(TabInfo info) {
if (info == null) return false;
List<TableRow> 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<TabInfo> visibleInfos) {
myTabs.resetLayout(true);