fix(ux): land quick-win UX audit fixes across settings, exports, toasts, nav
Batch of safe, isolated fixes from the 10-surface UX audit: - settings: Auto-shield / Save-z-transactions toggles now persist on change (they discarded CB()'s return and relied on a Save button that only renders on the About tab, so the choice was silently lost on relaunch). - exports: show the resolved Platform::getConfigDir() instead of a hardcoded ~/.config path (wrong on Windows/macOS) in both the all-keys and CSV dialogs; all-keys also reveals the file path on a partial export. - notifications: error/warning toasts last 9s/7s (were 4s/3.5s) so failures are readable. - qr popup / tx-details: copy-to-clipboard now confirms with a toast. - about: Escape-to-close + readable heading contrast via OnSurfaceMedium(). - sidebar: suppress single-key nav (J/K/arrows/[) while an overlay dialog or ImGui popup is open, so it no longer switches the tab behind a modal. - i18n: strip the stale hardcoded path out of file_save_location in i18n.cpp and all eight res/lang/*.json locales (additive, one key each). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -38,6 +38,12 @@ void RenderAboutDialog(App* app, bool* p_open)
|
||||
return;
|
||||
}
|
||||
|
||||
// Escape closes the dialog (click-outside and the Close button already work; this matches the FAQ
|
||||
// dialog's affordance so Escape behaves consistently across modal dialogs).
|
||||
if (ImGui::IsKeyPressed(ImGuiKey_Escape)) {
|
||||
*p_open = false;
|
||||
}
|
||||
|
||||
// Use Body2 font for all dialog text
|
||||
ImGui::PushFont(Type().body2());
|
||||
|
||||
@@ -107,7 +113,7 @@ void RenderAboutDialog(App* app, bool* p_open)
|
||||
ImGui::Spacing();
|
||||
|
||||
// Credits
|
||||
ImGui::TextColored(ImVec4(0.7f, 0.7f, 0.7f, 1.0f), "%s", TR("about_credits"));
|
||||
ImGui::TextColored(ImGui::ColorConvertU32ToFloat4(material::OnSurfaceMedium()), "%s", TR("about_credits"));
|
||||
ImGui::Spacing();
|
||||
|
||||
ImGui::BulletText("The Hush Developers");
|
||||
@@ -121,7 +127,7 @@ void RenderAboutDialog(App* app, bool* p_open)
|
||||
ImGui::Spacing();
|
||||
|
||||
// License
|
||||
ImGui::TextColored(ImVec4(0.7f, 0.7f, 0.7f, 1.0f), "%s", TR("about_license"));
|
||||
ImGui::TextColored(ImGui::ColorConvertU32ToFloat4(material::OnSurfaceMedium()), "%s", TR("about_license"));
|
||||
ImGui::Spacing();
|
||||
ImGui::TextWrapped("%s", TR("about_license_text"));
|
||||
|
||||
|
||||
Reference in New Issue
Block a user