Centralize retained popup menu closing

This commit is contained in:
2026-06-12 16:01:32 +02:00
parent 32cea98661
commit 22748d9967
3 changed files with 7 additions and 7 deletions

View File

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

View File

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

View File

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