add border to undecorated stages on windows

This commit is contained in:
Craig Raw 2022-02-10 12:21:36 +02:00
parent 2ca286d826
commit cb8164c27f
2 changed files with 16 additions and 3 deletions

View file

@ -61,7 +61,8 @@ import javafx.scene.control.*;
import javafx.scene.image.Image; import javafx.scene.image.Image;
import javafx.scene.image.ImageView; import javafx.scene.image.ImageView;
import javafx.scene.input.*; import javafx.scene.input.*;
import javafx.scene.layout.StackPane; import javafx.scene.layout.*;
import javafx.scene.paint.Color;
import javafx.stage.*; import javafx.stage.*;
import javafx.util.Duration; import javafx.util.Duration;
import org.controlsfx.control.Notifications; import org.controlsfx.control.Notifications;
@ -419,9 +420,13 @@ public class AppController implements Initializable {
private Stage getAboutStage() { private Stage getAboutStage() {
try { try {
FXMLLoader loader = new FXMLLoader(AppController.class.getResource("about.fxml")); FXMLLoader loader = new FXMLLoader(AppController.class.getResource("about.fxml"));
Parent root = loader.load(); StackPane root = loader.load();
AboutController controller = loader.getController(); AboutController controller = loader.getController();
if(org.controlsfx.tools.Platform.getCurrent() == org.controlsfx.tools.Platform.WINDOWS) {
root.setBorder(new Border(new BorderStroke(Color.DARKGRAY, BorderStrokeStyle.SOLID, CornerRadii.EMPTY, BorderWidths.DEFAULT)));
}
Stage stage = new Stage(StageStyle.UNDECORATED); Stage stage = new Stage(StageStyle.UNDECORATED);
stage.setTitle("About " + MainApp.APP_NAME); stage.setTitle("About " + MainApp.APP_NAME);
stage.initOwner(tabs.getScene().getWindow()); stage.initOwner(tabs.getScene().getWindow());

View file

@ -32,6 +32,7 @@ import javafx.scene.control.Label;
import javafx.scene.control.Tooltip; import javafx.scene.control.Tooltip;
import javafx.scene.input.MouseEvent; import javafx.scene.input.MouseEvent;
import javafx.scene.layout.*; import javafx.scene.layout.*;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle; import javafx.scene.shape.Circle;
import javafx.scene.shape.CubicCurve; import javafx.scene.shape.CubicCurve;
import javafx.scene.shape.Line; import javafx.scene.shape.Line;
@ -41,6 +42,7 @@ import javafx.stage.StageStyle;
import javafx.util.Duration; import javafx.util.Duration;
import org.controlsfx.glyphfont.FontAwesome; import org.controlsfx.glyphfont.FontAwesome;
import org.controlsfx.glyphfont.Glyph; import org.controlsfx.glyphfont.Glyph;
import org.controlsfx.tools.Platform;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -75,6 +77,11 @@ public class TransactionDiagram extends GridPane {
stage.initModality(Modality.WINDOW_MODAL); stage.initModality(Modality.WINDOW_MODAL);
stage.setResizable(false); stage.setResizable(false);
StackPane scenePane = new StackPane();
if(Platform.getCurrent() == Platform.WINDOWS) {
scenePane.setBorder(new Border(new BorderStroke(Color.DARKGRAY, BorderStrokeStyle.SOLID, CornerRadii.EMPTY, BorderWidths.DEFAULT)));
}
VBox vBox = new VBox(20); VBox vBox = new VBox(20);
vBox.getStylesheets().add(AppServices.class.getResource("general.css").toExternalForm()); vBox.getStylesheets().add(AppServices.class.getResource("general.css").toExternalForm());
if(Config.get().getTheme() == Theme.DARK) { if(Config.get().getTheme() == Theme.DARK) {
@ -97,8 +104,9 @@ public class TransactionDiagram extends GridPane {
}); });
buttonBox.getChildren().add(button); buttonBox.getChildren().add(button);
vBox.getChildren().addAll(expandedDiagram, buttonBox); vBox.getChildren().addAll(expandedDiagram, buttonBox);
scenePane.getChildren().add(vBox);
Scene scene = new Scene(vBox); Scene scene = new Scene(scenePane);
AppServices.onEscapePressed(scene, stage::close); AppServices.onEscapePressed(scene, stage::close);
AppServices.setStageIcon(stage); AppServices.setStageIcon(stage);
stage.setScene(scene); stage.setScene(scene);