diff options
Diffstat (limited to 'src/client/shell/tabs.rs')
| -rw-r--r-- | src/client/shell/tabs.rs | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/src/client/shell/tabs.rs b/src/client/shell/tabs.rs index 3fdcf7dc..a8e584d4 100644 --- a/src/client/shell/tabs.rs +++ b/src/client/shell/tabs.rs @@ -21,14 +21,24 @@ pub(crate) fn render_tab_bar( .iter() .filter(|tab| Some(tab.workspace_id.as_str()) == snapshot.focused_workspace_id.as_deref()) .collect::<Vec<_>>(); + // tmuxrdr: ui.tab_style = "tmux" draws tmux's status line (tabs_tmux.rs). + let tmux = (config.tab_style == crate::config::TabStyleConfig::Tmux) + .then(|| super::tabs_tmux::TmuxTabs::new(snapshot, &tabs)); let desired_widths = tabs .iter() - .map(|tab| { + .enumerate() + .map(|(index, tab)| { + if let Some(tmux) = &tmux { + return tmux.width(index); + } let label = tab_label(tab); display_width(&label).saturating_add(4).max(MIN_TAB_WIDTH) }) .collect::<Vec<_>>(); let content = tab_bar_content_area(snapshot, area); + let content = tmux.as_ref().map_or(content, |tmux| { + tmux.render_session(buffer, content, palette) + }); let mouse_chrome = config.mouse_capture; let new_tab_width = if mouse_chrome { NEW_TAB_WIDTH } else { 0 }; let desired_total = desired_widths @@ -122,6 +132,9 @@ pub(crate) fn render_tab_bar( left = left as usize, right_padding = padding.saturating_sub(left) as usize, ); + let (text, style) = tmux + .as_ref() + .map_or((text, style), |tmux| tmux.cell(index, tab, palette)); put_text(buffer, rect.x, rect.y, rect.width, &text, style); hits.tabs.push((rect, tab.tab_id.clone())); first_visible.get_or_insert(index); |
