mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
DBE-4211 do not allow expanding a row headers and column headers over the corner for JTable
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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() {
|
||||
|
||||
Reference in New Issue
Block a user