Extract document-session close prompt helper

This commit is contained in:
2026-06-15 22:09:49 +02:00
parent f6afd34256
commit be8dee8de5
4 changed files with 63 additions and 10 deletions

View File

@@ -118,6 +118,21 @@ void project_save_after_snapshot(App& app, std::function<void(bool)> on_complete
app.canvas->m_canvas->project_save(std::move(on_complete));
}
void wire_unsaved_close_prompt_buttons(
App& app,
bool& dialog_already_opened,
const std::shared_ptr<NodeMessageBox>& dialog)
{
dialog->btn_ok->on_click = [&app](Node*) {
app.request_app_close();
Canvas::I->m_unsaved = false;
};
dialog->btn_cancel->on_click = [&dialog_already_opened, dialog](Node*) {
pp::panopainter::close_legacy_dialog_node(*dialog);
dialog_already_opened = false;
};
}
void create_legacy_new_document(
App& app,
const pp::app::NewDocumentPlan& plan,
@@ -285,20 +300,11 @@ public:
if (!history_status.ok()) {
LOG("Close prompt history effect failed: %s", history_status.message);
}
auto* app = &app_;
auto* dialog_already_opened = &dialog_already_opened_;
auto m = pp::panopainter::create_legacy_app_message_dialog(
app_,
pp::app::plan_document_session_prompt(
pp::app::DocumentSessionPromptKind::close_unsaved_document));
m->btn_ok->on_click = [app](Node*) {
app->request_app_close();
Canvas::I->m_unsaved = false;
};
m->btn_cancel->on_click = [dialog_already_opened, m](Node*) {
pp::panopainter::close_legacy_dialog_node(*m);
*dialog_already_opened = false;
};
wire_unsaved_close_prompt_buttons(app_, dialog_already_opened_, m);
dialog_already_opened_ = true;
}