forked from 1b-agent/opencadstudio-upstream
Fix: viewport MSPACE activation and navigation
Four bugs prevented viewports from working like AutoCAD model-space windows: 1. Dead-code double-click block: `!is_down2` was always false because `is_down2 = sel.left_down` is captured while the button is still held (before the selection block clears it). Changed to `is_down` so the double-click handler actually fires. 2. Inverted pan direction: pan_active_viewport used `-=` on the delta returned by screen_delta_to_world, which is the same delta that cam.pan *adds* to its target — causing reversed drag. Changed to `+=`. 3. Zoom not cursor-centered: zoom_active_viewport now accepts an optional paper-space cursor position and adjusts view_target so the model point under the cursor stays fixed (same as cam.zoom_about_point). 4. ESC did not exit MSPACE: CommandEscape now calls ExitViewport when active_viewport is set and no command is running. Also added MS/MSPACE and PSPACE command aliases, and MspaceCommand / PspaceCommand messages so MS auto-enters the first viewport. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
1 parent
0b8f9bfa5b
commit
0beb589f2c
4 files changed
+168
-30
No files matched your search
@@ -224,6 +224,10 @@ pub enum Message {
|
||||
EnterViewport(acadrust::Handle),
|
||||
/// Exit MSPACE and return to paper-space editing (PSPACE).
|
||||
ExitViewport,
|
||||
/// MS command: enter MSPACE for the first available viewport.
|
||||
MspaceCommand,
|
||||
/// PS command: exit MSPACE (PSPACE).
|
||||
PspaceCommand,
|
||||
/// Switch to a named layout ("Model" or paper space layout name).
|
||||
LayoutSwitch(String),
|
||||
/// Create a new paper space layout.
|
||||
|
||||
Reference in new issue
Block a user