Merge PR #6452: Hand tool: hold Ctrl/Cmd to zoom in, Alt to zoom out (#6434) (new head)

This commit is contained in:
aiongg committed 2026-10-22 15:39:53 +00:00
commit fb05540774
2 files changed
+16 -2

No files matched your search

+15 -1
View File
@@ -880,7 +880,8 @@ fn cmd_and_alt_with_the_hand_tool_zoom_in_and_out() {
assert_eq!(h.state().ui.tool, Tool::Hand, "the Hand is still the tool");
}
/// A ⌘-drag with the Hand is the Zoom tool's scrubby zoom, not a pan.
/// A ⌘-drag with the Hand is the Zoom tool's drag, not a pan: a scrubby zoom with Scrubby Zoom on
/// (the default).
#[test]
fn cmd_drag_with_the_hand_tool_is_a_scrubby_zoom() {
let mut h = harness(Tool::Hand);
@@ -890,6 +891,19 @@ fn cmd_drag_with_the_hand_tool_is_a_scrubby_zoom() {
assert_eq!(h.state().ui.tool, Tool::Hand);
}
/// With Scrubby Zoom off, a ⌘-drag with the Hand draws the Zoom tool's rectangle instead. The
/// drag is nearly vertical, so a scrubby zoom (horizontal motion only) would barely change the
/// zoom, while zooming to the narrow rectangle fills the view with it.
#[test]
fn cmd_drag_with_the_hand_tool_follows_scrubby_zoom_off() {
let mut h = harness(Tool::Hand);
h.state_mut().ui.tool_options.zoom_scrubby = false;
let z0 = h.state().ui.views[0].zoom;
drag_with(&mut h, Modifiers::COMMAND, 150.0, 100.0, 160.0, 180.0);
assert!(h.state().ui.views[0].zoom > z0 * 2.0, "{z0} -> {}", h.state().ui.views[0].zoom);
assert_eq!(h.state().ui.tool, Tool::Hand);
}
/// ⌘ or ⌥ pressed during a Hand pan doesn't turn the drag into a zoom: the pan goes on.
#[test]
fn modifiers_pressed_during_a_hand_pan_keep_panning() {
+1 -1
View File
@@ -176,7 +176,7 @@ Triangle and Curvature Pen (minus legacy Rounded Rectangle and Targeted Adjustme
| Behaviour | Status | Evidence |
|---|---|---|
| Space = Hand, ⌘Space / ⌘⌥Space = zoom in/out, spring-loaded while held | done | `hold_keys.rs` |
| Hand tool: ⌘ held = Zoom In, ⌥ (or ⌘⌥) held = Zoom Out; click steps, drag scrubs | done | `hold_keys.rs` `hand_zoom` (#6434); not during Free Transform or once a pan has started |
| Hand tool: ⌘ held = Zoom In, ⌥ (or ⌘⌥) held = Zoom Out; click steps, drag zooms as the Zoom tool does (scrubs with Scrubby Zoom on, else draws a zoom rectangle) | done | `hold_keys.rs` `hand_zoom` (#6434); not during Free Transform or once a pan has started |
| Hand tool: ⇧-drag / Scroll All Windows pans every open document; hold H for Bird's Eye View | missing | |
| Hold any tool letter for a temporary tool | done | `spring_tools.rs`: held ≥ 300 ms or used on the canvas, release gives the previous tool back; ⇧ never springs (#2672) |
| Scrubby zoom | done | `zoom_tool.rs` |