diff options
Diffstat (limited to 'alacritty/src/config')
-rw-r--r-- | alacritty/src/config/window.rs | 70 |
1 files changed, 38 insertions, 32 deletions
diff --git a/alacritty/src/config/window.rs b/alacritty/src/config/window.rs index f866e180..d2e5da68 100644 --- a/alacritty/src/config/window.rs +++ b/alacritty/src/config/window.rs @@ -15,26 +15,14 @@ pub const DEFAULT_NAME: &str = "Alacritty"; #[serde(default)] #[derive(Deserialize, Debug, Clone, PartialEq, Eq)] pub struct WindowConfig { - /// Initial dimensions. - #[serde(deserialize_with = "failure_default")] - pub dimensions: Dimensions, - /// Initial position. #[serde(deserialize_with = "failure_default")] pub position: Option<Delta<i32>>, - /// Pixel padding. - #[serde(deserialize_with = "failure_default")] - pub padding: Delta<u8>, - /// Draw the window with title bar / borders. #[serde(deserialize_with = "failure_default")] pub decorations: Decorations, - /// Spread out additional padding evenly. - #[serde(deserialize_with = "failure_default")] - pub dynamic_padding: bool, - /// Startup mode. #[serde(deserialize_with = "failure_default")] pub startup_mode: StartupMode, @@ -55,9 +43,21 @@ pub struct WindowConfig { #[serde(deserialize_with = "option_explicit_none")] pub gtk_theme_variant: Option<String>, + /// Spread out additional padding evenly. + #[serde(deserialize_with = "failure_default")] + pub dynamic_padding: bool, + + /// Pixel padding. + #[serde(deserialize_with = "failure_default")] + padding: Delta<u8>, + /// Use dynamic title. #[serde(default, deserialize_with = "failure_default")] dynamic_title: DefaultTrueBool, + + /// Initial dimensions. + #[serde(deserialize_with = "failure_default")] + dimensions: Dimensions, } pub fn default_title() -> String { @@ -74,6 +74,30 @@ impl WindowConfig { pub fn set_dynamic_title(&mut self, dynamic_title: bool) { self.dynamic_title.0 = dynamic_title; } + + #[inline] + pub fn set_dimensions(&mut self, dimensions: Dimensions) { + self.dimensions = dimensions; + } + + #[inline] + pub fn dimensions(&self) -> Option<Dimensions> { + if self.dimensions.columns.0 != 0 + && self.dimensions.lines.0 != 0 + && self.startup_mode != StartupMode::Maximized + { + Some(self.dimensions) + } else { + None + } + } + + #[inline] + pub fn padding(&self, dpr: f64) -> (f32, f32) { + let padding_x = (f32::from(self.padding.x) * dpr as f32).floor(); + let padding_y = (f32::from(self.padding.y) * dpr as f32).floor(); + (padding_x, padding_y) + } } impl Default for WindowConfig { @@ -137,29 +161,11 @@ impl Default for Decorations { pub struct Dimensions { /// Window width in character columns. #[serde(deserialize_with = "failure_default")] - columns: Column, + pub columns: Column, /// Window Height in character lines. #[serde(deserialize_with = "failure_default")] - lines: Line, -} - -impl Dimensions { - pub fn new(columns: Column, lines: Line) -> Self { - Dimensions { columns, lines } - } - - /// Get lines. - #[inline] - pub fn lines_u32(&self) -> u32 { - self.lines.0 as u32 - } - - /// Get columns. - #[inline] - pub fn columns_u32(&self) -> u32 { - self.columns.0 as u32 - } + pub lines: Line, } /// Window class hint. |