Commit graph

7336 commits

Author SHA1 Message Date
sithlord48
f7ae12d772 refactor(ServerConfigDialog): rename onChange -> setButtonBoxEnabledButtons 2026-08-16 15:38:07 +01:00
sithlord48
4107e7bdda refactor(ServerConfigDialog): new isGeneralConfigModified method to track if the general config items changed use it in onChanged 2026-08-16 15:38:07 +01:00
sithlord48
fc95339477 refactor(ServerConfigDialog): use SettingsDialogButtonBox and enable control lock for general setting controled items 2026-08-14 13:04:16 +01:00
sithlord48
727191e9eb refactor(ServerConfigDialog): remove unneed slots 2026-08-14 13:04:16 +01:00
sithlord48
4db8c615bd refactor(serverConfigDialog):rename accept -> save 2026-08-14 13:04:16 +01:00
sithlord48
95923e0e90 refactor(serverConfigDialog):rename reject -> cancel 2026-08-14 13:04:16 +01:00
sithlord48
6d5601582d i18n: add missing translation for clear settings button 2026-08-14 13:04:16 +01:00
sithlord48
a7fa844536 refactor(Settings): log warning if saving to readonly settings 2026-08-14 13:04:16 +01:00
sithlord48
e1950ab347 feat(Client Config Dialog): use SettingsDialogButtonBox and make aware of read only settings 2026-08-14 13:04:16 +01:00
sithlord48
584a74af61 refactor(SettingDialog): update updateControls to include all controls 2026-08-14 13:04:16 +01:00
sithlord48
edf2dcbfb0 feat: use new SettingsDialogButtonBox for SettingsDialog 2026-08-14 13:04:16 +01:00
sithlord48
d084cd50bd feat(Settings): emit when setting file writable state has changed 2026-08-14 13:04:16 +01:00
David Sawick
4fc72eda23 fix(wayland): forward whole scroll ticks from hi-res wheels
Fixes #9120

Hi-res mouse wheels (like my logitech G502) send scrolls as fractional clicks. On a mac client, fractional events are truncated to zero lines. This fix accumulates those fractional events then emits the entire click 120 units at a time
2026-08-10 20:26:24 -04:00
fruitriin
a074de1b7c fix(macos): build key map with UCKeyTranslate to honor keyboard type 2026-08-11 01:11:26 +01:00
sithlord48
abcd4278fe refactor: skip calling setAppId for Qt version >= 6.10.0 2026-08-10 19:44:44 -04:00
sithlord48
cc813f016e chore: rename x11layoutsparser -> xkblayoutsparser 2026-08-11 00:23:35 +01:00
praharshaAdhikari
7a90a30ec8 feat: using xkbregistry instead of manually parsing evdev.xml 2026-08-11 00:23:35 +01:00
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
rNoz
dd3944cabc feat(macos): preserve the left/right side of modifier keys on the client
The macOS client mapped every right-hand modifier (Control_R, Shift_R,
Alt_R, Super/Meta_R) to its left-hand virtual key and always emitted the
left device-dependent event flags, so a remote right-side modifier
arrived on the client as the left one. Apps that distinguish the two
(input methods that need Right Shift, hotkeys bound to Right Control,
etc.) never saw the right key.

Map the right-hand KeyIDs to their macOS right virtual keys, teach
isModifier() and setKeyboardModifiers() about them, track which side is
held, and emit the matching NX_DEVICER*KEYMASK device flag. This change
is client-only; the macOS server key map is unchanged.

fixes: #8486
Signed-off-by: rNoz <rnoz.commits@gmail.com>
2026-08-10 17:33:48 -04:00
barrelltitor
6740d30051 fix: release keys before x11 kb map refresh 2026-08-10 22:07:00 +01:00
barrelltitor
141779be1d fix: resync Windows keys from low-level hook state 2026-08-10 21:52:37 +01:00
barrelltitor
079dee7682 fix: preserve resolved Windows key button 2026-08-10 21:52:37 +01:00
barrelltitor
5094580606 fix: from windows side send a key up if it was down before 2026-08-10 21:52:37 +01:00
sithlord48
6692fa5636 refactor(SettingsDialog): move the Messages readonly dialog to the settingsDialog method 2026-08-10 15:45:51 -04:00
Daniel Gräfe
f765e829f2 fix(mac): invalidate event tap CFMachPort on disable 2026-08-08 12:31:15 -04:00
sithlord48
626e170eb6 refactor: move settings clear dialog to settings dialog 2026-08-07 13:51:40 +01:00
sithlord48
7ca8157bd2 refactor: Move the clear settings menu action to the settings dialog Advanced tab 2026-08-07 13:51:40 +01:00
sithlord48
0c902e0557 refactor(SettingsDialog): use a standard margin of 12 for inner margins 2026-08-07 13:51:40 +01:00
Momoyama
9c18070b17 fix(macos): avoid non-selectable IME layouts for remote keys
macOS input methods can expose non-user-selectable keyboard layouts bundled with the input method rather than the user's real selectable keyboard layout. Translating remote key events through those layouts can send IME punctuation semantics to clients instead of the expected ASCII punctuation.

Use the current ASCII-capable keyboard layout when the active input source has no Unicode key layout data and the reported keyboard layout is not directly selectable. Normal selectable keyboard layouts continue to use the existing translation path.

This affects macOS servers forwarding keyboard input to remote clients while an input-method-bundled layout is active.
2026-08-07 13:37:03 +01:00
sithlord48
ed1306aa5d refactor: remove unneeded includes from Core and Daemon IPC classes 2026-08-06 15:38:37 +01:00
sithlord48
86a970a90a build: simplify link for platform library
Add Public and Private links, simplify needed libs for general unix
2026-08-06 13:59:27 +01:00
sithlord48
9da4b5cb87 build: simplify links for gui library
public links to common platform net and Qt6::Widgets
2026-08-06 13:59:27 +01:00
sithlord48
5ef77381d1 build: simplify app lib links
always link platform
 link only Qt6::Xml on non apple unix platforms
2026-08-06 13:59:27 +01:00
sithlord48
0629806eca build: simplify client lib links
Removes the links to app and io on unix platforms
2026-08-06 13:59:27 +01:00
sithlord48
b8e72c6313 refactor: ensure tabwidget start at index 0 2026-08-06 08:07:48 -04:00
sithlord48
8f5ef1efbf refactor(server config dialog): move external server config option to Advanced tab 2026-08-06 07:50:51 -04:00
sithlord48
4e28bce379 refactor(server config dialog): starting tab should depend on if an external config file is being used 2026-08-06 07:50:51 -04:00
sithlord48
fe29194b64 refactor: remove report issue link from menu users should find it via help 2026-08-05 11:38:46 -04:00
sithlord48
dd716c5c7e docs: update config key list 2026-08-05 11:19:26 -04:00
Nick Bolton
a0d643dd89 refactor: replace qFatal with qCritical 2026-08-05 11:05:06 -04:00
Nick Bolton
687d3c7ce8 fix(win): improve module name retrieval in findLoadedModule function 2026-08-05 13:05:27 +01:00
sithlord48
87ac7d8a1f docs: adjust config md to fix up broken screen option table and valid key list 2026-08-04 23:04:36 -04:00
Charles Jones
f8edc7b0ae fix: preserve locked modifiers on ei backend 2026-08-04 14:33:05 -04:00
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