Source
Canvas Mode follow-up from devlog/_plan/0.24-canvas-mode/FOLLOW-UP-ISSUES.md and parent issue #22.
Goal
Separate true image viewport panning from Canvas object selection/move behavior.
Current state
CanvasViewport includes panX and panY fields.
- Canvas zoom exists.
- The current
pan tool is effectively selection mode:
- click selects object
- shift-click toggles selection
- drag selected object moves it
- drag empty area creates selection box
- There is no actual viewport pan behavior for zoomed images.
Scope
- Decide the gesture model for viewport pan vs object selection.
- Add actual viewport panning for zoomed Canvas view.
- Avoid breaking existing selection, move, and selection-box behavior.
- Define whether pan is a separate tool, a modifier gesture, or a mode inside the existing pan/select tool.
- Keep keyboard zoom and Escape close behavior intact.
Out of scope
- New annotation tools.
- SVG/PPTX export.
- Alpha export controls.
- Full layer/object inspector.
Acceptance criteria
- A zoomed canvas can be panned without moving selected objects accidentally.
- Existing object selection, multi-select, and move still work.
- Selection box remains available through an explicit, predictable gesture.
- Panning state does not affect saved normalized annotation coordinates.
- Tests cover viewport pan state, object move separation, and no regression in selection shortcuts.
- Manual QA covers mouse/trackpad behavior at 1x and zoomed states.
Source
Canvas Mode follow-up from
devlog/_plan/0.24-canvas-mode/FOLLOW-UP-ISSUES.mdand parent issue #22.Goal
Separate true image viewport panning from Canvas object selection/move behavior.
Current state
CanvasViewportincludespanXandpanYfields.pantool is effectively selection mode:Scope
Out of scope
Acceptance criteria