diff --git a/platform/diff-impl/src/com/intellij/diff/tools/util/side/ThreesideContentPanel.java b/platform/diff-impl/src/com/intellij/diff/tools/util/side/ThreesideContentPanel.java index 7ccb46b47c91..fb23b8852706 100644 --- a/platform/diff-impl/src/com/intellij/diff/tools/util/side/ThreesideContentPanel.java +++ b/platform/diff-impl/src/com/intellij/diff/tools/util/side/ThreesideContentPanel.java @@ -22,7 +22,6 @@ import com.intellij.diff.tools.util.ThreeDiffSplitter; import com.intellij.diff.util.Side; import com.intellij.diff.util.ThreeSide; import com.intellij.openapi.editor.ex.EditorEx; -import com.intellij.util.ui.ButtonlessScrollBarUI; import org.jetbrains.annotations.CalledInAwt; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; diff --git a/platform/platform-api/src/com/intellij/ui/components/JBScrollPane.java b/platform/platform-api/src/com/intellij/ui/components/JBScrollPane.java index 68f4f2071b9f..063cb0245dc8 100644 --- a/platform/platform-api/src/com/intellij/ui/components/JBScrollPane.java +++ b/platform/platform-api/src/com/intellij/ui/components/JBScrollPane.java @@ -73,7 +73,6 @@ public class JBScrollPane extends JScrollPane { private static final Logger LOG = Logger.getInstance(JBScrollPane.class); private int myViewportBorderWidth = -1; - private boolean myHasOverlayScrollbars; private volatile boolean myBackgroundRequested; // avoid cyclic references public JBScrollPane(int viewportWidth) { @@ -201,11 +200,8 @@ public class JBScrollPane extends JScrollPane { @Override public boolean isOptimizedDrawingEnabled() { - if (getLayout() instanceof Layout) { - return isOptimizedDrawingEnabledFor(getVerticalScrollBar()) && - isOptimizedDrawingEnabledFor(getHorizontalScrollBar()); - } - return !myHasOverlayScrollbars; + return isOptimizedDrawingEnabledFor(getVerticalScrollBar()) && + isOptimizedDrawingEnabledFor(getHorizontalScrollBar()); } /** @@ -242,114 +238,12 @@ public class JBScrollPane extends JScrollPane { return new JBViewport(); } - @SuppressWarnings("deprecation") - @Override - public void layout() { - LayoutManager layout = getLayout(); - ScrollPaneLayout scrollLayout = layout instanceof ScrollPaneLayout ? (ScrollPaneLayout)layout : null; - - // Now we let JScrollPane layout everything as necessary - super.layout(); - - if (layout instanceof Layout) return; - - if (scrollLayout != null) { - // Now it's time to jump in and expand the viewport so it fits the whole area - // (taking into consideration corners, headers and other stuff). - myHasOverlayScrollbars = relayoutScrollbars( - this, scrollLayout, - myHasOverlayScrollbars // If last time we did relayouting, we should restore it back. - ); - } - else { - myHasOverlayScrollbars = false; - } - } - - private boolean relayoutScrollbars(@NotNull JComponent container, @NotNull ScrollPaneLayout layout, boolean forceRelayout) { - JViewport viewport = layout.getViewport(); - if (viewport == null) return false; - - JScrollBar vsb = layout.getVerticalScrollBar(); - JScrollBar hsb = layout.getHorizontalScrollBar(); - JViewport colHead = layout.getColumnHeader(); - JViewport rowHead = layout.getRowHeader(); - - Rectangle viewportBounds = viewport.getBounds(); - - boolean extendViewportUnderVScrollbar = vsb != null && shouldExtendViewportUnderScrollbar(vsb); - boolean extendViewportUnderHScrollbar = hsb != null && shouldExtendViewportUnderScrollbar(hsb); - boolean hasOverlayScrollbars = extendViewportUnderVScrollbar || extendViewportUnderHScrollbar; - - if (!hasOverlayScrollbars && !forceRelayout) return false; - - container.setComponentZOrder(viewport, container.getComponentCount() - 1); - if (vsb != null) container.setComponentZOrder(vsb, 0); - if (hsb != null) container.setComponentZOrder(hsb, 0); - - if (extendViewportUnderVScrollbar) { - int x2 = Math.max(vsb.getX() + vsb.getWidth(), viewportBounds.x + viewportBounds.width); - viewportBounds.x = Math.min(viewportBounds.x, vsb.getX()); - viewportBounds.width = x2 - viewportBounds.x; - } - if (extendViewportUnderHScrollbar) { - int y2 = Math.max(hsb.getY() + hsb.getHeight(), viewportBounds.y + viewportBounds.height); - viewportBounds.y = Math.min(viewportBounds.y, hsb.getY()); - viewportBounds.height = y2 - viewportBounds.y; - } - - if (extendViewportUnderVScrollbar) { - if (hsb != null) { - Rectangle scrollbarBounds = hsb.getBounds(); - scrollbarBounds.width = viewportBounds.x + viewportBounds.width - scrollbarBounds.x; - hsb.setBounds(scrollbarBounds); - } - if (colHead != null) { - Rectangle headerBounds = colHead.getBounds(); - headerBounds.width = viewportBounds.width; - colHead.setBounds(headerBounds); - } - hideFromView(layout.getCorner(UPPER_RIGHT_CORNER)); - hideFromView(layout.getCorner(LOWER_RIGHT_CORNER)); - } - if (extendViewportUnderHScrollbar) { - if (vsb != null) { - Rectangle scrollbarBounds = vsb.getBounds(); - scrollbarBounds.height = viewportBounds.y + viewportBounds.height - scrollbarBounds.y; - vsb.setBounds(scrollbarBounds); - } - if (rowHead != null) { - Rectangle headerBounds = rowHead.getBounds(); - headerBounds.height = viewportBounds.height; - rowHead.setBounds(headerBounds); - } - - hideFromView(layout.getCorner(LOWER_LEFT_CORNER)); - hideFromView(layout.getCorner(LOWER_RIGHT_CORNER)); - } - - viewport.setBounds(viewportBounds); - - return hasOverlayScrollbars; - } - - private boolean shouldExtendViewportUnderScrollbar(@Nullable JScrollBar scrollbar) { - if (scrollbar == null || !scrollbar.isVisible()) return false; - return isOverlaidScrollbar(scrollbar); - } - + @Deprecated protected boolean isOverlaidScrollbar(@Nullable JScrollBar scrollbar) { - if (!ButtonlessScrollBarUI.isMacOverlayScrollbarSupported()) return false; - ScrollBarUI vsbUI = scrollbar == null ? null : scrollbar.getUI(); return vsbUI instanceof ButtonlessScrollBarUI && !((ButtonlessScrollBarUI)vsbUI).alwaysShowTrack(); } - private static void hideFromView(Component component) { - if (component == null) return; - component.setBounds(-10, -10, 1, 1); - } - private class MyScrollBar extends ScrollBar implements IdeGlassPane.TopComponent { public MyScrollBar(int orientation) { super(orientation); diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorImpl.java b/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorImpl.java index caf4c5b9facc..d90d7ef4faf4 100644 --- a/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorImpl.java @@ -7115,12 +7115,6 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi super.setupCorners(); setBorder(new TablessBorder()); } - - @Override - protected boolean isOverlaidScrollbar(@Nullable JScrollBar scrollbar) { - ScrollBarUI vsbUI = scrollbar == null ? null : scrollbar.getUI(); - return vsbUI instanceof ButtonlessScrollBarUI && !((ButtonlessScrollBarUI)vsbUI).alwaysShowTrack(); - } } private class TablessBorder extends SideBorder {