Repository navigation
feat: allow inactive tabs to shrink when space is limited - #482
Merged
Merged
Conversation
Implement flex shrinking for inactive tabs to prevent tab bar overflow, similar to SecureCRT behavior. Active and renaming tabs always keep full width.
feigeCode
added a commit
that referenced
this pull request
Oct 31, 2026
冲突解决:main/src/home/home_tabs.rs 保留三产品拆分布局,快捷键复制改走 TabContainer::duplicate_active_tab(等价 #483:与标签菜单共用复制路径,终端保留当前工作目录, 并对任何可复制标签生效),复制出的终端标签在 main/src/home_tab/lifecycle.rs 补回 OpenSftp / SaveAsConnection 订阅;随之删除不再被使用的 ShellExtras::duplicate_terminal_tab 契约。 origin/main 上的 #482 / #483 / #484 其余改动(标签收缩、Esc 只在编辑器上下文生效、 terminal 测试隔离)均无冲突合入。 顺带修 main/src/home/home_tabs.rs 里 notify_unsupported 的属性与文档注释空行(clippy 告警)。
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
When the tab bar runs out of horizontal space, it currently just keeps every tab at a fixed width and scrolls. This makes the content of inactive tabs unnecessarily cut off and forces scrolling even when there is plenty of screen space to show more tabs at once.
This PR lets inactive tabs shrink down to TAB_MIN_WIDTH (flex-shrink) so more tabs fit on screen before the bar starts to scroll — similar to SecureCRT behavior. The active tab and the tab currently being renamed always keep their full width so the user is never forced to work with a cramped active tab.
Key changes in crates/core/src/tab_container.rs:
Added tab_keeps_full_width(is_active, is_renaming) helper deciding whether a tab may shrink.
Replaced the unconditional .flex_shrink_0() on each tab with conditional .flex_shrink_0()/.flex_shrink_1() based on keep_full_width.
Added a unit test covering the shrink logic and the resulting flex classes.
Screenshot
How to Test
Open a window with many tabs until the tab bar overflows, then verify:
Checklist
cargo runfor story tests related to the changes.