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 3f2e37e5fb0b..563206339b48 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 @@ -51,7 +51,7 @@ public class JBEditorTabs extends JBTabsImpl { @Override protected SingleRowLayout createSingleRowLayout() { - if (ApplicationManager.getApplication().isInternal()) { + if (ApplicationManager.getApplication().isInternal() || Registry.is("editor.use.scrollable.tabs")) { return new ScrollableSingleRowLayout(this); } return super.createSingleRowLayout(); diff --git a/platform/platform-api/src/com/intellij/ui/tabs/impl/singleRow/SingleRowLayout.java b/platform/platform-api/src/com/intellij/ui/tabs/impl/singleRow/SingleRowLayout.java index 62e17a6e6982..4866587f3059 100644 --- a/platform/platform-api/src/com/intellij/ui/tabs/impl/singleRow/SingleRowLayout.java +++ b/platform/platform-api/src/com/intellij/ui/tabs/impl/singleRow/SingleRowLayout.java @@ -48,10 +48,13 @@ public class SingleRowLayout extends TabLayout { @Override protected int getIconY(Rectangle iconRec) { - return super.getIconY(iconRec) + - (myTabs.getTabsPosition() == JBTabsPosition.bottom - ? TabsUtil.ACTIVE_TAB_UNDERLINE_HEIGHT - : -(TabsUtil.ACTIVE_TAB_UNDERLINE_HEIGHT / 2)); + final int shift; + switch (myTabs.getTabsPosition()) { + case bottom: shift = TabsUtil.ACTIVE_TAB_UNDERLINE_HEIGHT; break; + case top: shift = -(TabsUtil.ACTIVE_TAB_UNDERLINE_HEIGHT / 2); break; + default: shift = 0; + } + return super.getIconY(iconRec) + shift; } }; public JPopupMenu myMorePopup; @@ -352,6 +355,9 @@ public class SingleRowLayout extends TabLayout { protected void calculateRequiredLength(SingleRowPassInfo data) { for (TabInfo eachInfo : data.myVisibleInfos) { data.requiredLength += getRequiredLength(eachInfo); + if (myTabs.getTabsPosition() == JBTabsPosition.left || myTabs.getTabsPosition() == JBTabsPosition.right) { + data.requiredLength -= 1; + } data.toLayout.add(eachInfo); } } diff --git a/platform/platform-resources-en/src/misc/registry.properties b/platform/platform-resources-en/src/misc/registry.properties index 5d3b9c9d41b2..7d70a217aae2 100644 --- a/platform/platform-resources-en/src/misc/registry.properties +++ b/platform/platform-resources-en/src/misc/registry.properties @@ -105,6 +105,7 @@ editor.balloonHints=true editor.mouseSelectionStateResetTimeout=1000 editor.mouseSelectionStateResetDeadZone=4 editor.use.new.tabs=true +editor.use.scrollable.tabs=true editor.smarterSelectionQuoting=true editor.skip.copy.and.cut.for.empty.selection=false