Centralize canvas progress teardown

This commit is contained in:
2026-06-12 16:18:08 +02:00
parent b87927b456
commit 3be0f7468c
4 changed files with 16 additions and 7 deletions

View File

@@ -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

View File

@@ -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,

View File

@@ -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<void()> 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<void()> 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<void()> 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();

View File

@@ -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<bool> 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<NodeMetadata>("metadata"))
m_page_id = std::stol(meta->m_props["page-id"]);
align->destroy();
pp::panopainter::destroy_legacy_node(*align);
}
else
{