Centralize retained node teardown

This commit is contained in:
2026-06-12 16:15:43 +02:00
parent 9ac2c541dc
commit adb61795a6
7 changed files with 31 additions and 10 deletions

View File

@@ -15,11 +15,21 @@ void initialize_legacy_overlay_node(App& app, Node& node)
node.loaded();
}
void close_legacy_dialog_node(Node& node)
void destroy_legacy_node(Node& node)
{
node.destroy();
}
void detach_legacy_node_from_parent(Node& node)
{
node.remove_from_parent();
}
void close_legacy_dialog_node(Node& node)
{
destroy_legacy_node(node);
}
void release_legacy_mouse_capture(Node& node) noexcept
{
node.mouse_release();
@@ -41,7 +51,7 @@ void activate_legacy_popup_overlay(Node& node) noexcept
void close_legacy_popup_overlay(Node& node) noexcept
{
release_legacy_mouse_capture(node);
node.destroy();
destroy_legacy_node(node);
}
void close_legacy_dialog_and_hide_keyboard(App& app, Node& node)
@@ -56,7 +66,7 @@ void close_legacy_popup_panel(
{
release_legacy_mouse_capture(node);
if (node.m_parent) {
node.m_parent->remove_child(&node);
detach_legacy_node_from_parent(node);
}
if (on_close) {
on_close(&node);

View File

@@ -13,6 +13,8 @@ namespace pp::panopainter {
void initialize_legacy_overlay_node(App& app, Node& node);
void destroy_legacy_node(Node& node);
void detach_legacy_node_from_parent(Node& node);
void close_legacy_dialog_node(Node& node);
void release_legacy_mouse_capture(Node& node) noexcept;
void configure_legacy_popup_overlay(Node& node) noexcept;

View File

@@ -77,7 +77,7 @@ void NodeDialogCloud::load_thumbs_thread()
return;
}
align->destroy();
pp::panopainter::destroy_legacy_node(*align);
LOG("CLOUD LIST: %s", res.c_str());

View File

@@ -437,7 +437,7 @@ public:
}
const bool new_current = !p->m_current || p->m_container->get_child_index(p->m_current) == current_index;
p->m_container->m_children[current_index]->destroy();
pp::panopainter::destroy_legacy_node(*p->m_container->m_children[current_index]);
if (clears_selection) {
p->m_current = nullptr;
} else if (new_current && selects_target) {

View File

@@ -127,7 +127,7 @@ kEventResult NodePanelFloating::handle_event(Event* e)
{
m_outline->SetPosition(c->m_pos);
m_outline->SetSize(c->m_size);
m_drop_placeholder->remove_from_parent();
pp::panopainter::detach_legacy_node_from_parent(*m_drop_placeholder);
int i = 0;
float y = 0;
for (; i < c->m_children.size(); i++)
@@ -154,7 +154,7 @@ kEventResult NodePanelFloating::handle_event(Event* e)
}
}
if (!docked && m_drop_placeholder->m_parent)
m_drop_placeholder->remove_from_parent();
pp::panopainter::detach_legacy_node_from_parent(*m_drop_placeholder);
}
else if (m_action == kDragAction::Reheight)
{
@@ -184,8 +184,8 @@ kEventResult NodePanelFloating::handle_event(Event* e)
{
if (m_drop_placeholder->m_parent)
drop_pos = std::max(0, m_drop_placeholder->m_parent->get_child_index(m_drop_placeholder.get()));
m_drop_placeholder->destroy();
m_drop_placeholder->remove_from_parent();
pp::panopainter::destroy_legacy_node(*m_drop_placeholder);
pp::panopainter::detach_legacy_node_from_parent(*m_drop_placeholder);
}
bool docked = false;
if (m_droppable)
@@ -226,7 +226,7 @@ kEventResult NodePanelFloating::handle_event(Event* e)
m_outline = nullptr;
m_drop_placeholder = nullptr;
}
mouse_release();
pp::panopainter::release_legacy_mouse_capture(*this);
ret = kEventResult::Consumed;
break;
default: