feat(viewer): implement keyboard and button zoom/pan controls
- Fork cosmic::iced viewer widget to enable external state control - Add bidirectional state synchronization between viewer and AppModel - Implement ViewerStateChanged message for mouse interaction feedback - Fix pixel-perfect rendering at 100% zoom (ActualSize mode) - Ensure smooth interaction between mouse, keyboard, and button controls This allows zoom/pan to work via: - Keyboard shortcuts (+/-, Ctrl+arrows) - Future toolbar buttons - Mouse wheel and drag (existing functionality preserved) The viewer state now properly syncs in both directions: - External controls (keyboard/buttons) → update viewer state via diff() - Mouse interactions → update AppModel via ViewerStateChanged message Closes: Zoom/pan via keyboard and buttons now functional
This commit is contained in:
parent
2905a3f6f1
commit
69f22bafcd
5 changed files with 564 additions and 39 deletions
|
|
@ -37,6 +37,8 @@ pub enum AppMessage {
|
|||
ZoomReset,
|
||||
/// Fit document to window.
|
||||
ZoomFit,
|
||||
/// Update zoom and pan from viewer (mouse interaction).
|
||||
ViewerStateChanged { scale: f32, offset_x: f32, offset_y: f32 },
|
||||
|
||||
// === Pan ===
|
||||
/// Pan image left.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue