Rio
adr/0057-tab-overflow.mdRaw Markdown · GitHub ↗

ADR-0057: Tab overflow: page, wrap, or list

  • Status: Accepted; amended by ADR-0074, ADR-0078
  • Date: 2026-09-03
  • Deciders: jka
  • Decision: D57

Context

In a narrow window, tabs beyond the right edge of a group's strip could not be reached, a long-standing complaint about Notepad++ as well.

Decision

Three complementary mechanisms:

  • A list of every open buffer, always reachable. It was first a top-level Tabs menu; ADR-0074 replaced it with a bounded picker dialog, View ▸ Switch to Tab….
  • Scroll mode (default): tabs stay on one line, and when they overflow, ◂ ▸ arrows page a visible window of tabs. Activating a tab scrolls it into view; the arrows can page past the active tab.
  • Multi-line mode: tabs wrap onto as many rows as needed.

The mode is a persisted View preference (tab_layout). One procedure, tabstrip_layout, places the tab handles and runs again on resize. Tab widths are computed from font metrics rather than read from mapped widgets, so layout is correct immediately and testable without a display.

Consequences

  • Every tab is reachable at any window width.
  • The Multi-Line Tabs toggle first lived in the Tabs menu. That mismatch, a view preference inside a navigation list, prompted the Preferences window (ADR-0058).
  • Multi-line layout was reworked in ADR-0078 after the first version, built with grid, left gaps and clipped tabs.