From c1e245ae7353dbcab203902ca02bd4b8c9f80522 Mon Sep 17 00:00:00 2001 From: Megamouse Date: Sun, 5 May 2019 11:16:03 +0200 Subject: [PATCH] Emu: msg_dialog_frame fixup: don't reject on Close to prevent Emu.Stop() --- rpcs3/Emu/Cell/Modules/cellMsgDialog.h | 2 +- rpcs3/Emu/System.cpp | 2 +- rpcs3/rpcs3qt/msg_dialog_frame.cpp | 7 ++++--- rpcs3/rpcs3qt/msg_dialog_frame.h | 4 ++-- 4 files changed, 8 insertions(+), 7 deletions(-) diff --git a/rpcs3/Emu/Cell/Modules/cellMsgDialog.h b/rpcs3/Emu/Cell/Modules/cellMsgDialog.h index 0e98cfd16a..0b11d3bbc5 100644 --- a/rpcs3/Emu/Cell/Modules/cellMsgDialog.h +++ b/rpcs3/Emu/Cell/Modules/cellMsgDialog.h @@ -100,7 +100,7 @@ public: virtual ~MsgDialogBase(); virtual void Create(const std::string& msg, const std::string& title = "") = 0; - virtual void Close() = 0; + virtual void Close(bool success) = 0; virtual void SetMsg(const std::string& msg) = 0; virtual void ProgressBarSetMsg(u32 progressBarIndex, const std::string& msg) = 0; virtual void ProgressBarReset(u32 progressBarIndex) = 0; diff --git a/rpcs3/Emu/System.cpp b/rpcs3/Emu/System.cpp index 2640b11ab2..c09e35f49b 100644 --- a/rpcs3/Emu/System.cpp +++ b/rpcs3/Emu/System.cpp @@ -424,7 +424,7 @@ void Emulator::Init() Emu.CallAfter([=] { - dlg->Close(); + dlg->Close(true); }); } }); diff --git a/rpcs3/rpcs3qt/msg_dialog_frame.cpp b/rpcs3/rpcs3qt/msg_dialog_frame.cpp index 7084023340..f19dc0a906 100644 --- a/rpcs3/rpcs3qt/msg_dialog_frame.cpp +++ b/rpcs3/rpcs3qt/msg_dialog_frame.cpp @@ -13,7 +13,7 @@ void msg_dialog_frame::Create(const std::string& msg, const std::string& title) static const auto& barWidth = [](){return QLabel("This is the very length of the progressbar due to hidpi reasons.").sizeHint().width();}; - Close(); + Close(true); m_dialog = new custom_dialog(type.disable_cancel); m_dialog->setWindowTitle(title.empty() ? (type.se_normal ? "Normal dialog" : "Error dialog") : qstr(title)); @@ -148,11 +148,12 @@ void msg_dialog_frame::Create(const std::string& msg, const std::string& title) #endif } -void msg_dialog_frame::Close() +void msg_dialog_frame::Close(bool success) { if (m_dialog) { - m_dialog->close(); + m_dialog->done(success ? QDialog::Accepted : QDialog::Rejected); + m_dialog->deleteLater(); } } diff --git a/rpcs3/rpcs3qt/msg_dialog_frame.h b/rpcs3/rpcs3qt/msg_dialog_frame.h index dc6204df08..82682d3e76 100644 --- a/rpcs3/rpcs3qt/msg_dialog_frame.h +++ b/rpcs3/rpcs3qt/msg_dialog_frame.h @@ -38,7 +38,7 @@ private: #elif HAVE_QTDBUS int m_progress_value = 0; #endif - custom_dialog* m_dialog =nullptr; + custom_dialog* m_dialog = nullptr; QLabel* m_text = nullptr; QLabel* m_text1 = nullptr; QLabel* m_text2 = nullptr; @@ -53,7 +53,7 @@ public: msg_dialog_frame(QWindow* taskbarTarget); ~msg_dialog_frame(); virtual void Create(const std::string& msg, const std::string& title = "") override; - virtual void Close() override; + virtual void Close(bool success) override; virtual void SetMsg(const std::string& msg) override; virtual void ProgressBarSetMsg(u32 progressBarIndex, const std::string& msg) override; virtual void ProgressBarReset(u32 progressBarIndex) override;