diff --git a/docs/modernization/debt.md b/docs/modernization/debt.md index 808f5eb..e0dc107 100644 --- a/docs/modernization/debt.md +++ b/docs/modernization/debt.md @@ -561,6 +561,11 @@ agent or engineer to remove them without reconstructing context from chat. helpers in `src/legacy_ui_overlay_services.*`. Floating-panel dock/drop reparenting still uses legacy child-vector ownership until checked handles land. +- 2026-06-12: DEBT-0063/DEBT-0058 were narrowed again. Canvas export/project + progress-bar cleanup and remote-page loading placeholder cleanup now route + through retained close/destroy helpers in `src/legacy_ui_overlay_services.*`. + The long-running canvas workflows still depend on legacy `App::I` UI tasking + and raw progress-bar pointers. - 2026-06-05: DEBT-0011 was narrowed. The Windows app package smoke target now passes the configure-time CMake executable into `package-smoke.ps1`, so VS 2026 generator validation does not depend on an older `cmake` on PATH, and diff --git a/docs/modernization/roadmap.md b/docs/modernization/roadmap.md index 67958ba..f4b2c74 100644 --- a/docs/modernization/roadmap.md +++ b/docs/modernization/roadmap.md @@ -524,6 +524,8 @@ recovery message dialogs now route through the retained dialog close helper. Floating-panel placeholder detach/destroy, cloud-loading alignment cleanup, brush-preset item removal, and retained popup-panel parent detach now use named retained node helpers; dock/drop reparenting remains legacy-owned. +Canvas export/project progress-bar cleanup and remote-page loading placeholder +cleanup now route through those same retained close/destroy helpers. Raw popup callback captures and full close/capture ownership remain part of `DEBT-0063`. `pano_cli inspect-image` exposes PNG IHDR metadata as JSON, diff --git a/src/canvas.cpp b/src/canvas.cpp index e45e8d2..cc1c94e 100644 --- a/src/canvas.cpp +++ b/src/canvas.cpp @@ -4,6 +4,7 @@ #include "app.h" #include "legacy_gl_renderbuffer_dispatch.h" #include "legacy_ui_gl_dispatch.h" +#include "legacy_ui_overlay_services.h" #include "app_core/document_canvas.h" #include "texture.h" #include "node_progress_bar.h" @@ -2205,7 +2206,7 @@ void Canvas::export_layers_thread(std::string path) img.save_png(fmt::format("{}-layer{:02d}-{}.png", path, i, l->m_name)); pb->increment(); } - pb->destroy(); + pp::panopainter::close_legacy_dialog_node(*pb); } void Canvas::export_anim_frames(std::string path, std::function on_complete) @@ -2231,7 +2232,7 @@ void Canvas::export_anim_frames_thread(std::string path) export_equirectangular_thread(fmt::format("{}-{:02d}.png", path, i)); pb->increment(); } - pb->destroy(); + pp::panopainter::close_legacy_dialog_node(*pb); } void Canvas::export_anim_mp4(std::string path, std::function on_complete) @@ -2270,7 +2271,7 @@ void Canvas::export_anim_mp4_thread(std::string path) pb->increment(); } mp4.write_mp4(path); - pb->destroy(); + pp::panopainter::close_legacy_dialog_node(*pb); } void Canvas::export_cube_faces(std::string file_name, std::function on_complete) @@ -2314,7 +2315,7 @@ void Canvas::export_cube_faces_thread(std::string file_name) #endif } - pb->destroy(); + pp::panopainter::close_legacy_dialog_node(*pb); #ifdef __OBJC__ static char name[128]; @@ -2615,7 +2616,7 @@ bool Canvas::project_save_thread(std::string file_path, bool show_progress) if (post_commit_plan.dismisses_progress_ui) { - pb->destroy(); + pp::panopainter::close_legacy_dialog_node(*pb); } if (post_commit_plan.updates_title) { @@ -2845,7 +2846,7 @@ bool Canvas::project_open_thread(std::string file_path) m_newdoc = false; if (App::I->layout.m_loaded) { - pb->destroy(); + pp::panopainter::close_legacy_dialog_node(*pb); App::I->ui_task([] { App::I->title_update(); App::I->update_rec_frames(); diff --git a/src/node_remote_page.cpp b/src/node_remote_page.cpp index 1fee2b1..260c544 100644 --- a/src/node_remote_page.cpp +++ b/src/node_remote_page.cpp @@ -6,6 +6,7 @@ #include "asset.h" #include "node_text.h" #include "node_metadata.h" +#include "legacy_ui_overlay_services.h" Node* NodeRemotePage::clone_instantiate() const { @@ -55,7 +56,7 @@ std::future NodeRemotePage::load_url(const std::string& url, m_content->add_child_xml(std::string((char*)remote->m_data, (size_t)remote->m_len), "about"); if (auto meta = m_content->find("metadata")) m_page_id = std::stol(meta->m_props["page-id"]); - align->destroy(); + pp::panopainter::destroy_legacy_node(*align); } else {