diff --git a/src/backend/input.rs b/src/backend/input.rs index 4bd1ae3..709194e 100644 --- a/src/backend/input.rs +++ b/src/backend/input.rs @@ -6,6 +6,7 @@ use glam::{Affine3A, Vec2, Vec3A}; use ovr_overlay::TrackedDeviceIndex; use smallvec::{smallvec, SmallVec}; +use crate::config::GeneralConfig; use crate::state::AppState; use super::{ @@ -287,7 +288,7 @@ where let mut pointer = &mut app.input_state.pointers[idx]; if let Some(grab_data) = pointer.interaction.grabbed { if let Some(grabbed) = overlays.mut_by_id(grab_data.grabbed_id) { - pointer.handle_grabbed(grabbed, hmd); + pointer.handle_grabbed(grabbed, hmd, &app.session.config); } else { log::warn!("Grabbed overlay {} does not exist", grab_data.grabbed_id); pointer.interaction.grabbed = None; @@ -472,7 +473,7 @@ impl Pointer { log::info!("Hand {}: grabbed {}", self.idx, overlay.state.name); } - fn handle_grabbed(&mut self, overlay: &mut OverlayData, hmd: &Affine3A) + fn handle_grabbed(&mut self, overlay: &mut OverlayData, hmd: &Affine3A, config: &GeneralConfig) where O: Default, { @@ -494,7 +495,9 @@ impl Pointer { .matrix3 .mul_scalar(1.0 - 0.025 * self.now.scroll); } else { - grab_data.offset.z -= self.now.scroll * 0.05; + if config.allow_sliding && self.now.scroll.is_finite() { + grab_data.offset.z -= self.now.scroll * 0.05; + } } overlay.state.transform.translation = self.pose.transform_point3a(grab_data.offset); overlay.state.realign(hmd); diff --git a/src/config.rs b/src/config.rs index c9ec30b..2fc2645 100644 --- a/src/config.rs +++ b/src/config.rs @@ -150,6 +150,9 @@ pub struct GeneralConfig { #[serde(default = "def_half")] pub xr_alt_click_sensitivity_release: f32, + + #[serde(default = "def_true")] + pub allow_sliding: bool, } impl GeneralConfig { diff --git a/src/res/config.yaml b/src/res/config.yaml index 523a5f4..33fa4eb 100644 --- a/src/res/config.yaml +++ b/src/res/config.yaml @@ -11,3 +11,7 @@ keyboard_sound_enabled: true keyboard_scale: 1.0 desktop_view_scale: 1.0 watch_scale: 1.0 + +# Enable / disable sliding windows back and forth with the scroll action +# Default: true +allow_sliding: true