diff --git a/docs/modernization/debt.md b/docs/modernization/debt.md index 31f4e66..56b815a 100644 --- a/docs/modernization/debt.md +++ b/docs/modernization/debt.md @@ -547,6 +547,9 @@ agent or engineer to remove them without reconstructing context from chat. - 2026-06-12: DEBT-0063 was narrowed again. Floating-panel close and drag-outline cleanup now use the retained close helper in `src/legacy_ui_overlay_services.*`; drag placeholder reparenting and dock/drop mutation remain legacy-owned. +- 2026-06-12: DEBT-0063 was narrowed again. `NodePopupMenu` mouse-up release and + destroy now route through the retained popup close helper in + `src/legacy_ui_overlay_services.*`. - 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 c1d9a76..3c8c088 100644 --- a/docs/modernization/roadmap.md +++ b/docs/modernization/roadmap.md @@ -517,6 +517,7 @@ App message-dialog cancel-button removal, layer-rename finish cleanup, and recording export progress cleanup also route through those helpers. Floating-panel close and drag-outline cleanup now use the same retained close helper while drag reparenting remains legacy-owned. +`NodePopupMenu` mouse-up close/release now uses the retained popup close helper. 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/node_popup_menu.cpp b/src/node_popup_menu.cpp index 682264c..a6b7b9f 100644 --- a/src/node_popup_menu.cpp +++ b/src/node_popup_menu.cpp @@ -1,5 +1,6 @@ #include "pch.h" #include "log.h" +#include "legacy_ui_overlay_services.h" #include "node_popup_menu.h" #include "node_button_custom.h" #include "app.h" @@ -27,11 +28,7 @@ kEventResult NodePopupMenu::handle_event(Event* e) case kEventType::MouseDownL: break; case kEventType::MouseUpL: - if (!m_mouse_inside) - { - mouse_release(); - } - else + if (m_mouse_inside) { for (int i = 0; i < m_children.size(); i++) { @@ -42,9 +39,8 @@ kEventResult NodePopupMenu::handle_event(Event* e) break; } } - mouse_release(); } - destroy(); + pp::panopainter::close_legacy_popup_overlay(*this); break; default: return kEventResult::Available;