From 8ecbba1003888cfac85237e79e8a99248a1f4f7e Mon Sep 17 00:00:00 2001 From: Shuanglei Tao Date: Thu, 9 Aug 2018 23:41:56 +0800 Subject: [PATCH] Remove native window border on osx --- .../java/org/jackhuang/hmcl/ui/Decorator.java | 24 +++++++++++-------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/Decorator.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/Decorator.java index f11db1796..da9168a8f 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/Decorator.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/Decorator.java @@ -171,14 +171,7 @@ public final class Decorator extends StackPane implements TaskExecutorDialogWiza onCloseButtonAction = new SimpleObjectProperty<>(this, "onCloseButtonAction", Launcher::stopApplication); - switch (OperatingSystem.CURRENT_OS) { - case OSX: - titleContainer.setRight(null); - break; - default: - primaryStage.initStyle(StageStyle.UNDECORATED); - break; - } + primaryStage.initStyle(StageStyle.UNDECORATED); btnClose.setGraphic(close); btnMin.setGraphic(minus); btnMax.setGraphic(resizeMax); @@ -310,11 +303,22 @@ public final class Decorator extends StackPane implements TaskExecutorDialogWiza } return Optional.empty(); } + + private boolean isMaximized() { + switch (OperatingSystem.CURRENT_OS) { + case OSX: + Rectangle2D bounds = Screen.getPrimary().getVisualBounds(); + return primaryStage.getWidth() >= bounds.getWidth() && primaryStage.getHeight() >= bounds.getHeight(); + default: + return primaryStage.isMaximized(); + } + } + // ==== @FXML private void onMouseMoved(MouseEvent mouseEvent) { - if (!primaryStage.isMaximized() && !primaryStage.isFullScreen() && !maximized) { + if (!isMaximized() && !primaryStage.isFullScreen() && !maximized) { if (!primaryStage.isResizable()) updateInitMouseValues(mouseEvent); else { @@ -363,7 +367,7 @@ public final class Decorator extends StackPane implements TaskExecutorDialogWiza private void onMouseDragged(MouseEvent mouseEvent) { this.isDragging = true; if (mouseEvent.isPrimaryButtonDown() && (this.xOffset != -1.0 || this.yOffset != -1.0)) { - if (!this.primaryStage.isFullScreen() && !mouseEvent.isStillSincePress() && !this.primaryStage.isMaximized() && !this.maximized) { + if (!this.primaryStage.isFullScreen() && !mouseEvent.isStillSincePress() && !isMaximized() && !this.maximized) { this.newX = mouseEvent.getScreenX(); this.newY = mouseEvent.getScreenY(); double deltaX = this.newX - this.initX;