diff --git a/common/ProgressCallback.h b/common/ProgressCallback.h index 928d484d3a..e3113d065a 100644 --- a/common/ProgressCallback.h +++ b/common/ProgressCallback.h @@ -82,8 +82,8 @@ public: virtual void PushState() override; virtual void PopState() override; - bool IsCancelled() const; - bool IsCancellable() const; + virtual bool IsCancelled() const override; + virtual bool IsCancellable() const override; virtual void SetCancellable(bool cancellable) override; virtual void SetStatusText(const char* text) override; diff --git a/pcsx2-qt/QtProgressCallback.cpp b/pcsx2-qt/QtProgressCallback.cpp index 4455446505..3f1956a718 100644 --- a/pcsx2-qt/QtProgressCallback.cpp +++ b/pcsx2-qt/QtProgressCallback.cpp @@ -34,16 +34,12 @@ QtModalProgressCallback::QtModalProgressCallback(QWidget* parent_widget, float s m_dialog.setModal(parent_widget != nullptr); m_dialog.setAutoClose(false); m_dialog.setAutoReset(false); + connect(&m_dialog, &QProgressDialog::canceled, this, &QtModalProgressCallback::dialogCancelled); checkForDelayedShow(); } QtModalProgressCallback::~QtModalProgressCallback() = default; -bool QtModalProgressCallback::IsCancelled() const -{ - return m_dialog.wasCanceled(); -} - void QtModalProgressCallback::SetCancellable(bool cancellable) { if (m_cancellable == cancellable) @@ -123,6 +119,11 @@ void QtModalProgressCallback::ModalInformation(const char* message) QMessageBox::information(&m_dialog, tr("Information"), QString::fromUtf8(message)); } +void QtModalProgressCallback::dialogCancelled() +{ + m_cancelled = true; +} + void QtModalProgressCallback::checkForDelayedShow() { if (m_dialog.isVisible()) diff --git a/pcsx2-qt/QtProgressCallback.h b/pcsx2-qt/QtProgressCallback.h index 0916d2e01d..3cac211c34 100644 --- a/pcsx2-qt/QtProgressCallback.h +++ b/pcsx2-qt/QtProgressCallback.h @@ -29,7 +29,7 @@ public: QtModalProgressCallback(QWidget* parent_widget, float show_delay = 0.0f); ~QtModalProgressCallback(); - bool IsCancelled() const override; + QProgressDialog& GetDialog() { return m_dialog; } void SetCancellable(bool cancellable) override; void SetTitle(const char* title) override; @@ -46,6 +46,9 @@ public: bool ModalConfirmation(const char* message) override; void ModalInformation(const char* message) override; +private Q_SLOTS: + void dialogCancelled(); + private: void checkForDelayedShow();