Centralize canvas progress teardown
This commit is contained in:
@@ -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
|
helpers in `src/legacy_ui_overlay_services.*`. Floating-panel dock/drop
|
||||||
reparenting still uses legacy child-vector ownership until checked handles
|
reparenting still uses legacy child-vector ownership until checked handles
|
||||||
land.
|
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
|
- 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
|
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
|
2026 generator validation does not depend on an older `cmake` on PATH, and
|
||||||
|
|||||||
@@ -524,6 +524,8 @@ recovery message dialogs now route through the retained dialog close helper.
|
|||||||
Floating-panel placeholder detach/destroy, cloud-loading alignment cleanup,
|
Floating-panel placeholder detach/destroy, cloud-loading alignment cleanup,
|
||||||
brush-preset item removal, and retained popup-panel parent detach now use named
|
brush-preset item removal, and retained popup-panel parent detach now use named
|
||||||
retained node helpers; dock/drop reparenting remains legacy-owned.
|
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
|
Raw popup callback captures and full close/capture ownership remain part of
|
||||||
`DEBT-0063`.
|
`DEBT-0063`.
|
||||||
`pano_cli inspect-image` exposes PNG IHDR metadata as JSON,
|
`pano_cli inspect-image` exposes PNG IHDR metadata as JSON,
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
#include "app.h"
|
#include "app.h"
|
||||||
#include "legacy_gl_renderbuffer_dispatch.h"
|
#include "legacy_gl_renderbuffer_dispatch.h"
|
||||||
#include "legacy_ui_gl_dispatch.h"
|
#include "legacy_ui_gl_dispatch.h"
|
||||||
|
#include "legacy_ui_overlay_services.h"
|
||||||
#include "app_core/document_canvas.h"
|
#include "app_core/document_canvas.h"
|
||||||
#include "texture.h"
|
#include "texture.h"
|
||||||
#include "node_progress_bar.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));
|
img.save_png(fmt::format("{}-layer{:02d}-{}.png", path, i, l->m_name));
|
||||||
pb->increment();
|
pb->increment();
|
||||||
}
|
}
|
||||||
pb->destroy();
|
pp::panopainter::close_legacy_dialog_node(*pb);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Canvas::export_anim_frames(std::string path, std::function<void()> on_complete)
|
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));
|
export_equirectangular_thread(fmt::format("{}-{:02d}.png", path, i));
|
||||||
pb->increment();
|
pb->increment();
|
||||||
}
|
}
|
||||||
pb->destroy();
|
pp::panopainter::close_legacy_dialog_node(*pb);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Canvas::export_anim_mp4(std::string path, std::function<void()> on_complete)
|
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();
|
pb->increment();
|
||||||
}
|
}
|
||||||
mp4.write_mp4(path);
|
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)
|
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
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
pb->destroy();
|
pp::panopainter::close_legacy_dialog_node(*pb);
|
||||||
|
|
||||||
#ifdef __OBJC__
|
#ifdef __OBJC__
|
||||||
static char name[128];
|
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)
|
if (post_commit_plan.dismisses_progress_ui)
|
||||||
{
|
{
|
||||||
pb->destroy();
|
pp::panopainter::close_legacy_dialog_node(*pb);
|
||||||
}
|
}
|
||||||
if (post_commit_plan.updates_title)
|
if (post_commit_plan.updates_title)
|
||||||
{
|
{
|
||||||
@@ -2845,7 +2846,7 @@ bool Canvas::project_open_thread(std::string file_path)
|
|||||||
m_newdoc = false;
|
m_newdoc = false;
|
||||||
if (App::I->layout.m_loaded)
|
if (App::I->layout.m_loaded)
|
||||||
{
|
{
|
||||||
pb->destroy();
|
pp::panopainter::close_legacy_dialog_node(*pb);
|
||||||
App::I->ui_task([] {
|
App::I->ui_task([] {
|
||||||
App::I->title_update();
|
App::I->title_update();
|
||||||
App::I->update_rec_frames();
|
App::I->update_rec_frames();
|
||||||
|
|||||||
@@ -6,6 +6,7 @@
|
|||||||
#include "asset.h"
|
#include "asset.h"
|
||||||
#include "node_text.h"
|
#include "node_text.h"
|
||||||
#include "node_metadata.h"
|
#include "node_metadata.h"
|
||||||
|
#include "legacy_ui_overlay_services.h"
|
||||||
|
|
||||||
Node* NodeRemotePage::clone_instantiate() const
|
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");
|
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"))
|
if (auto meta = m_content->find<NodeMetadata>("metadata"))
|
||||||
m_page_id = std::stol(meta->m_props["page-id"]);
|
m_page_id = std::stol(meta->m_props["page-id"]);
|
||||||
align->destroy();
|
pp::panopainter::destroy_legacy_node(*align);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user