feat(market): discard uncommitted group edits when switching away

Switching to another group in the Manage-portfolio list (or adding/deleting a
group) now discards the current group's uncommitted working edits instead of
auto-saving them — only the Save button (and closing the modal) persists. This
matches the explicit-save model signalled by the Revert/Save buttons and the
unsaved-changes dot: navigating between drafts is ephemeral until saved.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-03 23:24:52 -05:00
parent faf8e4e430
commit 7db6564a0e

View File

@@ -628,7 +628,7 @@ static void RenderPortfolioEditor(App* app)
ImGui::PopID();
}
if (delRow >= 0) {
commitIfNeeded(); // persist edits to the current group first
// Operates on the stored entries; any uncommitted working edits are discarded.
auto es = settings->getPortfolioEntries();
if (delRow < (int)es.size()) {
es.erase(es.begin() + delRow);
@@ -638,13 +638,15 @@ static void RenderPortfolioEditor(App* app)
else if (delRow == s_pf_sel) s_pf_sel = std::min(delRow, (int)es.size() - 1);
PortfolioBeginEdit(app, s_pf_sel);
}
} else if (clickedSel != -999) { commitIfNeeded(); PortfolioBeginEdit(app, clickedSel); }
} else if (clickedSel != -999) {
PortfolioBeginEdit(app, clickedSel); // switching groups discards uncommitted edits
}
}
ImGui::EndChild();
ImGui::Dummy(ImVec2(0, Layout::spacingSm()));
// Add immediately creates a persisted "Untitled" group and selects it for editing.
if (ImGui::Button(TR("portfolio_add_entry"), ImVec2(masterW, addH))) {
commitIfNeeded();
// Adding switches to a new group; uncommitted edits to the current one are discarded.
auto es = settings->getPortfolioEntries();
config::Settings::PortfolioEntry ne;
ne.label = TR("portfolio_untitled");