Move settings dialog to checked overlay lifetime

This commit is contained in:
2026-06-15 19:51:07 +02:00
parent 54fbf900fc
commit 8db859cb2c
6 changed files with 60 additions and 8 deletions

File diff suppressed because one or more lines are too long

View File

@@ -73,6 +73,10 @@ progress/message/input overlays through checked handle registration in
`src/legacy_ui_overlay_services.*` before they fall back to retained dialog
node close helpers, narrowing another app-owned `DEBT-0058`/`DEBT-0063`
surface without changing dialog plans or captions.
The same checked-overlay seam now also owns main-toolbar settings dialog
opening from `src/legacy_app_shell_services.cpp`, removing another raw
app-owned dialog insertion path while leaving the remaining retained dialog
families debt-tracked.
Recent 2026-06-13 retained preview reductions continue to narrow DEBT-0036:
`NodeStrokePreview::draw_stroke_immediate()` now also routes

View File

@@ -34,11 +34,11 @@ auditable steps rather than by subjective estimates.
| Build and CMake ownership | 15 | 13 | Root CMake owns active source lists, app/tool targets, and retained package entrypoints. |
| Test and automation coverage | 15 | 9 | Headless, platform, package, and focused validation commands exist and are current. |
| Pure component behavior ownership | 15 | 8 | Behavior lives in `pp_*` components and is consumed by live adapters. |
| Legacy adapter retirement | 20 | 10 | `legacy_*_services` and singleton bridges are deleted or reduced to trivial composition. |
| Legacy adapter retirement | 20 | 11 | `legacy_*_services` and singleton bridges are deleted or reduced to trivial composition. |
| Renderer boundary and OpenGL parity | 15 | 11 | Live render/export/readback paths execute through renderer interfaces with parity checks. |
| Platform and package parity | 10 | 8 | Required platforms have root CMake/package validation and injected platform services. |
| Hardening and future backend readiness | 10 | 4 | Edge, fuzz, golden, stress, and backend-lab gates exist for high-risk paths. |
| **Total** | **100** | **64** | Only completed tasks below may change this number. |
| **Total** | **100** | **65** | Only completed tasks below may change this number. |
When updating `Current`, add a dated note under "Completed Task Log" with the
task id, points moved, validation command, and commit hash.
@@ -299,6 +299,37 @@ Completed Task Log:
| --- | --- | ---: | --- | --- |
| 2026-06-15 | ADP-006 | +1 legacy adapter retirement | `ctest --preset desktop-fast --build-config Debug -R "pp_app_core_app_dialog\|pp_ui_core_node_lifetime\|pp_ui_core_overlay_lifetime" --output-on-failure`; `MSBuild.exe out\build\windows-msvc-default\panopainter_app.vcxproj /p:Configuration=Debug /p:Platform=x64` | `33ff4b9b` |
### ADP-007 - Move Settings Dialog To Checked Overlay Lifetime
Status: Done
Score: +1 legacy adapter retirement
Debt: `DEBT-0035`, `DEBT-0063`
Scope: `src/legacy_app_shell_services.cpp`, `src/legacy_ui_overlay_services.*`,
settings dialog path only
Goal:
Move the main-toolbar settings dialog opening path off raw
`layout[main_id]->add_child(...)` ownership so the retained settings dialog
participates in the same checked overlay lifetime seam already used by the
other app-owned dialogs.
Done Checks:
- `MainToolbarServices::show_settings_dialog()` still preserves current toolbar
settings-dialog behavior.
- The settings dialog now opens through `src/legacy_ui_overlay_services.*`
instead of direct raw child insertion in `src/legacy_app_shell_services.cpp`.
- `DEBT-0035` and `DEBT-0063` describe the reduced settings
dialog lifetime surface and the remaining retained families.
Validation:
```powershell
ctest --preset desktop-fast --build-config Debug -R "pp_app_core_app_dialog|pp_ui_core_node_lifetime|pp_ui_core_overlay_lifetime|pp_app_core_main_toolbar" --output-on-failure
cmake --build --preset windows-msvc-default --config Debug --target PanoPainter
```
### RND-001 - Make Pure Equirectangular Export The Primary Success Path
Status: Done

View File

@@ -8,6 +8,7 @@
#include "legacy_canvas_view_services.h"
#include "legacy_document_canvas_services.h"
#include "legacy_history_services.h"
#include "legacy_ui_overlay_services.h"
namespace pp::panopainter {
namespace {
@@ -198,10 +199,7 @@ public:
void show_settings_dialog() override
{
app_.settings = new NodeSettings();
app_.settings->set_manager(&app_.layout);
app_.settings->init();
app_.layout[app_.main_id]->add_child(app_.settings);
app_.settings = pp::panopainter::create_legacy_settings_dialog_overlay(app_).get();
}
private:

View File

@@ -7,6 +7,7 @@
#include "node_message_box.h"
#include "node_popup_menu.h"
#include "node_progress_bar.h"
#include "node_settings.h"
#include <memory>
#include <unordered_map>
@@ -371,4 +372,12 @@ std::shared_ptr<NodeInputBox> create_legacy_input_dialog_overlay(
return input;
}
std::shared_ptr<NodeSettings> create_legacy_settings_dialog_overlay(
App& app)
{
auto settings = make_legacy_overlay_node<NodeSettings>(app);
attach_legacy_app_overlay_with_handle_or_fallback(app, settings);
return settings;
}
} // namespace pp::panopainter

View File

@@ -15,6 +15,7 @@ class NodeInputBox;
class NodeMessageBox;
class NodePopupMenu;
class NodeProgressBar;
class NodeSettings;
namespace pp::panopainter {
@@ -154,6 +155,9 @@ void close_legacy_popup_panel(
App& app,
const pp::app::AppInputDialogPlan& plan);
[[nodiscard]] std::shared_ptr<NodeSettings> create_legacy_settings_dialog_overlay(
App& app);
template <class T>
std::shared_ptr<T> make_legacy_overlay_node(App& app)
{