From 56e02a398d9853a4a52a5200560ca75179f7c23c Mon Sep 17 00:00:00 2001 From: Ivan Molodetskikh Date: Sun, 19 May 2024 17:55:54 +0400 Subject: Add Default impl for niri_config::Keyboard Fixes https://github.com/YaLTeR/niri/issues/357 --- niri-config/src/lib.rs | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/niri-config/src/lib.rs b/niri-config/src/lib.rs index ae3a1d56..1c63e5c1 100644 --- a/niri-config/src/lib.rs +++ b/niri-config/src/lib.rs @@ -81,19 +81,30 @@ pub struct Input { pub workspace_auto_back_and_forth: bool, } -#[derive(knuffel::Decode, Debug, Default, PartialEq, Eq)] +#[derive(knuffel::Decode, Debug, PartialEq, Eq)] pub struct Keyboard { #[knuffel(child, default)] pub xkb: Xkb, // The defaults were chosen to match wlroots and sway. - #[knuffel(child, unwrap(argument), default = 600)] + #[knuffel(child, unwrap(argument), default = Self::default().repeat_delay)] pub repeat_delay: u16, - #[knuffel(child, unwrap(argument), default = 25)] + #[knuffel(child, unwrap(argument), default = Self::default().repeat_rate)] pub repeat_rate: u8, #[knuffel(child, unwrap(argument), default)] pub track_layout: TrackLayout, } +impl Default for Keyboard { + fn default() -> Self { + Self { + xkb: Default::default(), + repeat_delay: 600, + repeat_rate: 25, + track_layout: Default::default(), + } + } +} + #[derive(knuffel::Decode, Debug, Default, PartialEq, Eq, Clone)] pub struct Xkb { #[knuffel(child, unwrap(argument), default)] @@ -2814,4 +2825,11 @@ mod tests { }, ); } + + #[test] + fn default_repeat_params() { + let config = Config::parse("config.kdl", "").unwrap(); + assert_eq!(config.input.keyboard.repeat_delay, 600); + assert_eq!(config.input.keyboard.repeat_rate, 25); + } } -- cgit