diff options
author | Kirill Chibisov <contact@kchibisov.com> | 2020-10-07 17:40:50 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-10-07 17:40:50 +0300 |
commit | 67db9b228d3b6c63484ca4b8fcae577afc0ee22a (patch) | |
tree | 52e2640140a4786f42d6ac6cf6f081c6dd9b21a2 /alacritty | |
parent | 44a6dba0af03d3b9305ceea31c3289709cc750e3 (diff) | |
download | r-alacritty-67db9b228d3b6c63484ca4b8fcae577afc0ee22a.tar.gz r-alacritty-67db9b228d3b6c63484ca4b8fcae577afc0ee22a.tar.bz2 r-alacritty-67db9b228d3b6c63484ca4b8fcae577afc0ee22a.zip |
Bump glutin to 0.25.0
Fixes #4206.
Fixes #4162.
Fixes #4017.
Fixes #3998.
Fixes #3831.
Fixes #3782.
Fixes #3708.
Fixes #2734.
Fixes #2714.
Fixes #1801.
Diffstat (limited to 'alacritty')
-rw-r--r-- | alacritty/Cargo.toml | 6 | ||||
-rw-r--r-- | alacritty/src/config/bindings.rs | 13 | ||||
-rw-r--r-- | alacritty/src/config/window.rs | 15 | ||||
-rw-r--r-- | alacritty/src/display.rs | 10 | ||||
-rw-r--r-- | alacritty/src/wayland_theme.rs | 100 | ||||
-rw-r--r-- | alacritty/src/window.rs | 14 |
6 files changed, 89 insertions, 69 deletions
diff --git a/alacritty/Cargo.toml b/alacritty/Cargo.toml index 74935323..1bacd0cf 100644 --- a/alacritty/Cargo.toml +++ b/alacritty/Cargo.toml @@ -21,9 +21,9 @@ fnv = "1" serde = { version = "1", features = ["derive"] } serde_yaml = "0.8" serde_json = "1" -glutin = { version = "0.24.0", features = ["serde"] } +glutin = { version = "0.25.0", features = ["serde"] } notify = "4" -parking_lot = "0.10.2" +parking_lot = "0.11.0" crossfont = { version = "0.1.0", features = ["force_system_fontconfig"] } urlocator = "0.1.3" copypasta = { version = "0.7.0", default-features = false } @@ -48,7 +48,7 @@ dirs = "2.0.2" [target.'cfg(not(any(target_os="windows", target_os="macos")))'.dependencies] x11-dl = "2" -wayland-client = { version = "0.27.0", features = ["dlopen"] } +wayland-client = { version = "0.28.0", features = ["dlopen"] } [target.'cfg(windows)'.dependencies] winapi = { version = "0.3.7", features = ["impl-default", "wincon"]} diff --git a/alacritty/src/config/bindings.rs b/alacritty/src/config/bindings.rs index 74514a5a..62da0e6c 100644 --- a/alacritty/src/config/bindings.rs +++ b/alacritty/src/config/bindings.rs @@ -494,9 +494,10 @@ fn common_keybindings() -> Vec<KeyBinding> { Insert, ModifiersState::SHIFT, ~TermMode::VI; Action::PasteSelection; Key0, ModifiersState::CTRL; Action::ResetFontSize; Equals, ModifiersState::CTRL; Action::IncreaseFontSize; - Add, ModifiersState::CTRL; Action::IncreaseFontSize; - Subtract, ModifiersState::CTRL; Action::DecreaseFontSize; - Minus, ModifiersState::CTRL; Action::DecreaseFontSize; + Plus, ModifiersState::CTRL; Action::IncreaseFontSize; + NumpadAdd, ModifiersState::CTRL; Action::IncreaseFontSize; + Minus, ModifiersState::CTRL; Action::DecreaseFontSize; + NumpadSubtract, ModifiersState::CTRL; Action::DecreaseFontSize; ) } @@ -521,8 +522,10 @@ pub fn platform_key_bindings() -> Vec<KeyBinding> { KeyBinding; Key0, ModifiersState::LOGO; Action::ResetFontSize; Equals, ModifiersState::LOGO; Action::IncreaseFontSize; - Add, ModifiersState::LOGO; Action::IncreaseFontSize; - Minus, ModifiersState::LOGO; Action::DecreaseFontSize; + Plus, ModifiersState::LOGO; Action::IncreaseFontSize; + NumpadAdd, ModifiersState::LOGO; Action::IncreaseFontSize; + Minus, ModifiersState::LOGO; Action::DecreaseFontSize; + NumpadSubtract, ModifiersState::LOGO; Action::DecreaseFontSize; Insert, ModifiersState::SHIFT, ~TermMode::VI; Action::Esc("\x1b[2;2~".into()); K, ModifiersState::LOGO, ~TermMode::VI; Action::Esc("\x0c".into()); V, ModifiersState::LOGO, ~TermMode::VI; Action::Paste; diff --git a/alacritty/src/config/window.rs b/alacritty/src/config/window.rs index d2e5da68..17c9de5c 100644 --- a/alacritty/src/config/window.rs +++ b/alacritty/src/config/window.rs @@ -1,5 +1,6 @@ use std::os::raw::c_ulong; +use glutin::window::Fullscreen; use log::error; use serde::{Deserialize, Deserializer}; use serde_yaml::Value; @@ -98,6 +99,20 @@ impl WindowConfig { let padding_y = (f32::from(self.padding.y) * dpr as f32).floor(); (padding_x, padding_y) } + + #[inline] + pub fn fullscreen(&self) -> Option<Fullscreen> { + if self.startup_mode == StartupMode::Fullscreen { + Some(Fullscreen::Borderless(None)) + } else { + None + } + } + + #[inline] + pub fn maximized(&self) -> bool { + self.startup_mode == StartupMode::Maximized + } } impl Default for WindowConfig { diff --git a/alacritty/src/display.rs b/alacritty/src/display.rs index 0b493936..a30d7ad2 100644 --- a/alacritty/src/display.rs +++ b/alacritty/src/display.rs @@ -31,7 +31,9 @@ use alacritty_terminal::term::{RenderableCell, SizeInfo, Term, TermMode}; use alacritty_terminal::term::{MIN_COLS, MIN_SCREEN_LINES}; use crate::config::font::Font; -use crate::config::window::{Dimensions, StartupMode}; +use crate::config::window::Dimensions; +#[cfg(not(windows))] +use crate::config::window::StartupMode; use crate::config::Config; use crate::event::{Mouse, SearchState}; use crate::message_bar::{MessageBuffer, MessageType}; @@ -275,12 +277,12 @@ impl Display { } #[allow(clippy::single_match)] + #[cfg(not(windows))] match config.ui_config.window.startup_mode { - StartupMode::Fullscreen => window.set_fullscreen(true), #[cfg(target_os = "macos")] StartupMode::SimpleFullscreen => window.set_simple_fullscreen(true), - #[cfg(not(any(target_os = "macos", windows)))] - StartupMode::Maximized => window.set_maximized(true), + #[cfg(not(target_os = "macos"))] + StartupMode::Maximized if is_x11 => window.set_maximized(true), _ => (), } diff --git a/alacritty/src/wayland_theme.rs b/alacritty/src/wayland_theme.rs index b1d4b44c..b9c4381e 100644 --- a/alacritty/src/wayland_theme.rs +++ b/alacritty/src/wayland_theme.rs @@ -1,26 +1,30 @@ -use glutin::platform::unix::{ButtonState, Theme as WaylandTheme}; +use glutin::platform::unix::{ARGBColor, Button, ButtonState, Element, Theme as WaylandTheme}; use alacritty_terminal::config::Colors; -use alacritty_terminal::term::color::{Rgb, DIM_FACTOR}; +use alacritty_terminal::term::color::Rgb; + +const INACTIVE_OPACITY: u8 = 127; #[derive(Debug, Clone)] pub struct AlacrittyWaylandTheme { - pub background: Rgb, - pub foreground: Rgb, - pub dim_foreground: Rgb, - pub hovered_close_icon: Rgb, - pub hovered_maximize_icon: Rgb, - pub hovered_minimize_icon: Rgb, + pub background: ARGBColor, + pub foreground: ARGBColor, + pub dim_foreground: ARGBColor, + pub hovered_close_icon: ARGBColor, + pub hovered_maximize_icon: ARGBColor, + pub hovered_minimize_icon: ARGBColor, } impl AlacrittyWaylandTheme { pub fn new(colors: &Colors) -> Self { - let hovered_close_icon = colors.normal().red; - let hovered_maximize_icon = colors.normal().green; - let hovered_minimize_icon = colors.normal().yellow; - let foreground = colors.primary.foreground; - let background = colors.primary.background; - let dim_foreground = colors.primary.dim_foreground.unwrap_or(foreground * DIM_FACTOR); + let hovered_close_icon = colors.normal().red.into_rgba(); + let hovered_maximize_icon = colors.normal().green.into_rgba(); + let hovered_minimize_icon = colors.normal().yellow.into_rgba(); + let foreground = colors.search_bar_foreground().into_rgba(); + let background = colors.search_bar_background().into_rgba(); + + let mut dim_foreground = foreground; + dim_foreground.a = INACTIVE_OPACITY; Self { foreground, @@ -31,52 +35,46 @@ impl AlacrittyWaylandTheme { hovered_maximize_icon, } } - - fn color_icon_color(&self, color: Rgb, status: ButtonState) -> [u8; 4] { - match status { - ButtonState::Hovered => [0xff, color.r, color.g, color.b], - ButtonState::Idle => [0xff, self.foreground.r, self.foreground.g, self.foreground.b], - ButtonState::Disabled => { - [0xff, self.dim_foreground.r, self.dim_foreground.g, self.dim_foreground.b] - }, - } - } } impl WaylandTheme for AlacrittyWaylandTheme { - fn primary_color(&self, _window_active: bool) -> [u8; 4] { - [0xff, self.background.r, self.background.g, self.background.b] - } - - fn secondary_color(&self, window_active: bool) -> [u8; 4] { - if window_active { - [0xff, self.foreground.r, self.foreground.g, self.foreground.b] - } else { - [0xff, self.dim_foreground.r, self.dim_foreground.g, self.dim_foreground.b] + fn element_color(&self, element: Element, window_active: bool) -> ARGBColor { + match element { + Element::Bar | Element::Separator => self.background, + Element::Text if window_active => self.foreground, + Element::Text => self.dim_foreground, } } - fn close_button_color(&self, _status: ButtonState) -> [u8; 4] { - [0x00, self.background.r, self.background.g, self.background.b] - } - - fn close_button_icon_color(&self, status: ButtonState) -> [u8; 4] { - self.color_icon_color(self.hovered_close_icon, status) - } - - fn maximize_button_color(&self, _status: ButtonState) -> [u8; 4] { - [0x00, self.background.r, self.background.g, self.background.b] - } + fn button_color( + &self, + button: Button, + state: ButtonState, + foreground: bool, + window_active: bool, + ) -> ARGBColor { + if !foreground { + return ARGBColor { a: 0, r: 0, g: 0, b: 0 }; + } else if !window_active { + return self.dim_foreground; + } - fn maximize_button_icon_color(&self, status: ButtonState) -> [u8; 4] { - self.color_icon_color(self.hovered_maximize_icon, status) + match (state, button) { + (ButtonState::Idle, _) => self.foreground, + (ButtonState::Disabled, _) => self.dim_foreground, + (_, Button::Minimize) => self.hovered_minimize_icon, + (_, Button::Maximize) => self.hovered_maximize_icon, + (_, Button::Close) => self.hovered_close_icon, + } } +} - fn minimize_button_color(&self, _status: ButtonState) -> [u8; 4] { - [0x00, self.background.r, self.background.g, self.background.b] - } +trait IntoARGBColor { + fn into_rgba(self) -> ARGBColor; +} - fn minimize_button_icon_color(&self, status: ButtonState) -> [u8; 4] { - self.color_icon_color(self.hovered_minimize_icon, status) +impl IntoARGBColor for Rgb { + fn into_rgba(self) -> ARGBColor { + ARGBColor { a: 0xff, r: self.r, g: self.g, b: self.b } } } diff --git a/alacritty/src/window.rs b/alacritty/src/window.rs index 92fedc86..1d3b0774 100644 --- a/alacritty/src/window.rs +++ b/alacritty/src/window.rs @@ -36,7 +36,7 @@ use winapi::shared::minwindef::WORD; use alacritty_terminal::index::Point; use alacritty_terminal::term::SizeInfo; -use crate::config::window::{Decorations, StartupMode, WindowConfig}; +use crate::config::window::{Decorations, WindowConfig}; use crate::config::Config; use crate::gl; @@ -259,7 +259,8 @@ impl Window { .with_visible(false) .with_transparent(true) .with_decorations(window_config.decorations != Decorations::None) - .with_maximized(window_config.startup_mode == StartupMode::Maximized) + .with_maximized(window_config.maximized()) + .with_fullscreen(window_config.fullscreen()) .with_window_icon(icon.ok()) // X11. .with_class(class.instance.clone(), class.general.clone()) @@ -282,7 +283,8 @@ impl Window { .with_visible(false) .with_decorations(window_config.decorations != Decorations::None) .with_transparent(true) - .with_maximized(window_config.startup_mode == StartupMode::Maximized) + .with_maximized(window_config.maximized()) + .with_fullscreen(window_config.fullscreen()) .with_window_icon(icon.ok()) } @@ -292,7 +294,8 @@ impl Window { .with_title(title) .with_visible(false) .with_transparent(true) - .with_maximized(window_config.startup_mode == StartupMode::Maximized); + .with_maximized(window_config.maximized()) + .with_fullscreen(window_config.fullscreen()); match window_config.decorations { Decorations::Full => window, @@ -360,8 +363,7 @@ impl Window { pub fn set_fullscreen(&mut self, fullscreen: bool) { if fullscreen { - let current_monitor = self.window().current_monitor(); - self.window().set_fullscreen(Some(Fullscreen::Borderless(current_monitor))); + self.window().set_fullscreen(Some(Fullscreen::Borderless(None))); } else { self.window().set_fullscreen(None); } |