From ad0a5e72c93d16fa86d761f329f656d9314a0bf7 Mon Sep 17 00:00:00 2001 From: Andreas Reich Date: Tue, 21 Mar 2023 17:01:15 +0100 Subject: [PATCH] Allow rolling 3D camera with primary mouse button + alt modifier Fixes #1585 --- crates/re_viewer/src/ui/view_spatial/eye.rs | 15 +++++++++------ crates/re_viewer/src/ui/view_spatial/ui_3d.rs | 2 +- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/crates/re_viewer/src/ui/view_spatial/eye.rs b/crates/re_viewer/src/ui/view_spatial/eye.rs index be635da6857..12301061e21 100644 --- a/crates/re_viewer/src/ui/view_spatial/eye.rs +++ b/crates/re_viewer/src/ui/view_spatial/eye.rs @@ -266,17 +266,20 @@ impl OrbitEye { let mut did_interact = false; if response.drag_delta().length() > drag_threshold { - if response.dragged_by(egui::PointerButton::Primary) { + if response.dragged_by(egui::PointerButton::Middle) + || (response.dragged_by(egui::PointerButton::Primary) + && response.ctx.input(|i| i.modifiers.alt)) + { + if let Some(pointer_pos) = response.ctx.pointer_latest_pos() { + self.roll(&response.rect, pointer_pos, response.drag_delta()); + did_interact = true; + } + } else if response.dragged_by(egui::PointerButton::Primary) { self.rotate(response.drag_delta()); did_interact = true; } else if response.dragged_by(egui::PointerButton::Secondary) { self.translate(response.drag_delta()); did_interact = true; - } else if response.dragged_by(egui::PointerButton::Middle) { - if let Some(pointer_pos) = response.ctx.pointer_latest_pos() { - self.roll(&response.rect, pointer_pos, response.drag_delta()); - did_interact = true; - } } } diff --git a/crates/re_viewer/src/ui/view_spatial/ui_3d.rs b/crates/re_viewer/src/ui/view_spatial/ui_3d.rs index 25d4a08ff6d..1899b2028cb 100644 --- a/crates/re_viewer/src/ui/view_spatial/ui_3d.rs +++ b/crates/re_viewer/src/ui/view_spatial/ui_3d.rs @@ -235,7 +235,7 @@ fn find_camera(space_cameras: &[SpaceCamera3D], needle: &InstancePathHash) -> Op pub const HELP_TEXT_3D: &str = "Drag to rotate.\n\ Drag with secondary mouse button to pan.\n\ - Drag with middle mouse button to roll the view.\n\ + Drag with middle mouse button (or primary mouse button + holding Alt/⌥ key) to roll the view.\n\ Scroll to zoom.\n\ \n\ While hovering the 3D view, navigate with WSAD and QE.\n\