mirror of
https://github.com/alacritty/alacritty.git
synced 2024-11-18 13:55:23 -05:00
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.
This commit is contained in:
parent
44a6dba0af
commit
67db9b228d
11 changed files with 482 additions and 420 deletions
16
CHANGELOG.md
16
CHANGELOG.md
|
@ -24,6 +24,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
||||||
- CLI parameter `--option`/`-o` to override any configuration field
|
- CLI parameter `--option`/`-o` to override any configuration field
|
||||||
- Escape sequences to report text area size in pixels (`CSI 14 t`) and in characters (`CSI 18 t`)
|
- Escape sequences to report text area size in pixels (`CSI 14 t`) and in characters (`CSI 18 t`)
|
||||||
- Support for single line terminals dimensions
|
- Support for single line terminals dimensions
|
||||||
|
- Right clicking on Wayland's client side decorations will show application menu
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
|
@ -33,6 +34,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
||||||
- The user's background color is now used as the foreground for the render timer
|
- The user's background color is now used as the foreground for the render timer
|
||||||
- Use yellow/red from the config for error and warning messages instead of fixed colors
|
- Use yellow/red from the config for error and warning messages instead of fixed colors
|
||||||
- Existing CLI parameters are now passed to instances spawned using `SpawnNewInstance`
|
- Existing CLI parameters are now passed to instances spawned using `SpawnNewInstance`
|
||||||
|
- Wayland's Client side decorations now use the search bar colors
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|
||||||
|
@ -48,6 +50,20 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
||||||
- Selection expanding over 2 characters when scrolled in history with fullwidth characters in use
|
- Selection expanding over 2 characters when scrolled in history with fullwidth characters in use
|
||||||
- Selection scrolling not starting when mouse is over the message bar
|
- Selection scrolling not starting when mouse is over the message bar
|
||||||
- Incorrect text width calculation in message bar when the message contains multibyte characters
|
- Incorrect text width calculation in message bar when the message contains multibyte characters
|
||||||
|
- Remapped caps lock to escape not triggering escape bindings on Wayland
|
||||||
|
- Crash when setting overly long title on Wayland
|
||||||
|
- Switching in and out of various window states, like Fullscreen, not persisting window size on Wayland
|
||||||
|
- Crash when providing 0 for `XCURSOR_SIZE` on Wayland
|
||||||
|
- Gap between window and server side decorations on KWIN Wayland
|
||||||
|
- Wayland's client side decorations not working after tty switch
|
||||||
|
- `Fullscreen` startup mode not working on Wayland
|
||||||
|
- Window not being rescaled when changing DPR of the current monitor on Wayland
|
||||||
|
- Crash in some cases when pointer isn't presented upon startup on Wayland
|
||||||
|
- IME not working on Wayland
|
||||||
|
- Crash on startup on GNOME since its 3.37.90 version on Wayland
|
||||||
|
- Touchpad scrolling scrolled less than it should on macOS/Wayland on scaled outputs
|
||||||
|
- Incorrect modifiers at startup on X11
|
||||||
|
- `Add` and `Subtract` keys are now named `NumpadAdd` and `NumpadSubtract` respectively
|
||||||
|
|
||||||
## 0.5.0
|
## 0.5.0
|
||||||
|
|
||||||
|
|
645
Cargo.lock
generated
645
Cargo.lock
generated
File diff suppressed because it is too large
Load diff
|
@ -691,39 +691,42 @@
|
||||||
#- { key: N, mods: Shift, mode: Vi, action: SearchPrevious }
|
#- { key: N, mods: Shift, mode: Vi, action: SearchPrevious }
|
||||||
|
|
||||||
# (Windows, Linux, and BSD only)
|
# (Windows, Linux, and BSD only)
|
||||||
#- { key: V, mods: Control|Shift, action: Paste }
|
#- { key: V, mods: Control|Shift, action: Paste }
|
||||||
#- { key: C, mods: Control|Shift, action: Copy }
|
#- { key: C, mods: Control|Shift, action: Copy }
|
||||||
#- { key: F, mods: Control|Shift, action: SearchForward }
|
#- { key: F, mods: Control|Shift, action: SearchForward }
|
||||||
#- { key: B, mods: Control|Shift, action: SearchBackward }
|
#- { key: B, mods: Control|Shift, action: SearchBackward }
|
||||||
#- { key: C, mods: Control|Shift, mode: Vi, action: ClearSelection }
|
#- { key: C, mods: Control|Shift, mode: Vi, action: ClearSelection }
|
||||||
#- { key: Insert, mods: Shift, action: PasteSelection }
|
#- { key: Insert, mods: Shift, action: PasteSelection }
|
||||||
#- { key: Key0, mods: Control, action: ResetFontSize }
|
#- { key: Key0, mods: Control, action: ResetFontSize }
|
||||||
#- { key: Equals, mods: Control, action: IncreaseFontSize }
|
#- { key: Equals, mods: Control, action: IncreaseFontSize }
|
||||||
#- { key: Add, mods: Control, action: IncreaseFontSize }
|
#- { key: Plus, mods: Control, action: IncreaseFontSize }
|
||||||
#- { key: Subtract, mods: Control, action: DecreaseFontSize }
|
#- { key: NumpadAdd, mods: Control, action: IncreaseFontSize }
|
||||||
#- { key: Minus, mods: Control, action: DecreaseFontSize }
|
#- { key: Minus, mods: Control, action: DecreaseFontSize }
|
||||||
|
#- { key: NumpadSubtract, mods: Control, action: DecreaseFontSize }
|
||||||
|
|
||||||
# (Windows only)
|
# (Windows only)
|
||||||
#- { key: Return, mods: Alt, action: ToggleFullscreen }
|
#- { key: Return, mods: Alt, action: ToggleFullscreen }
|
||||||
|
|
||||||
# (macOS only)
|
# (macOS only)
|
||||||
#- { key: K, mods: Command, mode: ~Vi, chars: "\x0c" }
|
#- { key: K, mods: Command, mode: ~Vi, chars: "\x0c" }
|
||||||
#- { key: Key0, mods: Command, action: ResetFontSize }
|
#- { key: Key0, mods: Command, action: ResetFontSize }
|
||||||
#- { key: Equals, mods: Command, action: IncreaseFontSize }
|
#- { key: Equals, mods: Command, action: IncreaseFontSize }
|
||||||
#- { key: Add, mods: Command, action: IncreaseFontSize }
|
#- { key: Plus, mods: Command, action: IncreaseFontSize }
|
||||||
#- { key: Minus, mods: Command, action: DecreaseFontSize }
|
#- { key: NumpadAdd, mods: Command, action: IncreaseFontSize }
|
||||||
#- { key: K, mods: Command, action: ClearHistory }
|
#- { key: Minus, mods: Command, action: DecreaseFontSize }
|
||||||
#- { key: V, mods: Command, action: Paste }
|
#- { key: NumpadSubtract, mods: Command, action: DecreaseFontSize }
|
||||||
#- { key: C, mods: Command, action: Copy }
|
#- { key: K, mods: Command, action: ClearHistory }
|
||||||
#- { key: C, mods: Command, mode: Vi, action: ClearSelection }
|
#- { key: V, mods: Command, action: Paste }
|
||||||
#- { key: H, mods: Command, action: Hide }
|
#- { key: C, mods: Command, action: Copy }
|
||||||
#- { key: M, mods: Command, action: Minimize }
|
#- { key: C, mods: Command, mode: Vi, action: ClearSelection }
|
||||||
#- { key: Q, mods: Command, action: Quit }
|
#- { key: H, mods: Command, action: Hide }
|
||||||
#- { key: W, mods: Command, action: Quit }
|
#- { key: M, mods: Command, action: Minimize }
|
||||||
#- { key: N, mods: Command, action: SpawnNewInstance }
|
#- { key: Q, mods: Command, action: Quit }
|
||||||
#- { key: F, mods: Command|Control, action: ToggleFullscreen }
|
#- { key: W, mods: Command, action: Quit }
|
||||||
#- { key: F, mods: Command, action: SearchForward }
|
#- { key: N, mods: Command, action: SpawnNewInstance }
|
||||||
#- { key: B, mods: Command, action: SearchBackward }
|
#- { key: F, mods: Command|Control, action: ToggleFullscreen }
|
||||||
|
#- { key: F, mods: Command, action: SearchForward }
|
||||||
|
#- { key: B, mods: Command, action: SearchBackward }
|
||||||
|
|
||||||
#debug:
|
#debug:
|
||||||
# Display the time it takes to redraw each frame.
|
# Display the time it takes to redraw each frame.
|
||||||
|
|
|
@ -21,9 +21,9 @@ fnv = "1"
|
||||||
serde = { version = "1", features = ["derive"] }
|
serde = { version = "1", features = ["derive"] }
|
||||||
serde_yaml = "0.8"
|
serde_yaml = "0.8"
|
||||||
serde_json = "1"
|
serde_json = "1"
|
||||||
glutin = { version = "0.24.0", features = ["serde"] }
|
glutin = { version = "0.25.0", features = ["serde"] }
|
||||||
notify = "4"
|
notify = "4"
|
||||||
parking_lot = "0.10.2"
|
parking_lot = "0.11.0"
|
||||||
crossfont = { version = "0.1.0", features = ["force_system_fontconfig"] }
|
crossfont = { version = "0.1.0", features = ["force_system_fontconfig"] }
|
||||||
urlocator = "0.1.3"
|
urlocator = "0.1.3"
|
||||||
copypasta = { version = "0.7.0", default-features = false }
|
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]
|
[target.'cfg(not(any(target_os="windows", target_os="macos")))'.dependencies]
|
||||||
x11-dl = "2"
|
x11-dl = "2"
|
||||||
wayland-client = { version = "0.27.0", features = ["dlopen"] }
|
wayland-client = { version = "0.28.0", features = ["dlopen"] }
|
||||||
|
|
||||||
[target.'cfg(windows)'.dependencies]
|
[target.'cfg(windows)'.dependencies]
|
||||||
winapi = { version = "0.3.7", features = ["impl-default", "wincon"]}
|
winapi = { version = "0.3.7", features = ["impl-default", "wincon"]}
|
||||||
|
|
|
@ -494,9 +494,10 @@ fn common_keybindings() -> Vec<KeyBinding> {
|
||||||
Insert, ModifiersState::SHIFT, ~TermMode::VI; Action::PasteSelection;
|
Insert, ModifiersState::SHIFT, ~TermMode::VI; Action::PasteSelection;
|
||||||
Key0, ModifiersState::CTRL; Action::ResetFontSize;
|
Key0, ModifiersState::CTRL; Action::ResetFontSize;
|
||||||
Equals, ModifiersState::CTRL; Action::IncreaseFontSize;
|
Equals, ModifiersState::CTRL; Action::IncreaseFontSize;
|
||||||
Add, ModifiersState::CTRL; Action::IncreaseFontSize;
|
Plus, ModifiersState::CTRL; Action::IncreaseFontSize;
|
||||||
Subtract, ModifiersState::CTRL; Action::DecreaseFontSize;
|
NumpadAdd, ModifiersState::CTRL; Action::IncreaseFontSize;
|
||||||
Minus, ModifiersState::CTRL; Action::DecreaseFontSize;
|
Minus, ModifiersState::CTRL; Action::DecreaseFontSize;
|
||||||
|
NumpadSubtract, ModifiersState::CTRL; Action::DecreaseFontSize;
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -521,8 +522,10 @@ pub fn platform_key_bindings() -> Vec<KeyBinding> {
|
||||||
KeyBinding;
|
KeyBinding;
|
||||||
Key0, ModifiersState::LOGO; Action::ResetFontSize;
|
Key0, ModifiersState::LOGO; Action::ResetFontSize;
|
||||||
Equals, ModifiersState::LOGO; Action::IncreaseFontSize;
|
Equals, ModifiersState::LOGO; Action::IncreaseFontSize;
|
||||||
Add, ModifiersState::LOGO; Action::IncreaseFontSize;
|
Plus, ModifiersState::LOGO; Action::IncreaseFontSize;
|
||||||
Minus, ModifiersState::LOGO; Action::DecreaseFontSize;
|
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());
|
Insert, ModifiersState::SHIFT, ~TermMode::VI; Action::Esc("\x1b[2;2~".into());
|
||||||
K, ModifiersState::LOGO, ~TermMode::VI; Action::Esc("\x0c".into());
|
K, ModifiersState::LOGO, ~TermMode::VI; Action::Esc("\x0c".into());
|
||||||
V, ModifiersState::LOGO, ~TermMode::VI; Action::Paste;
|
V, ModifiersState::LOGO, ~TermMode::VI; Action::Paste;
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
use std::os::raw::c_ulong;
|
use std::os::raw::c_ulong;
|
||||||
|
|
||||||
|
use glutin::window::Fullscreen;
|
||||||
use log::error;
|
use log::error;
|
||||||
use serde::{Deserialize, Deserializer};
|
use serde::{Deserialize, Deserializer};
|
||||||
use serde_yaml::Value;
|
use serde_yaml::Value;
|
||||||
|
@ -98,6 +99,20 @@ impl WindowConfig {
|
||||||
let padding_y = (f32::from(self.padding.y) * dpr as f32).floor();
|
let padding_y = (f32::from(self.padding.y) * dpr as f32).floor();
|
||||||
(padding_x, padding_y)
|
(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 {
|
impl Default for WindowConfig {
|
||||||
|
|
|
@ -31,7 +31,9 @@ use alacritty_terminal::term::{RenderableCell, SizeInfo, Term, TermMode};
|
||||||
use alacritty_terminal::term::{MIN_COLS, MIN_SCREEN_LINES};
|
use alacritty_terminal::term::{MIN_COLS, MIN_SCREEN_LINES};
|
||||||
|
|
||||||
use crate::config::font::Font;
|
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::config::Config;
|
||||||
use crate::event::{Mouse, SearchState};
|
use crate::event::{Mouse, SearchState};
|
||||||
use crate::message_bar::{MessageBuffer, MessageType};
|
use crate::message_bar::{MessageBuffer, MessageType};
|
||||||
|
@ -275,12 +277,12 @@ impl Display {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[allow(clippy::single_match)]
|
#[allow(clippy::single_match)]
|
||||||
|
#[cfg(not(windows))]
|
||||||
match config.ui_config.window.startup_mode {
|
match config.ui_config.window.startup_mode {
|
||||||
StartupMode::Fullscreen => window.set_fullscreen(true),
|
|
||||||
#[cfg(target_os = "macos")]
|
#[cfg(target_os = "macos")]
|
||||||
StartupMode::SimpleFullscreen => window.set_simple_fullscreen(true),
|
StartupMode::SimpleFullscreen => window.set_simple_fullscreen(true),
|
||||||
#[cfg(not(any(target_os = "macos", windows)))]
|
#[cfg(not(target_os = "macos"))]
|
||||||
StartupMode::Maximized => window.set_maximized(true),
|
StartupMode::Maximized if is_x11 => window.set_maximized(true),
|
||||||
_ => (),
|
_ => (),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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::config::Colors;
|
||||||
use alacritty_terminal::term::color::{Rgb, DIM_FACTOR};
|
use alacritty_terminal::term::color::Rgb;
|
||||||
|
|
||||||
|
const INACTIVE_OPACITY: u8 = 127;
|
||||||
|
|
||||||
#[derive(Debug, Clone)]
|
#[derive(Debug, Clone)]
|
||||||
pub struct AlacrittyWaylandTheme {
|
pub struct AlacrittyWaylandTheme {
|
||||||
pub background: Rgb,
|
pub background: ARGBColor,
|
||||||
pub foreground: Rgb,
|
pub foreground: ARGBColor,
|
||||||
pub dim_foreground: Rgb,
|
pub dim_foreground: ARGBColor,
|
||||||
pub hovered_close_icon: Rgb,
|
pub hovered_close_icon: ARGBColor,
|
||||||
pub hovered_maximize_icon: Rgb,
|
pub hovered_maximize_icon: ARGBColor,
|
||||||
pub hovered_minimize_icon: Rgb,
|
pub hovered_minimize_icon: ARGBColor,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl AlacrittyWaylandTheme {
|
impl AlacrittyWaylandTheme {
|
||||||
pub fn new(colors: &Colors) -> Self {
|
pub fn new(colors: &Colors) -> Self {
|
||||||
let hovered_close_icon = colors.normal().red;
|
let hovered_close_icon = colors.normal().red.into_rgba();
|
||||||
let hovered_maximize_icon = colors.normal().green;
|
let hovered_maximize_icon = colors.normal().green.into_rgba();
|
||||||
let hovered_minimize_icon = colors.normal().yellow;
|
let hovered_minimize_icon = colors.normal().yellow.into_rgba();
|
||||||
let foreground = colors.primary.foreground;
|
let foreground = colors.search_bar_foreground().into_rgba();
|
||||||
let background = colors.primary.background;
|
let background = colors.search_bar_background().into_rgba();
|
||||||
let dim_foreground = colors.primary.dim_foreground.unwrap_or(foreground * DIM_FACTOR);
|
|
||||||
|
let mut dim_foreground = foreground;
|
||||||
|
dim_foreground.a = INACTIVE_OPACITY;
|
||||||
|
|
||||||
Self {
|
Self {
|
||||||
foreground,
|
foreground,
|
||||||
|
@ -31,52 +35,46 @@ impl AlacrittyWaylandTheme {
|
||||||
hovered_maximize_icon,
|
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 {
|
impl WaylandTheme for AlacrittyWaylandTheme {
|
||||||
fn primary_color(&self, _window_active: bool) -> [u8; 4] {
|
fn element_color(&self, element: Element, window_active: bool) -> ARGBColor {
|
||||||
[0xff, self.background.r, self.background.g, self.background.b]
|
match element {
|
||||||
}
|
Element::Bar | Element::Separator => self.background,
|
||||||
|
Element::Text if window_active => self.foreground,
|
||||||
fn secondary_color(&self, window_active: bool) -> [u8; 4] {
|
Element::Text => self.dim_foreground,
|
||||||
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 close_button_color(&self, _status: ButtonState) -> [u8; 4] {
|
fn button_color(
|
||||||
[0x00, self.background.r, self.background.g, self.background.b]
|
&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 close_button_icon_color(&self, status: ButtonState) -> [u8; 4] {
|
match (state, button) {
|
||||||
self.color_icon_color(self.hovered_close_icon, status)
|
(ButtonState::Idle, _) => self.foreground,
|
||||||
}
|
(ButtonState::Disabled, _) => self.dim_foreground,
|
||||||
|
(_, Button::Minimize) => self.hovered_minimize_icon,
|
||||||
fn maximize_button_color(&self, _status: ButtonState) -> [u8; 4] {
|
(_, Button::Maximize) => self.hovered_maximize_icon,
|
||||||
[0x00, self.background.r, self.background.g, self.background.b]
|
(_, Button::Close) => self.hovered_close_icon,
|
||||||
}
|
}
|
||||||
|
}
|
||||||
fn maximize_button_icon_color(&self, status: ButtonState) -> [u8; 4] {
|
}
|
||||||
self.color_icon_color(self.hovered_maximize_icon, status)
|
|
||||||
}
|
trait IntoARGBColor {
|
||||||
|
fn into_rgba(self) -> ARGBColor;
|
||||||
fn minimize_button_color(&self, _status: ButtonState) -> [u8; 4] {
|
}
|
||||||
[0x00, self.background.r, self.background.g, self.background.b]
|
|
||||||
}
|
impl IntoARGBColor for Rgb {
|
||||||
|
fn into_rgba(self) -> ARGBColor {
|
||||||
fn minimize_button_icon_color(&self, status: ButtonState) -> [u8; 4] {
|
ARGBColor { a: 0xff, r: self.r, g: self.g, b: self.b }
|
||||||
self.color_icon_color(self.hovered_minimize_icon, status)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -36,7 +36,7 @@ use winapi::shared::minwindef::WORD;
|
||||||
use alacritty_terminal::index::Point;
|
use alacritty_terminal::index::Point;
|
||||||
use alacritty_terminal::term::SizeInfo;
|
use alacritty_terminal::term::SizeInfo;
|
||||||
|
|
||||||
use crate::config::window::{Decorations, StartupMode, WindowConfig};
|
use crate::config::window::{Decorations, WindowConfig};
|
||||||
use crate::config::Config;
|
use crate::config::Config;
|
||||||
use crate::gl;
|
use crate::gl;
|
||||||
|
|
||||||
|
@ -259,7 +259,8 @@ impl Window {
|
||||||
.with_visible(false)
|
.with_visible(false)
|
||||||
.with_transparent(true)
|
.with_transparent(true)
|
||||||
.with_decorations(window_config.decorations != Decorations::None)
|
.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())
|
.with_window_icon(icon.ok())
|
||||||
// X11.
|
// X11.
|
||||||
.with_class(class.instance.clone(), class.general.clone())
|
.with_class(class.instance.clone(), class.general.clone())
|
||||||
|
@ -282,7 +283,8 @@ impl Window {
|
||||||
.with_visible(false)
|
.with_visible(false)
|
||||||
.with_decorations(window_config.decorations != Decorations::None)
|
.with_decorations(window_config.decorations != Decorations::None)
|
||||||
.with_transparent(true)
|
.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())
|
.with_window_icon(icon.ok())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -292,7 +294,8 @@ impl Window {
|
||||||
.with_title(title)
|
.with_title(title)
|
||||||
.with_visible(false)
|
.with_visible(false)
|
||||||
.with_transparent(true)
|
.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 {
|
match window_config.decorations {
|
||||||
Decorations::Full => window,
|
Decorations::Full => window,
|
||||||
|
@ -360,8 +363,7 @@ impl Window {
|
||||||
|
|
||||||
pub fn set_fullscreen(&mut self, fullscreen: bool) {
|
pub fn set_fullscreen(&mut self, fullscreen: bool) {
|
||||||
if fullscreen {
|
if fullscreen {
|
||||||
let current_monitor = self.window().current_monitor();
|
self.window().set_fullscreen(Some(Fullscreen::Borderless(None)));
|
||||||
self.window().set_fullscreen(Some(Fullscreen::Borderless(current_monitor)));
|
|
||||||
} else {
|
} else {
|
||||||
self.window().set_fullscreen(None);
|
self.window().set_fullscreen(None);
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,7 +11,7 @@ edition = "2018"
|
||||||
[dependencies]
|
[dependencies]
|
||||||
libc = "0.2"
|
libc = "0.2"
|
||||||
bitflags = "1"
|
bitflags = "1"
|
||||||
parking_lot = "0.10.2"
|
parking_lot = "0.11.0"
|
||||||
serde = { version = "1", features = ["derive"] }
|
serde = { version = "1", features = ["derive"] }
|
||||||
serde_yaml = "0.8"
|
serde_yaml = "0.8"
|
||||||
vte = { git = "https://github.com/alacritty/vte", rev = "4f44023dab081f7da74fee14bc53b10ee8f96a1e", default-features = false }
|
vte = { git = "https://github.com/alacritty/vte", rev = "4f44023dab081f7da74fee14bc53b10ee8f96a1e", default-features = false }
|
||||||
|
@ -24,7 +24,7 @@ terminfo = "0.7.1"
|
||||||
regex-automata = "0.1.9"
|
regex-automata = "0.1.9"
|
||||||
|
|
||||||
[target.'cfg(unix)'.dependencies]
|
[target.'cfg(unix)'.dependencies]
|
||||||
nix = "0.17.0"
|
nix = "0.18.0"
|
||||||
signal-hook = { version = "0.1", features = ["mio-support"] }
|
signal-hook = { version = "0.1", features = ["mio-support"] }
|
||||||
|
|
||||||
[target.'cfg(windows)'.dependencies]
|
[target.'cfg(windows)'.dependencies]
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
use std::fmt::{self, Display, Formatter};
|
use std::fmt::{self, Display, Formatter};
|
||||||
use std::ops::{Index, IndexMut, Mul};
|
use std::ops::{Add, Index, IndexMut, Mul};
|
||||||
use std::str::FromStr;
|
use std::str::FromStr;
|
||||||
|
|
||||||
use log::trace;
|
use log::trace;
|
||||||
|
@ -75,6 +75,18 @@ impl Mul<f32> for Rgb {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl Add<Rgb> for Rgb {
|
||||||
|
type Output = Rgb;
|
||||||
|
|
||||||
|
fn add(self, rhs: Rgb) -> Rgb {
|
||||||
|
Rgb {
|
||||||
|
r: self.r.saturating_add(rhs.r),
|
||||||
|
g: self.g.saturating_add(rhs.g),
|
||||||
|
b: self.b.saturating_add(rhs.b),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// Deserialize an Rgb from a hex string.
|
/// Deserialize an Rgb from a hex string.
|
||||||
///
|
///
|
||||||
/// This is *not* the deserialize impl for Rgb since we want a symmetric
|
/// This is *not* the deserialize impl for Rgb since we want a symmetric
|
||||||
|
|
Loading…
Reference in a new issue