Persist settings nav across every settings sub-page

Each ely://settings/* route used to render its content alone, with no
nav column — so clicking a sidebar item replaced the entire page and
read to users as a brand-new tab opening. Move the nav column into a
shared render_settings_shell wrapper and route every settings/* URL
through it. ely://sync/status reuses the sync route highlight.

Also stop in-place navigation from stealing focus to the omnibar so
the destination page keeps focus for scroll and interaction.
This commit is contained in:
2026-05-10 00:45:21 -04:00
parent fcac3268ad
commit 2352d4658d
5 changed files with 77 additions and 24 deletions
+5 -1
View File
@@ -58,6 +58,11 @@ impl ElyShell {
/// Navigate the active tab to `url` without creating a new tab.
/// Falls back to opening a new tab only if there's no active tab
/// to navigate (the BrowserCore returns `TabNotFound`).
///
/// Note: in-place navigation does NOT steal focus to the omnibar.
/// Settings nav clicks, home pills, and disclosure rows expect
/// focus to stay on the page so the user can immediately scroll
/// or interact with the destination.
pub(crate) fn navigate_active_tab(
&mut self,
url: UrlText,
@@ -69,7 +74,6 @@ impl ElyShell {
core.open_tab(url);
}
self.sync_address_input(window, cx);
self.focus_address_bar(window, cx);
cx.notify();
}
}