diff --git a/monitors/src/tests.rs b/monitors/src/tests.rs index 77f8677..e46a403 100644 --- a/monitors/src/tests.rs +++ b/monitors/src/tests.rs @@ -1,6 +1,6 @@ use crate::{ backend::{ - gnome::{gnome_features, GnomeLogicalMonitor, GnomeMonitor, GnomeMonitorConfig}, + gnome::{gnome_features, GnomeLogicalMonitor, GnomeMode, GnomeMonitor, GnomeMonitorConfig}, hyprland::{HyprMonitor, HYPRFEATURES}, kde::{KDEMode, KDEMonitor, KDE_FEATURES}, }, @@ -56,7 +56,9 @@ fn convert_hyprmonitor() { #[test] fn convert_gnomemonitor() { + let gnome_mode = GnomeMode::default(); let gnome_monitor = GnomeMonitor { + modes: vec![gnome_mode], ..Default::default() }; let logical_gnome_monitor = GnomeLogicalMonitor { @@ -69,9 +71,18 @@ fn convert_gnomemonitor() { }; let monitor = Monitor { // hyprland has disabled instead -> invert + id: 600129007, enabled: false, - mode: String::from("-1"), + size: Size(500, 500), + offset: Offset(-1050, 0), + scale: 1.0, features: gnome_features(false), + available_modes: vec![AvailableMode { + id: "".into(), + size: Size(0, 0), + refresh_rates: vec![0], + supported_scales: vec![], + }], ..Default::default() }; assert_eq!( diff --git a/monitors/src/utils.rs b/monitors/src/utils.rs index 26d5ff3..580391f 100644 --- a/monitors/src/utils.rs +++ b/monitors/src/utils.rs @@ -201,10 +201,14 @@ impl Monitor { pub fn handle_scaled_transform(&self) -> (i32, i32) { let (width, height) = self.handle_transform(); - let (scaled_width, scaled_height) = ( - (width as f64 / self.scale).round(), - (height as f64 / self.scale).round(), - ); + let (scaled_width, scaled_height) = if self.scale <= 0.0 { + (width as f64, height as f64) + } else { + ( + (width as f64 / self.scale).round(), + (height as f64 / self.scale).round(), + ) + }; (scaled_width as i32, scaled_height as i32) } } @@ -284,9 +288,7 @@ impl<'a> Get<'a> for Monitor { impl Arg for Monitor { const ARG_TYPE: arg::ArgType = ArgType::Struct; fn signature() -> Signature<'static> { - unsafe { - Signature::from_slice_unchecked("(ub(ssss)(udu)bb(ii)(ii)sa(s(ii)auad)(bbbb))\0") - } + unsafe { Signature::from_slice_unchecked("(ub(ssss)(udu)bb(ii)(ii)sa(s(ii)auad)(bbbb))\0") } } }