Commit graph

7319 commits

Author SHA1 Message Date
ElCruncharino
6d48d3663e fix: release EIS emulation grab when idle so client screens can sleep 2026-07-20 12:52:21 -04:00
Luiz Sardinha
d38c69c05d fix(mac): ensure background clicks work correctly on macOS 27 2026-07-20 12:11:22 +01:00
sithlord48
48ee839357 build: put coverage items in more sane locations 2026-07-20 09:09:24 +01:00
sithlord48
d3e5a94861 bulid: move main cmake options to one place 2026-07-20 09:09:24 +01:00
sithlord48
92d0fa86c8 build: find Qt in topLevel CMake 2026-07-20 09:09:24 +01:00
tehreet
96f544de6d fix: capture the mouse on macOS while the cursor is on a client
On the server, while the cursor is on a client, every physical mouse move
warped the local cursor back to screen center and the tap callback returned
the mouse-move event instead of consuming it. That leaked continuous motion
to whatever local app sat under the centered cursor (e.g. a fullscreen game
or a centered video reacting to the phantom movement).

Capture the mouse the way macOS games do instead: dissociate the hardware
mouse from the cursor in leave() so the cursor freezes and hides, read raw
deltas from the event in onMouseMove(), consume off-screen moves in the tap
callback, and re-associate in enter() (disable() already does via
showCursor()). This retires the center-warp and the "bogus motion" edge
heuristic that only existed to paper over the warp.

fixes: #5871
2026-07-18 13:25:30 -04:00
ElCruncharino
89a6c7f2ed fix(wayland): stop EiScreen cursor from following transient shape churn
updateShape() unconditionally recentered the cursor and notified the
server on every call, even mid-churn when no device reports a region
yet. Only touch tracked state once a real region is found, and only
notify the server when the shape actually changed.
2026-07-17 22:34:09 +01:00
TSUMUGI-XE
e8e9d1c193 fix(wayland): only add input-capture barriers on the outer desktop edge
On a multi-monitor server the portal reports one input-capture zone per
output. handleZonesChanged added a pointer barrier on every active side of
every zone, including edges that sit on an internal seam between two adjacent
monitors. The portal rejects such a barrier ("adjacent to multiple monitor
edges"), and because a single rejected barrier fails the whole
set_pointer_barriers request, input capture never engaged on multi-monitor
Wayland servers.

Compute the union (bounding box) of all zones first, then add a barrier for a
given side only when that zone edge lies on the outer boundary of the union,
skipping internal seams.
2026-07-17 22:11:03 +01:00
sithlord48
857cc219a8 i18n(es): Change Abierto -> Abrir 2026-07-16 12:57:08 +01:00
开心
6592dab84e fix: defer client disconnect cleanup 2026-07-15 11:45:02 +00:00
开心
6934dbe62b fix: keep event handlers alive during dispatch 2026-07-15 11:45:02 +00:00
Nick Bolton
39bf4fbe84 fix(package): improve msvc runtime version check on Windows 2026-07-13 11:21:18 +00:00
sithlord48
8acf76c5d1 refactor: simplify Config::readSectionOptions to look for only keystroke mousepress and end 2026-07-13 09:55:11 +01:00
sithlord48
06b7fe1691 refactor(settings): do not read address from old settings 2026-07-13 09:55:11 +01:00
Nick Bolton
1995423cb8 fix: improve fingerprint handling 2026-07-10 15:12:42 +00:00
Nick Bolton
74392eea6c fix: rename updateLocalFingerprint to updateFingerprintButton for clarity
The function name didn't make it's actual side effects clear to me
2026-07-10 15:12:42 +00:00
Nick Bolton
4cb5c3ec9c fix: disconnect portal selection-transfer from parent session
Wrong session logged a glib critical on teardown.
2026-07-10 12:07:46 +00:00
Nick Bolton
f0f3428d50 fix: stop portal input capture thread on server exit
Server aborted with "pure virtual method called" when the bind address
was in use: EiScreen's PortalInputCapture glib thread outlived Arch and
hit its freed vtable. ~EiScreen never deleted m_portalInputCapture, and
a fatal startup threw past cleanupServer(). Fix both.
2026-07-10 12:07:46 +00:00
Josh Harris
c8231208c1 fix(win32): close running Deskflow processes during MSI install
Add util:CloseApplication entries for deskflow.exe, deskflow-core.exe,
deskflow-server.exe and deskflow-client.exe so Windows Installer's
Restart Manager can shut them down before file replacement. Without
this, in-place upgrades (especially pre-1.24 -> 1.24+, where the
old server/client binaries need removing) hit files-in-use and fall
back to prompting the user for a reboot.
2026-07-09 12:15:50 +01:00
SASANO Takayoshi
2c37169f73 fix: reivse scoped_lock to avoid deadlock for XWindowsClipboard
fix #9890
2026-07-08 13:27:50 +01:00
Nick Bolton
3f2571dfa3 fix: simplify key translation logic by removing clamping 2026-07-06 12:16:05 +01:00
Nick Bolton
fc44b0bb18 fix: restore client protocol downgrade message 2026-07-04 15:58:17 +01:00
BeaCox
bcd3a658fc fix: use local clipboard limit for client receive 2026-07-04 00:53:42 +01:00
BeaCox
8a535fd5dd fix: enforce clipboard receive size limits 2026-07-04 00:53:42 +01:00
sithlord48
205a3c803e fix: clamp mapped modifiers 2026-07-03 13:44:59 +01:00
sithlord48
b21f5a7ca8 i18n: make sure log levels text is translated 2026-07-02 12:07:44 +00:00
Yoshiaki Kasahara
f7b5f48520 i18n(ja): update Japanese(ja) translation
Check and update unfinished translation
2026-07-02 10:55:47 +00:00
sithlord48
8266fbbe6a fix: Check options array is always an even size 2026-07-01 17:02:09 +01:00
sithlord48
570e68e910 ci: update release action to overwrite gh_pages 2026-06-29 06:35:08 +01:00
sithlord48
570c9a494b refactor: upgrade server options section setting to new format 2026-06-25 12:08:33 +01:00
sithlord48
f66dbf69f3 chore: remove unused Config methods removeScreen removeScreens removeAllScreens removeOption removeOptions 2026-06-24 21:03:26 +01:00
sithlord48
a45e81fb15 refactor: Remove undocumented hold modifiers to switch code 2026-06-24 20:46:15 +01:00
sithlord48
55b6789728 refactor: save aliases without restarting the core. remove unknown screens when saving the server config 2026-06-23 19:28:35 +01:00
sithlord48
8010d8a8b2 refactor: move saving of screen aliases to general deskflow.conf 2026-06-23 19:28:35 +01:00
sithlord48
2d5cf33f16 chore: remove unused removeAlias methods 2026-06-23 19:28:35 +01:00
sithlord48
f3fb31914d refactor: replace use of insert for std::maps with try_emplace 2026-06-22 10:27:35 -04:00
sithlord48
a54d4d6754 refactor: remove server dead corners. instead set per screen 2026-06-22 10:10:47 -04:00
sithlord48
95ffe1ba03 fix: set new options before reading old ones 2026-06-22 13:52:03 +01:00
sithlord48
9b44f58e21 ci: bump action script usesd by ci-comment to v9 2026-06-19 08:27:56 -04:00
sithlord48
953a921669 ci: bump flatpak to use libei 1.6.0 2026-06-19 08:27:56 -04:00
sithlord48
161b72e43d refactor: Use mutex to protect m_time in MSWindowsClipboard 2026-06-19 08:26:51 -04:00
sithlord48
698ebc30b3 refactor: Use mutex to protect m_open / m_time in EiClipboard 2026-06-19 08:26:51 -04:00
sithlord48
0042b43bac refactor: use Mutex to protect vars in XWindowClipboard 2026-06-19 08:26:51 -04:00
sithlord48
81e6e13d94 refactor: Use Mutex to protect m_open and m_time in Clipboard.cpp 2026-06-19 08:26:51 -04:00
sithlord48
5eb1d7068e refactor: declare vars where they are used in if statements 2026-06-19 08:14:54 -04:00
sithlord48
31018910f8 refactor KeySqquenceWidget::event join identical cases 2026-06-19 08:14:54 -04:00
sithlord48
f52fdec236 refactor: make PortalRemoteDesktop:handleSessionTransfer a const 2026-06-19 08:14:54 -04:00
sithlord48
a42b6cf897 refactor: make PortalRemoteDesktop:handleSessionOwnerChanged a const 2026-06-19 08:14:54 -04:00
sithlord48
710aae5f3f refactor: make PortalRemoteDesktop::claimClipboard a const 2026-06-19 08:14:54 -04:00
sithlord48
e800512160 refactor: PortalInputCapture remove extra private section in header 2026-06-19 08:14:54 -04:00