Commit graph

7293 commits

Author SHA1 Message Date
piterpunk
0d21f54cb2 fix(wayland): Corrects the cursor coordinates mapping at primary desktop
Remapping the cursor coordinates to the portal edge size makes the mouse
position being relative to the edge size, in a multi-monitor environment
this edge can be in only one of the monitors and the cursor coordinates
got wrong.

This changes uses the full height and the full width of the combined
monitors to set the mouse cursor position, cropped by the portal edge
size.
2026-08-04 09:42:22 -04:00
Mustafa Senoglu
40f743fb37 fix: handle top-down DIB images in clipboard bitmap converter
A BITMAPINFOHEADER with negative biHeight (top-down DIB) caused
std::length_error crash in toIClipboard because 4 * w * h went
negative and wrapped to a huge size_t in string::append.

Fix: use abs(height) for buffer size and SetDIBitsToDevice, and
add null check for CreateDIBSection.

fixes: #9869
2026-08-03 22:17:26 +01:00
sithlord48
3c37f2ff11 ci: use ubuntu latest and devel tags for ubuntu builders 2026-07-30 21:53:12 +01:00
sithlord48
49eb5cf334 ci: use fedora latest and rawhide version for building 2026-07-30 21:53:12 +01:00
sithlord48
55c7109c8f build(arch): adjust for libgcc package name 2026-07-30 21:25:03 +01:00
sithlord48
9a912abfa7 chore: remove windowGeometry from validsetting list it a state only item 2026-07-30 16:19:47 +01:00
sithlord48
7d9d85b85f chore(settings): remove un needed over qualification on local names 2026-07-30 16:19:47 +01:00
sithlord48
cebeea03ed refactor (settings): save xdgtokens in state not settings 2026-07-30 16:19:47 +01:00
sithlord48
10a653b467 build: flatpak use kde platform 6.11 2026-07-30 16:05:57 +01:00
Luiz Sardinha
0bc325addc fix(mac): properly handle system initiated quit events 2026-07-28 17:26:09 +01:00
sithlord48
352f494bee docs: Pack in markdown for use in help viewer, remove user docs as they are now normal docs to ship
removes need for doxygen to build general documents
2026-07-28 12:09:51 -04:00
sithlord48
99eb7dc27f feat: add view help to help menu 2026-07-28 12:09:51 -04:00
sithlord48
05f42e6483 build: place mac os docs in resources/docs 2026-07-28 12:09:51 -04:00
rNoz
3006b95a02 fix(macos): null-check the input source languages before counting them
TISGetInputSourceProperty returns NULL for an input source that has no
kTISPropertyInputSourceLanguages value, but both loops evaluate
CFArrayGetCount(layoutLanguages) before the "&& layoutLanguages" guard.
The guard is therefore dead and CFArrayGetCount dereferences NULL.

Test the pointer first.

Signed-off-by: rNoz <rnoz.commits@gmail.com>
2026-07-28 16:20:12 +01:00
ElCruncharino
35d877e128 refactor: make SecureSocket write-retry state per connection
doWrite()'s retry/buffer state was held in function-local static
variables, shared across every SecureSocket instance in the process
rather than per connection. Move it to instance members, and simplify
secureRead()/secureWrite()'s retry counters (also static, but not
load-bearing across calls) to plain locals.
2026-07-28 09:06:06 -04:00
ElCruncharino
59d41b906e fix(win): stop TLS sockets busy-spinning the socket poll loop
pollSocket() caches a socket's writability and skips waiting once it's
known writable, relying on writeSocket() to clear the cache on
WSAEWOULDBLOCK. SecureSocket writes via SSL_write(), bypassing
writeSocket() entirely, so the cache never clears and the multiplexer
spins at a zero timeout instead of blocking whenever TLS hits
backpressure.

Add IArchNetwork::resetPollWriteOnSocket() and call it from
checkResult()'s SSL_ERROR_WANT_WRITE case, mirroring writeSocket()'s
existing WSAEWOULDBLOCK handling.
2026-07-28 09:06:06 -04:00
ZeroSegFault
0d7414d89a fix(mac): preserve mouse event numbers when dragging on macOS 27 2026-07-27 12:28:35 +01:00
thiago
831f9cb044 fix all keyboard shortcuts send the same keystroke 2026-07-26 21:11:40 -04:00
sithlord48
3dd6b6a49f build: remove gtk3 2026-07-23 12:16:22 +01:00
sithlord48
778950c247 build: remove glib2 dependency 2026-07-23 12:16:22 +01:00
sithlord48
d9c01486e8 build: remove libm links 2026-07-23 12:16:22 +01:00
sithlord48
afe502d2f9 ci: valgrind run ctests 2026-07-23 12:05:17 +01:00
sithlord48
9981910814 build: remove google tests and remaining gtest 2026-07-20 18:35:07 +01:00
sithlord48
63c83b8640 build: enable CMP0207, Use native paths when gathering windows dll runtime depends 2026-07-20 18:03:33 +01:00
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