Make vertical tab close (×) buttons reliably hittable

Two issues kept the close button unusable:
- The launcher-row close button lacked flex_shrink_0, so on narrow
  sidebars the title swallowed the 16 px hit target before flex laid
  it out.
- The handler did select_tab(close_id) → close_active_tab(); if the
  newly-selected tab routed through split-view close logic the call
  silently no-op'd against the user's intent.

Add flex_shrink_0 on both launcher and tab close buttons, and route
the click through a new close_tab_by_id helper that calls
BrowserCore::close_tab(tab_id) directly.
This commit is contained in:
2026-05-10 00:47:31 -04:00
parent 7c33381063
commit 84ec12e471
2 changed files with 23 additions and 7 deletions
+20
View File
@@ -33,4 +33,24 @@ impl ElyShell {
cx.notify();
}
}
/// Close a specific tab by id. Used by the per-row close (×) on
/// vertical tabs and launcher rows: closing the tab the user
/// targeted directly, instead of the prior select-then-close
/// dance which depended on `close_active_tab` doing the right
/// thing after a fresh selection (and which silently no-op'd if
/// the active tab routed into split-view close logic).
pub(super) fn close_tab_by_id(
&mut self,
tab_id: &TabId,
window: &mut Window,
cx: &mut Context<Self>,
) {
if let ShellState::Ready(core) = &mut self.state
&& core.close_tab(tab_id).is_ok()
{
self.sync_address_input(window, cx);
cx.notify();
}
}
}