diff options
Diffstat (limited to 'niri-config/src/lib.rs')
| -rw-r--r-- | niri-config/src/lib.rs | 37 |
1 files changed, 36 insertions, 1 deletions
diff --git a/niri-config/src/lib.rs b/niri-config/src/lib.rs index 38391ed4..cfc1853c 100644 --- a/niri-config/src/lib.rs +++ b/niri-config/src/lib.rs @@ -12,7 +12,10 @@ use knuffel::errors::DecodeError; use knuffel::Decode as _; use layer_rule::LayerRule; use miette::{miette, Context, IntoDiagnostic, NarratableReportHandler}; -use niri_ipc::{ConfiguredMode, LayoutSwitchTarget, SizeChange, Transform, WorkspaceReferenceArg}; +use niri_ipc::{ + ConfiguredMode, LayoutSwitchTarget, PositionChange, SizeChange, Transform, + WorkspaceReferenceArg, +}; use smithay::backend::renderer::Color32F; use smithay::input::keyboard::keysyms::KEY_NoSymbol; use smithay::input::keyboard::xkb::{keysym_from_name, KEYSYM_CASE_INSENSITIVE}; @@ -1280,6 +1283,12 @@ pub enum Action { FocusFloating, FocusTiling, SwitchFocusBetweenFloatingAndTiling, + #[knuffel(skip)] + MoveFloatingWindowById { + id: Option<u64>, + x: PositionChange, + y: PositionChange, + }, } impl From<niri_ipc::Action> for Action { @@ -1434,6 +1443,9 @@ impl From<niri_ipc::Action> for Action { niri_ipc::Action::SwitchFocusBetweenFloatingAndTiling {} => { Self::SwitchFocusBetweenFloatingAndTiling } + niri_ipc::Action::MoveFloatingWindow { id, x, y } => { + Self::MoveFloatingWindowById { id, x, y } + } } } } @@ -2989,6 +3001,7 @@ pub fn set_miette_hook() -> Result<(), miette::InstallError> { #[cfg(test)] mod tests { use insta::{assert_debug_snapshot, assert_snapshot}; + use niri_ipc::PositionChange; use pretty_assertions::assert_eq; use super::*; @@ -3683,6 +3696,28 @@ mod tests { } #[test] + fn parse_position_change() { + assert_eq!( + "10".parse::<PositionChange>().unwrap(), + PositionChange::SetFixed(10.), + ); + assert_eq!( + "+10".parse::<PositionChange>().unwrap(), + PositionChange::AdjustFixed(10.), + ); + assert_eq!( + "-10".parse::<PositionChange>().unwrap(), + PositionChange::AdjustFixed(-10.), + ); + + assert!("10%".parse::<PositionChange>().is_err()); + assert!("+10%".parse::<PositionChange>().is_err()); + assert!("-10%".parse::<PositionChange>().is_err()); + assert!("-".parse::<PositionChange>().is_err()); + assert!("10% ".parse::<PositionChange>().is_err()); + } + + #[test] fn parse_gradient_interpolation() { assert_eq!( "srgb".parse::<GradientInterpolation>().unwrap(), |
