Fix scroll wheel for RDP clients sending high-resolution or zero-position events

Summary

Some RDP clients, notably Microsoft Remote Desktop for Mac, send wheel events with:

  1. (0,0) as the mouse position — MRD omits cursor coordinates for wheel events
  2. Sub-120 axis rotation values — macOS smooth scrolling sends high-resolution deltas (1-22 per event) instead of the standard 120 per wheel notch

This caused scrolling to be completely non-functional with MRD on both the Portal and Plasma screencast session paths.

Changes

  • InputHandler.cpp: Track last known mouse position from move events and substitute it when a wheel event arrives with a null position
  • PortalSession.cpp: Switch from NotifyPointerAxisDiscrete (integer steps, truncates sub-120 values to 0) to NotifyPointerAxis (smooth scroll, preserves sub-notch precision)
  • PlasmaScreencastV1Session.cpp: Fix wl_fixed_t conversion using wl_fixed_from_double() (was passing raw int, making values ~256x smaller than intended)
  • Both session paths now convert Qt angleDelta (1/8-degree units) to degrees by dividing by 8, producing 15.0 per standard notch — matching libinput's wheel axis convention

Test plan

  • Connect with Microsoft Remote Desktop for Mac — scrolling should work in both directions with natural speed
  • Connect with xfreerdp/standard RDP client — verify scrolling still works correctly (standard 120-per-notch values)
  • Test horizontal scrolling if client supports it
  • Verify mouse position is correct during scroll (not jumping to top-left corner)

BUG: 511029

Edited by realies

Merge request reports

Loading