mirror of
https://github.com/wez/wezterm.git
synced 2024-09-19 02:37:51 +03:00
integrated-title-bar: Add macOS support
This commit is contained in:
parent
7d79933d28
commit
e354791c34
@ -182,6 +182,8 @@ impl TabBarState {
|
||||
&self.items
|
||||
}
|
||||
|
||||
// MacOS uses native buttons.
|
||||
#[cfg(not(target_os = "macos"))]
|
||||
fn fancy_window_decorations(
|
||||
mouse_x: Option<usize>,
|
||||
x: &mut usize,
|
||||
@ -406,6 +408,7 @@ impl TabBarState {
|
||||
let mut x = 0;
|
||||
let mut items = vec![];
|
||||
|
||||
#[cfg(not(target_os = "macos"))]
|
||||
if fancy_window_decorations && config.fancy_window_decorations.is_left && !cfg!(widnows) {
|
||||
Self::fancy_window_decorations(mouse_x, &mut x, config, &mut items, &mut line, &colors);
|
||||
}
|
||||
@ -416,6 +419,14 @@ impl TabBarState {
|
||||
.clone(),
|
||||
);
|
||||
|
||||
#[cfg(target_os = "macos")]
|
||||
if fancy_window_decorations && config.use_fancy_tab_bar == false {
|
||||
for _ in 0..10 as usize {
|
||||
line.insert_cell(x, black_cell.clone(), title_width, SEQ_ZERO);
|
||||
x += 1;
|
||||
}
|
||||
}
|
||||
|
||||
let left_status_line = parse_status_text(left_status, black_cell.attrs().clone());
|
||||
if left_status_line.len() > 0 {
|
||||
items.push(TabEntry {
|
||||
@ -504,6 +515,7 @@ impl TabBarState {
|
||||
}
|
||||
|
||||
// Reserve place for buttons
|
||||
#[cfg(not(target_os = "macos"))]
|
||||
let title_width = if fancy_window_decorations
|
||||
&& !config.fancy_window_decorations.is_left
|
||||
&& !cfg!(target_os = "macos")
|
||||
@ -560,10 +572,8 @@ impl TabBarState {
|
||||
line.insert_cell(x, black_cell.clone(), title_width, SEQ_ZERO);
|
||||
}
|
||||
|
||||
if fancy_window_decorations
|
||||
&& !config.fancy_window_decorations.is_left
|
||||
&& !cfg!(target_os = "macos")
|
||||
{
|
||||
#[cfg(not(target_os = "macos"))]
|
||||
if fancy_window_decorations && !config.fancy_window_decorations.is_left {
|
||||
x = title_width;
|
||||
Self::fancy_window_decorations(mouse_x, &mut x, config, &mut items, &mut line, &colors);
|
||||
}
|
||||
|
@ -308,8 +308,8 @@ fn window_button_element(
|
||||
) -> Element {
|
||||
use window::FancyWindowDecorationsStyle as Style;
|
||||
|
||||
#[cfg(any(windows, targer_os = "macos"))]
|
||||
let style = Style::default();
|
||||
#[cfg(windows)]
|
||||
let style = Style::Windows;
|
||||
|
||||
let poly = match style {
|
||||
Style::Windows => {
|
||||
@ -1276,16 +1276,28 @@ impl super::TermWindow {
|
||||
let window_buttons_at_left = self.config.window_decorations
|
||||
== window::WindowDecorations::FANCY
|
||||
&& (self.config.fancy_window_decorations.is_left
|
||||
|| cfg!(target_os = "macos") && cfg!(not(windows)));
|
||||
|| (cfg!(target_os = "macos")) && cfg!(not(windows)));
|
||||
|
||||
let left_padding = if window_buttons_at_left { 0.0 } else { 0.5 };
|
||||
let left_padding = if window_buttons_at_left {
|
||||
if cfg!(target_os = "macos") {
|
||||
if !self.window_state.contains(window::WindowState::FULL_SCREEN) {
|
||||
Dimension::Pixels(70.0)
|
||||
} else {
|
||||
Dimension::Cells(0.5)
|
||||
}
|
||||
} else {
|
||||
Dimension::Pixels(0.0)
|
||||
}
|
||||
} else {
|
||||
Dimension::Cells(0.5)
|
||||
};
|
||||
|
||||
children.push(
|
||||
Element::new(&font, ElementContent::Children(left_eles))
|
||||
.vertical_align(VerticalAlign::Bottom)
|
||||
.colors(bar_colors.clone())
|
||||
.padding(BoxDimension {
|
||||
left: Dimension::Cells(left_padding),
|
||||
left: left_padding,
|
||||
right: Dimension::Cells(0.),
|
||||
top: Dimension::Cells(0.),
|
||||
bottom: Dimension::Cells(0.),
|
||||
|
@ -1229,7 +1229,9 @@ fn apply_decorations_to_window(window: &StrongPtr, decorations: WindowDecoration
|
||||
unsafe {
|
||||
window.setStyleMask_(mask);
|
||||
|
||||
let hidden = if decorations.contains(WindowDecorations::TITLE) {
|
||||
let hidden = if decorations.contains(WindowDecorations::TITLE)
|
||||
|| decorations.contains(WindowDecorations::FANCY)
|
||||
{
|
||||
NO
|
||||
} else {
|
||||
YES
|
||||
@ -1250,7 +1252,11 @@ fn apply_decorations_to_window(window: &StrongPtr, decorations: WindowDecoration
|
||||
} else {
|
||||
appkit::NSWindowTitleVisibility::NSWindowTitleHidden
|
||||
});
|
||||
window.setTitlebarAppearsTransparent_(hidden);
|
||||
if decorations == WindowDecorations::FANCY {
|
||||
window.setTitlebarAppearsTransparent_(YES);
|
||||
} else {
|
||||
window.setTitlebarAppearsTransparent_(hidden);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1264,7 +1270,7 @@ fn decoration_to_mask(decorations: WindowDecorations) -> NSWindowStyleMask {
|
||||
| NSWindowStyleMask::NSClosableWindowMask
|
||||
| NSWindowStyleMask::NSMiniaturizableWindowMask
|
||||
| NSWindowStyleMask::NSResizableWindowMask
|
||||
} else if decorations == WindowDecorations::RESIZE {
|
||||
} else if decorations == WindowDecorations::RESIZE || decorations == WindowDecorations::FANCY {
|
||||
NSWindowStyleMask::NSTitledWindowMask
|
||||
| NSWindowStyleMask::NSClosableWindowMask
|
||||
| NSWindowStyleMask::NSMiniaturizableWindowMask
|
||||
|
Loading…
Reference in New Issue
Block a user