From cde6b3d3e43d8f2ae22f07aa6e0359a4bcd92bce Mon Sep 17 00:00:00 2001 From: "Unknown W. Brackets" Date: Sat, 2 Dec 2017 19:04:33 -0800 Subject: [PATCH] UI: Send prompt results even on back/cancel. Before, if you went to the GPU backend prompt, and canceled, it would never call the callback, and so the g_Config value never got reset. --- UI/MiscScreens.cpp | 9 ++++++--- UI/MiscScreens.h | 2 ++ 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/UI/MiscScreens.cpp b/UI/MiscScreens.cpp index cb2af940c2..15550055e6 100644 --- a/UI/MiscScreens.cpp +++ b/UI/MiscScreens.cpp @@ -275,22 +275,25 @@ void PromptScreen::CreateViews() { Choice *yesButton = rightColumnItems->Add(new Choice(yesButtonText_)); yesButton->OnClick.Handle(this, &PromptScreen::OnYes); root_->SetDefaultFocusView(yesButton); - if (noButtonText_ != "") + if (!noButtonText_.empty()) rightColumnItems->Add(new Choice(noButtonText_))->OnClick.Handle(this, &PromptScreen::OnNo); } UI::EventReturn PromptScreen::OnYes(UI::EventParams &e) { - callback_(true); TriggerFinish(DR_OK); return UI::EVENT_DONE; } UI::EventReturn PromptScreen::OnNo(UI::EventParams &e) { - callback_(false); TriggerFinish(DR_CANCEL); return UI::EVENT_DONE; } +void PromptScreen::TriggerFinish(DialogResult result) { + callback_(result == DR_OK || result == DR_YES); + UIDialogScreenWithBackground::TriggerFinish(result); +} + PostProcScreen::PostProcScreen(const std::string &title) : ListPopupScreen(title) { I18NCategory *ps = GetI18NCategory("PostShaders"); ReloadAllPostShaderInfo(); diff --git a/UI/MiscScreens.h b/UI/MiscScreens.h index 2fb11bd67b..4c08772a0a 100644 --- a/UI/MiscScreens.h +++ b/UI/MiscScreens.h @@ -78,6 +78,8 @@ public: void CreateViews() override; + void TriggerFinish(DialogResult result) override; + private: UI::EventReturn OnYes(UI::EventParams &e); UI::EventReturn OnNo(UI::EventParams &e);