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 c6e1f548f0b7..6de964b5d83d 100644 --- a/platform/platform-api/src/com/intellij/ui/components/JBScrollPane.java +++ b/platform/platform-api/src/com/intellij/ui/components/JBScrollPane.java @@ -469,7 +469,7 @@ public class JBScrollPane extends JScrollPane { } Rectangle vsbBounds = new Rectangle(0, bounds.y - insets.top, 0, 0); if (vsb != null) { - if (!SystemInfo.isMac && view instanceof JTable) vsb.setOpaque(true); + if (!SystemInfo.isMac && ScrollSettings.isNotSupportedYet(view)) vsb.setOpaque(true); vsbOpaque = vsb.isOpaque(); if (vsbNeeded) { adjustForVSB(bounds, insets, vsbBounds, vsbOpaque, vsbOnLeft); @@ -489,7 +489,7 @@ public class JBScrollPane extends JScrollPane { } Rectangle hsbBounds = new Rectangle(bounds.x - insets.left, 0, 0, 0); if (hsb != null) { - if (!SystemInfo.isMac && view instanceof JTable) hsb.setOpaque(true); + if (!SystemInfo.isMac && ScrollSettings.isNotSupportedYet(view)) hsb.setOpaque(true); hsbOpaque = hsb.isOpaque(); if (hsbNeeded) { adjustForHSB(bounds, insets, hsbBounds, hsbOpaque, hsbOnTop); @@ -561,7 +561,7 @@ public class JBScrollPane extends JScrollPane { if (hsbOpaque) { Component corner = hsbOnTop ? (vsbOnLeft ? upperRight : upperLeft) : (vsbOnLeft ? lowerRight : lowerLeft); fillLowerCorner = corner == null && UIManager.getBoolean("ScrollPane.fillLowerCorner"); - if (!fillLowerCorner && ScrollSettings.isHeaderOverCorner(rowHead)) { + if (!fillLowerCorner && ScrollSettings.isHeaderOverCorner(viewport)) { if (hsbOnTop) rowHeadBounds.y -= hsbBounds.height; rowHeadBounds.height += hsbBounds.height; } @@ -577,7 +577,7 @@ public class JBScrollPane extends JScrollPane { if (vsbOpaque) { Component corner = vsbOnLeft ? (hsbOnTop ? lowerLeft : upperLeft) : (hsbOnTop ? lowerRight : upperRight); fillUpperCorner = corner == null && UIManager.getBoolean("ScrollPane.fillUpperCorner"); - if (!fillUpperCorner && ScrollSettings.isHeaderOverCorner(colHead)) { + if (!fillUpperCorner && ScrollSettings.isHeaderOverCorner(viewport)) { if (vsbOnLeft) colHeadBounds.x -= vsbBounds.width; colHeadBounds.width += vsbBounds.width; } diff --git a/platform/platform-api/src/com/intellij/ui/components/JBViewport.java b/platform/platform-api/src/com/intellij/ui/components/JBViewport.java index c6139a3f0485..e150382bc537 100644 --- a/platform/platform-api/src/com/intellij/ui/components/JBViewport.java +++ b/platform/platform-api/src/com/intellij/ui/components/JBViewport.java @@ -380,7 +380,7 @@ public class JBViewport extends JViewport implements ZoomableViewport { } private static void updateBorder(Component view) { - if (view instanceof JTable) return; // tables are not supported yet + if (ScrollSettings.isNotSupportedYet(view)) return; if (view instanceof JComponent) { JComponent component = (JComponent)view; Border border = component.getBorder(); @@ -471,7 +471,7 @@ public class JBViewport extends JViewport implements ZoomableViewport { if (vsb != null && vsb.isVisible()) { boolean opaque = vsb.isOpaque(); if (viewport == pane.getColumnHeader() - ? (!opaque || ScrollSettings.isHeaderOverCorner(viewport)) + ? (!opaque || ScrollSettings.isHeaderOverCorner(pane.getViewport())) : (!opaque && viewport == pane.getViewport())) { Alignment va = UIUtil.getClientProperty(vsb, Alignment.class); if (va == Alignment.LEFT) { @@ -487,7 +487,7 @@ public class JBViewport extends JViewport implements ZoomableViewport { if (hsb != null && hsb.isVisible()) { boolean opaque = hsb.isOpaque(); if (viewport == pane.getRowHeader() - ? (!opaque || ScrollSettings.isHeaderOverCorner(viewport)) + ? (!opaque || ScrollSettings.isHeaderOverCorner(pane.getViewport())) : (!opaque && viewport == pane.getViewport())) { Alignment ha = UIUtil.getClientProperty(hsb, Alignment.class); if (ha == Alignment.TOP) { diff --git a/platform/platform-api/src/com/intellij/ui/components/ScrollSettings.java b/platform/platform-api/src/com/intellij/ui/components/ScrollSettings.java index 3e5c5f47cc42..57a92829e46a 100644 --- a/platform/platform-api/src/com/intellij/ui/components/ScrollSettings.java +++ b/platform/platform-api/src/com/intellij/ui/components/ScrollSettings.java @@ -24,8 +24,8 @@ import com.intellij.openapi.util.registry.RegistryValue; import javax.swing.JDialog; import javax.swing.JScrollBar; +import javax.swing.JTable; import javax.swing.JViewport; -import javax.swing.table.JTableHeader; import javax.swing.RootPaneContainer; import java.awt.Component; import java.awt.Container; @@ -75,8 +75,12 @@ final class ScrollSettings { } static boolean isHeaderOverCorner(JViewport viewport) { - if (viewport.getView() instanceof JTableHeader) return false; - return HEADER_OVER_CORNER.asBoolean(); + Component view = viewport == null ? null : viewport.getView(); + return !isNotSupportedYet(view) && HEADER_OVER_CORNER.asBoolean(); + } + + static boolean isNotSupportedYet(Component view) { + return view instanceof JTable; } static boolean isGapNeededForAnyComponent() {