feat: allow disabling the sliding of screens back and forth (#20)
fix: sliding screens with smooth trackpad scrolling knuckles smooth trackpad scrolling can return NaN
This commit is contained in:
@@ -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<O>(&mut self, overlay: &mut OverlayData<O>, hmd: &Affine3A)
|
||||
fn handle_grabbed<O>(&mut self, overlay: &mut OverlayData<O>, hmd: &Affine3A, config: &GeneralConfig)
|
||||
where
|
||||
O: Default,
|
||||
{
|
||||
@@ -494,8 +495,10 @@ impl Pointer {
|
||||
.matrix3
|
||||
.mul_scalar(1.0 - 0.025 * self.now.scroll);
|
||||
} else {
|
||||
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);
|
||||
overlay.state.dirty = true;
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user