Skip to content

viewer: snappier chromeless UX, picture place, Windows build polish - #55

Open
bshurikan wants to merge 2 commits into
TomasUribe:feat/viewer-inputfrom
bshurikan:exp/viewer-ux-responsive
Open

bshurikan wants to merge 2 commits into
TomasUribe:feat/viewer-inputfrom
bshurikan:exp/viewer-ux-responsive

Conversation

@bshurikan

@bshurikan bshurikan commented Oct 27, 2026 •

Copy link
Copy Markdown
Contributor

Summary

  • Chromeless window drag/click is much more reliable: focus clickthrough, live chrome hit-tests, deferred prefs writes, and vsync off by default for lower UI latency.
  • Fullscreen/maximized picture place for portrait monitors: Alt-drag pans (clamped in-window), Ctrl-wheel zooms, Ctrl-click resets; cursor stays put across fullscreen toggle. (Inspired by PotPlayer)

Based on v0.7.20-beta3 (feat/viewer-input) so it keeps the new Controller menu / pad work. Conflicts with that branch were resolved (mouse-grab for Switch play still wins over pan; pad sliders use deferred prefs).

Test plan

  • Borderless: click cog/pin without needing a second press; drag picture to move; first click after unfocus starts drag/clickthrough
  • Fullscreen on a portrait display: Alt-pan continuous (not bit-by-bit), Ctrl-wheel zoom, Ctrl-click reset; pan does not leave empty gaps
  • Enter/exit fullscreen: mouse stays on the same desktop pixel
  • With Controller → mouse-to-Switch enabled: picture click still grabs mouse (F10 releases); Alt-pan still works when mouse is not grabbed
  • Windows build: tools/raw-recv/build-windows-viewer.ps1 produces/overwrites only SwitchFrameTap.exe with icon
  • ui_debug=1 in viewer.ini logs ui: view pan start/end, focus, and loop gaps

@TomasUribe

Copy link
Copy Markdown
Owner

Thanks! The chromeless click fixes and pan/zoom look good. I'm still deciding on vsync off by default (lower latency, but it tears), so that part may change before it goes in.

bshurikan added a commit to bshurikan/switch-frame-tap that referenced this pull request Oct 30, 2026
Tomas is still deciding on vsync-off; restore the prior default so TomasUribe#55 can land without that policy change.

Co-authored-by: Cursor <cursoragent@cursor.com>
bshurikan and others added 2 commits October 30, 2026 19:52
Make borderless drag/click reliable (focus clickthrough, chrome hit-tests, deferred prefs), add fullscreen Alt-pan / Ctrl-wheel zoom with clamped pan and cursor-stable FS toggle, default vsync off, ui_debug traces to viewer.log, and embed the app icon while always overwriting SwitchFrameTap.exe.

Co-authored-by: Cursor <cursoragent@cursor.com>
Tomas is still deciding on vsync-off; restore the prior default so TomasUribe#55 can land without that policy change.

Co-authored-by: Cursor <cursoragent@cursor.com>
@bshurikan

bshurikan commented Oct 30, 2026 •

Copy link
Copy Markdown
Contributor Author

Thanks! Restored vsync on by default so that policy stays with you - happy for you to flip it later if you prefer lower latency.

Also rebased onto current feat/viewer-input and resolved the raw-view.c conflicts (kept zero-copy / frame_crop / ui_pointer_active from the base, plus the chromeless pan/zoom view_video_copy path from this PR).

@bshurikan
bshurikan force-pushed the exp/viewer-ux-responsive branch from 37b69bd to 9c1e1bc Compare October 30, 2026 23:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants