FIX: record dialog stack and EndModal on system session end

Change-Id: Ie0a7de7cf467f5b9e88881d3894dbb7a0790d500
This commit is contained in:
chunmao.guo 2022-08-26 15:24:02 +08:00 committed by Lane.Wei
parent 0f8ad6d5e6
commit 56a61bfcf5
3 changed files with 17 additions and 0 deletions

View file

@ -1835,6 +1835,11 @@ bool GUI_App::on_init_inner()
//BBS set crash log folder
CBaseException::set_log_folder(data_dir());
#endif
wxGetApp().Bind(wxEVT_QUERY_END_SESSION, [](auto & e) {
for (auto d : dialogStack)
d->EndModal(1);
});
std::map<std::string, std::string> extra_headers = get_extra_header();
Slic3r::Http::set_extra_headers(extra_headers);

View file

@ -469,5 +469,7 @@ bool generate_image(const std::string &filename, wxImage &image, wxSize img_size
return true;
}
std::vector<wxDialog*> dialogStack;
}
}

View file

@ -104,6 +104,8 @@ struct DpiChangedEvent : public wxEvent {
wxDECLARE_EVENT(EVT_DPI_CHANGED_SLICER, DpiChangedEvent);
#endif // !wxVERSION_EQUAL_OR_GREATER_THAN
extern std::vector<wxDialog*> dialogStack;
template<class P> class DPIAware : public P
{
public:
@ -221,6 +223,14 @@ public:
on_sys_color_changed();
}
#endif
int ShowModal()
{
dialogStack.push_back(this);
int r = wxDialog::ShowModal();
dialogStack.pop_back();
return r;
}
protected:
virtual void on_dpi_changed(const wxRect &suggested_rect) = 0;