From 38d853b5b280c7f07567b4296a6ea02995bf5ed4 Mon Sep 17 00:00:00 2001 From: Karl Tauber Date: Wed, 22 Jul 2020 23:23:46 +0200 Subject: [PATCH] Window decorations: fixed maximized window bounds with Java 11.0.8 and 13.0.4, which has fixes backported from Java 15 (issue #129) --- .../com/formdev/flatlaf/ui/FlatTitlePane.java | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTitlePane.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTitlePane.java index 16fcf6ab..1d6295aa 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTitlePane.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTitlePane.java @@ -472,7 +472,7 @@ public class FlatTitlePane int maximizedWidth = screenBounds.width; int maximizedHeight = screenBounds.height; - if( !SystemInfo.isJava_15_orLater ) { + if( !isMaximizedBoundsFixed() ) { // on Java 8 to 14, maximized x,y are 0,0 based on all screens in a multi-screen environment maximizedX = 0; maximizedY = 0; @@ -509,6 +509,21 @@ public class FlatTitlePane } } + /** + * Frame.setMaximizedBounds() behaves different on some Java versions after issues + * https://bugs.openjdk.java.net/browse/JDK-8231564 and + * https://bugs.openjdk.java.net/browse/JDK-8176359 + * (see also https://bugs.java.com/bugdatabase/view_bug.do?bug_id=8176359) + * were fixed in Java 15 and backported to 11.0.8 and 13.0.4. + */ + private boolean isMaximizedBoundsFixed() { + return SystemInfo.isJava_15_orLater || + (SystemInfo.javaVersion >= SystemInfo.toVersion( 11, 0, 8, 0 ) && + SystemInfo.javaVersion < SystemInfo.toVersion( 12, 0, 0, 0 )) || + (SystemInfo.javaVersion >= SystemInfo.toVersion( 13, 0, 4, 0 ) && + SystemInfo.javaVersion < SystemInfo.toVersion( 14, 0, 0, 0 )); + } + /** * Restores the window size. */