From 9693260ae68ab9b56dea8af0f57b0ab66500c022 Mon Sep 17 00:00:00 2001 From: Sam Carlberg Date: Sat, 31 Dec 2016 00:28:29 -0500 Subject: [PATCH] Fix save dialog not appearing when closing an edited project (#689) * Fix save dialog not appearing when closing an edited project Closes #660 Closes #688 --- ui/src/main/java/edu/wpi/grip/ui/Main.java | 2 -- .../java/edu/wpi/grip/ui/MainWindowController.java | 10 +++++++++- ui/src/main/resources/edu/wpi/grip/ui/MainWindow.fxml | 6 +----- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/ui/src/main/java/edu/wpi/grip/ui/Main.java b/ui/src/main/java/edu/wpi/grip/ui/Main.java index 09030701f2..7c6e04c952 100644 --- a/ui/src/main/java/edu/wpi/grip/ui/Main.java +++ b/ui/src/main/java/edu/wpi/grip/ui/Main.java @@ -127,8 +127,6 @@ public void start(Stage stage) throws IOException { } }); - // If this isn't here this can cause a deadlock on windows. See issue #297 - stage.setOnCloseRequest(event -> SafeShutdown.exit(0, Platform::exit)); stage.setTitle(MAIN_TITLE); stage.getIcons().add(new Image("/edu/wpi/grip/ui/icons/grip.png")); stage.setScene(new Scene(root)); diff --git a/ui/src/main/java/edu/wpi/grip/ui/MainWindowController.java b/ui/src/main/java/edu/wpi/grip/ui/MainWindowController.java index 4a29fb2984..fe54a4b30d 100644 --- a/ui/src/main/java/edu/wpi/grip/ui/MainWindowController.java +++ b/ui/src/main/java/edu/wpi/grip/ui/MainWindowController.java @@ -120,6 +120,12 @@ protected void initialize() { statusLabel.setText("Pipeline " + stateMessage); analyzeMenuItem.setDisable(state.equals(Service.State.TERMINATED)); }), Platform::runLater); + Platform.runLater(() -> root.getScene().getWindow().setOnCloseRequest(e -> { + if (!quit()) { + // Asked to quit but cancelled, consume the event to avoid closing the window + e.consume(); + } + })); } /** @@ -278,11 +284,13 @@ protected void showProjectAboutDialog() throws IOException { } @FXML - protected void quit() { + protected boolean quit() { if (showConfirmationDialogAndWait()) { pipelineRunner.stopAsync(); SafeShutdown.exit(0); + return true; } + return false; } /** diff --git a/ui/src/main/resources/edu/wpi/grip/ui/MainWindow.fxml b/ui/src/main/resources/edu/wpi/grip/ui/MainWindow.fxml index ebdd5e9830..5e29d16b48 100644 --- a/ui/src/main/resources/edu/wpi/grip/ui/MainWindow.fxml +++ b/ui/src/main/resources/edu/wpi/grip/ui/MainWindow.fxml @@ -98,11 +98,7 @@ - - - - - +