Fix iPad pointer, trackpad, zoom, and PiP regressions - #93
Conversation
|
Hi @SandiyosDev @hugeBlack — I’ve opened #93 and would love to contribute regularly to OpenParsec. Is there a preferred roadmap or chat, and are there specific issues you’d like help with? I’m happy to follow your review and build workflow. |
Hey, @alantangok, I don't have any specific preferences other than avoiding slop and massive PRs. If you maintain consistent contributions, maybe you can eventually merge your own PRs, I'll be reviewing yours for now. |
|
Thanks, that sounds good. I’ll keep my PRs small and focused, review every commit carefully, and include clear testing evidence. I appreciate you reviewing #93, and I’m happy to address any feedback. |
|
i'm reading this PR while you're working on it... this PR needs splitting before I can review it, it's five separate things, the pointer/trackpad fix, scroll momentum + natural scrolling, the pinch zoom viewport, PiP layer recovery, and the menu edge swipe... do one PR each, and drop .checkpoint and the scripts folder, and let xcode generate the pbxproj ids |
Summary
Why
On iPadOS, GCMouse movement can continue while another app is foreground even when UIKit focus state still reports active. UIHoverGestureRecognizer accurately represented foreground pointer interaction in device testing. The input paths also needed de-duplication and fractional scroll handling for smooth Magic Keyboard trackpad behavior. Trackpad clicks now use UIKit indirect pointer down/up edges so double clicks retain both complete click sequences.
Zoom viewport constraints must only apply while Two-Finger Pinch Zoom is enabled and the scale is materially above 1x. PiP sample buffers need immediate presentation and display-layer recovery so the host stream does not remain black after a rendering failure.
Verification
Draft status
Pointer focus and the original GCMouse-priority direction handling were previously confirmed on device. The latest fullscreen resume, smooth momentum, zoom viewport policy, PiP rendering recovery, and trackpad double-click delivery still require final iPad validation.
This overlaps with #91 around duplicate indirect-pointer UITouch filtering, but intentionally differs in movement routing: device diagnostics showed GCMouse movement arriving while OpenParsec was not foreground, so this keeps hover as the foreground-authoritative movement path.