aboutsummaryrefslogtreecommitdiff
path: root/alacritty/src
diff options
context:
space:
mode:
authorKirill Chibisov <contact@kchibisov.com>2020-10-07 17:40:50 +0300
committerGitHub <noreply@github.com>2020-10-07 17:40:50 +0300
commit67db9b228d3b6c63484ca4b8fcae577afc0ee22a (patch)
tree52e2640140a4786f42d6ac6cf6f081c6dd9b21a2 /alacritty/src
parent44a6dba0af03d3b9305ceea31c3289709cc750e3 (diff)
downloadr-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/src')
-rw-r--r--alacritty/src/config/bindings.rs13
-rw-r--r--alacritty/src/config/window.rs15
-rw-r--r--alacritty/src/display.rs10
-rw-r--r--alacritty/src/wayland_theme.rs100
-rw-r--r--alacritty/src/window.rs14
5 files changed, 86 insertions, 66 deletions
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);
}