Window decorations: hide window border if window is maximized

This commit is contained in:
Karl Tauber
2020-07-01 12:11:53 +02:00
parent 65b54ced7a
commit 019804407b
2 changed files with 23 additions and 2 deletions

View File

@@ -4,8 +4,8 @@ FlatLaf Change Log
## Unreleased ## Unreleased
- Hide focus indicator when window is inactive. - Hide focus indicator when window is inactive.
- Improved/fixed window border color in dark themes in custom window - Custom window decorations: Improved/fixed window border color in dark themes.
decorations. - Custom window decorations: Hide window border if window is maximized.
## 0.37 ## 0.37

View File

@@ -20,6 +20,7 @@ import java.awt.Color;
import java.awt.Component; import java.awt.Component;
import java.awt.Container; import java.awt.Container;
import java.awt.Dimension; import java.awt.Dimension;
import java.awt.Frame;
import java.awt.Graphics; import java.awt.Graphics;
import java.awt.Graphics2D; import java.awt.Graphics2D;
import java.awt.Insets; import java.awt.Insets;
@@ -334,8 +335,21 @@ public class FlatRootPaneUI
super( 1, 1, 1, 1 ); super( 1, 1, 1, 1 );
} }
@Override
public Insets getBorderInsets( Component c, Insets insets ) {
if( isWindowMaximized( c ) ) {
// hide border if window is maximized
insets.top = insets.left = insets.bottom = insets.right = 0;
return insets;
} else
return super.getBorderInsets( c, insets );
}
@Override @Override
public void paintBorder( Component c, Graphics g, int x, int y, int width, int height ) { public void paintBorder( Component c, Graphics g, int x, int y, int width, int height ) {
if( isWindowMaximized( c ) )
return;
Container parent = c.getParent(); Container parent = c.getParent();
boolean active = parent instanceof Window ? ((Window)parent).isActive() : false; boolean active = parent instanceof Window ? ((Window)parent).isActive() : false;
@@ -346,5 +360,12 @@ public class FlatRootPaneUI
private void paintImpl( Graphics2D g, int x, int y, int width, int height, double scaleFactor ) { private void paintImpl( Graphics2D g, int x, int y, int width, int height, double scaleFactor ) {
g.drawRect( x, y, width - 1, height - 1 ); g.drawRect( x, y, width - 1, height - 1 );
} }
protected boolean isWindowMaximized( Component c ) {
Container parent = c.getParent();
return parent instanceof Frame
? (((Frame)parent).getExtendedState() & Frame.MAXIMIZED_BOTH) != 0
: false;
}
} }
} }