From e3e99b3d002e2e61472d7dfed8d996e9aa225673 Mon Sep 17 00:00:00 2001 From: Brandon Date: Sun, 25 Oct 2026 20:18:40 -0700 Subject: [PATCH] check the run is still going when the stop dialog is answered --- .../lightsheetmanager/gui/tabs/AcquisitionTab.java | 7 +++++-- .../model/acquisitions/AcquisitionEngine.java | 12 ++++++++++++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/micromanager/lightsheetmanager/gui/tabs/AcquisitionTab.java b/src/main/java/org/micromanager/lightsheetmanager/gui/tabs/AcquisitionTab.java index 9819343d..be1c478b 100644 --- a/src/main/java/org/micromanager/lightsheetmanager/gui/tabs/AcquisitionTab.java +++ b/src/main/java/org/micromanager/lightsheetmanager/gui/tabs/AcquisitionTab.java @@ -236,11 +236,14 @@ private void createEventHandlers() { // confirm first: one stray click discards a run in progress if (DialogUtils.showYesNoDialog(this, "Stop Acquisition", "Stop the current acquisition?")) { - model_.acquisitions().requestStop(); + // the run can end while the dialog is open + if (model_.acquisitions().isRunning()) { + model_.acquisitions().requestStop(); + } } else { // the press already flipped the toggle, so put it back or the button // reads "Start Acquisition" while the run is still going - btnRunAcquisition_.setState(true); + btnRunAcquisition_.setState(model_.acquisitions().isRunning()); } } }); diff --git a/src/main/java/org/micromanager/lightsheetmanager/model/acquisitions/AcquisitionEngine.java b/src/main/java/org/micromanager/lightsheetmanager/model/acquisitions/AcquisitionEngine.java index 8e80ce22..c417fd18 100644 --- a/src/main/java/org/micromanager/lightsheetmanager/model/acquisitions/AcquisitionEngine.java +++ b/src/main/java/org/micromanager/lightsheetmanager/model/acquisitions/AcquisitionEngine.java @@ -284,6 +284,18 @@ protected boolean isStopRequested() { return stopRequested_; } + /** + * Returns true from the moment a run is requested until its cleanup has finished. Unlike + * {@link #isAcquisitionRunning()}, this includes setup, the wait between separate time points + * and the cleanup. {@link #requestStop()} acts only while this is true. A speed test does not + * count. + * + * @return true while a run is in progress + */ + public boolean isRunning() { + return acquisitionRequested_; + } + /** * Records whether a series is waiting between time points, for the stop and abort log lines. *