No description
Find a file
neon12345 22a4b135f0 Accumulate smooth scroll into full wheel clicks on server
fix(platform/ei): accumulate smooth scroll into full wheel clicks on server

On Wayland, two-finger smooth scroll events are delivered as per-frame pixel
deltas (e.g. 0.26, 0.53, 1.05 px per event).  The previous code quantized
these at the pixel level via `modf()` — any accumulated integer pixel (even
just 1) triggered a wheel event whose value was `pixels * 12`, i.e. 12, 24
or 36 units.  Because the deskflow protocol uses 120 units per standard
wheel click, these fractional clicks were silently dropped by the client
compositor and the user saw nothing on the secondary screen until a
very large/fast stroke pushed enough pixels through.

Switch to wheel-click-level accumulation: smooth scroll pixel deltas are
now scaled to fractional wheel-clicks (0.1 per pixel, keeping the 10 px ==
1 click convention) and only dispatched to the client when at least one
full 120-unit click has accumulated.  This uses `std::trunc()` (toward
zero) instead of `std::floor()` to avoid spurious clicks on negative
scroll values.

Physical mouse wheels (discrete scroll events, EI_EVENT_SCROLL_DISCRETE)
are unaffected and continue to be forwarded immediately as-is.

- `EiScreen.cpp`: replace `modf()` pixel quantization with fractional
  wheel-click accumulation using `std::trunc()`.
- `ScrollRemainder` struct comment: clarify the unit is now fractional
  wheel-clicks rather than pixels.
2026-08-10 23:31:59 +01:00
.github ci: use ubuntu latest and devel tags for ubuntu builders 2026-07-30 21:53:12 +01:00
cmake build: remove glib2 dependency 2026-07-23 12:16:22 +01:00
deploy build(arch): adjust for libgcc package name 2026-07-30 21:25:03 +01:00
docs docs: update config key list 2026-08-05 11:19:26 -04:00
LICENSES build: do not ship vc msm file, link the redist in the readme 2025-03-06 19:17:53 +00:00
src Accumulate smooth scroll into full wheel clicks on server 2026-08-10 23:31:59 +01:00
translations refactor(SettingsDialog): move the Messages readonly dialog to the settingsDialog method 2026-08-10 15:45:51 -04:00
.clang-format chore: Adjust Clang-format linter rules 2024-10-17 21:38:29 +01:00
.editorconfig docs: Add .editorconfig file 2024-10-15 23:08:28 +01:00
.gitattributes Force LF in gitattributes 2024-10-15 18:02:20 +01:00
.gitignore chore: update 'Synergy App Ltd' copyright (company renamed) 2026-06-09 00:06:11 -04:00
CMakeLists.txt build: place mac os docs in resources/docs 2026-07-28 12:09:51 -04:00
cspell.json docs(build): Fix minor nits in build docs 2025-11-20 08:15:34 -05:00
LICENSE Revert "chore: move LICENSE -> docs/LICENSE" 2026-02-23 17:26:19 -05:00
REUSE.toml chore: move doc dir to docs 2026-02-23 17:02:05 -05:00
sonar-project.properties feat: support translation generation 2025-10-27 17:54:32 -04:00

Deskflow

Deskflow is a free and open source keyboard and mouse sharing app. Use the keyboard, mouse, or trackpad of one computer to control nearby computers, and work seamlessly between them.

Homepage Code

Getting help online

  • View the wiki Online resource

Chat with us

Reporting security issues

Check Security to find out how to report security issues.