Centralize floating panel restore teardown

This commit is contained in:
2026-06-12 16:23:45 +02:00
parent 3be0f7468c
commit 24cd14c172
3 changed files with 16 additions and 8 deletions

View File

@@ -566,6 +566,11 @@ agent or engineer to remove them without reconstructing context from chat.
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-12: DEBT-0063 was narrowed again. Toolbar popup restoration from
docked floating stroke/layer/grid panels and restored floating color-panel
title cleanup now use retained detach/close/destroy helpers in
`src/legacy_ui_overlay_services.*`. Dock/drop child ownership and raw panel
globals remain legacy-owned.
- 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

@@ -526,6 +526,9 @@ 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.
Toolbar popup restoration from docked floating stroke/layer/grid panels and
restored floating color-panel title cleanup now use the retained detach/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

@@ -469,8 +469,8 @@ void App::init_sidebar()
{
if (auto fp = dynamic_cast<NodePanelFloating*>(stroke->m_parent->m_parent))
{
stroke->remove_from_parent();
fp->destroy();
pp::panopainter::detach_legacy_node_from_parent(*stroke);
pp::panopainter::close_legacy_dialog_node(*fp);
}
}
(void)pp::panopainter::attach_legacy_overlay_node(*this, stroke);
@@ -543,8 +543,8 @@ void App::init_sidebar()
{
if (auto fp = dynamic_cast<NodePanelFloating*>(layers->m_parent->m_parent))
{
layers->remove_from_parent();
fp->destroy();
pp::panopainter::detach_legacy_node_from_parent(*layers);
pp::panopainter::close_legacy_dialog_node(*fp);
}
}
(void)pp::panopainter::attach_legacy_overlay_node(*this, layers);
@@ -576,8 +576,8 @@ void App::init_sidebar()
{
if (auto fp = dynamic_cast<NodePanelFloating*>(grid->m_parent->m_parent))
{
grid->remove_from_parent();
fp->destroy();
pp::panopainter::detach_legacy_node_from_parent(*grid);
pp::panopainter::close_legacy_dialog_node(*fp);
}
}
(void)pp::panopainter::attach_legacy_overlay_node(*this, grid);
@@ -1737,7 +1737,7 @@ void App::ui_restore()
{
auto floating_color = f->m_container->add_child<NodePanelColor>();
floating_color->SetHeightP(100);
floating_color->find("title")->destroy();
pp::panopainter::destroy_legacy_node(*floating_color->find("title"));
floating_color->on_color_changed = [this](Node* target, glm::vec4 color) {
apply_brush_color_plan(*this, color, false, false);
};
@@ -1811,7 +1811,7 @@ void App::ui_restore()
{
auto floating_color = f->m_container->add_child<NodePanelColor>();
floating_color->SetHeightP(100);
floating_color->find("title")->destroy();
pp::panopainter::destroy_legacy_node(*floating_color->find("title"));
floating_color->on_color_changed = [this](Node* target, glm::vec4 color) {
apply_brush_color_plan(*this, color, false, false);
};