Commit Graph

62 Commits

Author SHA1 Message Date
fufesou
998b75856d feat: Add relative mouse mode (#13928)
* feat: Add relative mouse mode

- Add "Relative Mouse Mode" toggle in desktop toolbar and bind to InputModel
- Implement relative mouse movement path: Flutter pointer deltas -> `type: move_relative` -> new `MOUSE_TYPE_MOVE_RELATIVE` in Rust
- In server input service, simulate relative movement via Enigo and keep latest cursor position in sync
- Track pointer-lock center in Flutter (local widget + screen coordinates) and re-center OS cursor after each relative move
- Update pointer-lock center on window move/resize/restore/maximize and when remote display geometry changes
- Hide local cursor when relative mouse mode is active (both Flutter cursor and OS cursor), restore on leave/disable
- On Windows, clip OS cursor to the window rect while in relative mode and release clip when leaving/turning off
- Implement platform helpers: `get_cursor_pos`, `set_cursor_pos`, `show_cursor`, `clip_cursor` (no-op clip/hide on Linux for now)
- Add keyboard shortcut Ctrl+Alt+Shift+M to toggle relative mode (enabled by default, works on all platforms)
- Remove `enable-relative-mouse-shortcut` config option - shortcut is now always available when keyboard permission is granted
- Handle window blur/focus/minimize events to properly release/restore cursor constraints
- Add MOUSE_TYPE_MASK constant and unit tests for mouse event constants

Note: Relative mouse mode state is NOT persisted to config (session-only).
Note: On Linux, show_cursor and clip_cursor are no-ops; cursor hiding is handled by Flutter side.

Signed-off-by: fufesou <linlong1266@gmail.com>

* feat(mouse): relative mouse mode, exit hint

Signed-off-by: fufesou <linlong1266@gmail.com>

* refact(relative mouse): shortcut

Signed-off-by: fufesou <linlong1266@gmail.com>

---------

Signed-off-by: fufesou <linlong1266@gmail.com>
2026-01-09 10:03:14 +08:00
fufesou
910dcf2036 refact: tls, native-tls fallback rustls-tls (#13263)
Signed-off-by: fufesou <linlong1266@gmail.com>
2025-11-03 23:21:01 +08:00
Alessandro De Blasis
0550397046 fix: scale custom on mobile (#13324)
* fix: prevent custom scale dialog from closing when interacting with slider

Wrapped MobileCustomScaleControls in GestureDetector with opaque behavior
to prevent touch events from propagating to parent dialog's clickMaskDismiss
handler. The slider now works correctly without closing the dialog.

Signed-off-by: Alessandro De Blasis <alex@deblasis.net>

* Update flutter/lib/mobile/widgets/custom_scale_widget.dart

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update flutter/lib/mobile/widgets/custom_scale_widget.dart

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update flutter/lib/mobile/widgets/custom_scale_widget.dart

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update flutter/lib/mobile/widgets/custom_scale_widget.dart

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Revert "fix: mobile remove "Scale custom" (#13323)"

This reverts commit 265d08fc3b.

* chore: keep remote_toolbar.dart cleanup (remove dead code)

  The dead code removed in 265d08fc3 hasn't been used since Aug 2023.
  Only reverting toolbar.dart is needed for the mobile Scale custom fix.

* Update flutter/lib/mobile/pages/remote_page.dart

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* refactor: Implement CustomScaleControlsMixin for shared scaling logic across mobile and desktop widgets

- Introduced a new mixin `CustomScaleControlsMixin` to encapsulate custom scale control logic, allowing for code reuse in both mobile and desktop widgets.
- Refactored `_CustomScaleMenuControlsState` and `_MobileCustomScaleControlsState` to utilize the new mixin, simplifying the scaling logic and reducing code duplication.
- Updated slider handling and state management to leverage the mixin's methods for improved maintainability.

Signed-off-by: Alessandro De Blasis <alex@deblasis.net>

* Update flutter/lib/desktop/widgets/remote_toolbar.dart

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update flutter/lib/mobile/widgets/custom_scale_widget.dart

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update flutter/lib/mobile/pages/remote_page.dart

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* refactor: changed from mixin to abstract class

Signed-off-by: Alessandro De Blasis <alex@deblasis.net>

* Revert "Update flutter/lib/mobile/pages/remote_page.dart"

This reverts commit 7c35897408.

* refactor: remove unnecessary tap event handling in custom scale controls

- Removed the `onTap` handler from the

Signed-off-by: Alessandro De Blasis <alex@deblasis.net>

* refactor: simplify MobileCustomScaleControls usage in remote_page.dart

- Removed unnecessary GestureDetector wrapper around MobileCustomScaleControls for cleaner code.

Signed-off-by: Alessandro De Blasis <alex@deblasis.net>

---------

Signed-off-by: Alessandro De Blasis <alex@deblasis.net>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-10-31 11:08:03 +08:00
fufesou
0f3a03aab7 feat: mobile, virtual mouse (#12911)
* feat: mobile, virtual mouse

Signed-off-by: fufesou <linlong1266@gmail.com>

* feat: mobile, virtual mouse, mouse mode

Signed-off-by: fufesou <linlong1266@gmail.com>

* refact: mobile, virtual mouse, mouse mode

Signed-off-by: fufesou <linlong1266@gmail.com>

* feat: mobile, virtual mouse mode

Signed-off-by: fufesou <linlong1266@gmail.com>

* feat: mobile virtual mouse, options

Signed-off-by: fufesou <linlong1266@gmail.com>

---------

Signed-off-by: fufesou <linlong1266@gmail.com>
Co-authored-by: RustDesk <71636191+rustdesk@users.noreply.github.com>
2025-10-09 08:23:55 +08:00
fufesou
9114743577 fix: linux, flutter, workaround freeze (#10324)
Signed-off-by: fufesou <linlong1266@gmail.com>
2024-12-20 09:24:08 +08:00
21pages
34d2c62781 set id/relay server with a dialog (#10150)
Signed-off-by: 21pages <sunboeasy@gmail.com>
2024-12-03 14:14:29 +08:00
21pages
560c1effe8 remove mobile web setting, remove web/ios relay server setting (#9575)
Signed-off-by: 21pages <sunboeasy@gmail.com>
2024-10-06 16:20:37 +08:00
dignow
b967d496cc refact: init values from initState to Constractor (#8817)
* refact: init values from initState to Constractor

Signed-off-by: dignow <linlong1265@gmail.com>

* fix: move RxBool init into Constructor

Signed-off-by: dignow <linlong1265@gmail.com>

* peer sort option

Signed-off-by: dignow <linlong1265@gmail.com>

* Remove empty initState()

Signed-off-by: dignow <linlong1265@gmail.com>

---------

Signed-off-by: dignow <linlong1265@gmail.com>
2024-07-25 10:45:51 +08:00
fufesou
1dfbaa1e02 fix: test if valid server, control if try test with proxy (#7858)
* fix: test if valid server, control if try test with proxy

Signed-off-by: fufesou <shuanglongchen@yeah.net>

* fix: build

Signed-off-by: fufesou <shuanglongchen@yeah.net>

---------

Signed-off-by: fufesou <shuanglongchen@yeah.net>
2024-04-28 14:22:21 +08:00
21pages
1f557888f5 update pubspec.lock, remove some deprecated (#7110)
* fix some warnings and some deprecated reported by `flutter analyze`

Signed-off-by: 21pages <pages21@163.com>

* pubspec.lock changes from flutter 3.16.9

Signed-off-by: 21pages <pages21@163.com>

* pubspec.lock changes from `flutter pub upgrade`

Signed-off-by: 21pages <pages21@163.com>

---------

Signed-off-by: 21pages <pages21@163.com>
2024-02-12 21:39:19 +08:00
rustdesk
aa7d0471db Fix #616, add rustdesk://config/<config_string> 2023-12-03 20:31:48 +08:00
fufesou
1905a81f9a virtual_display_privacy_mode, switch privacy mode directly
Signed-off-by: fufesou <shuanglongchen@yeah.net>
2023-11-14 19:36:51 +08:00
fufesou
e2382a1465 refact, mobile, privacy mode menu
Signed-off-by: fufesou <shuanglongchen@yeah.net>
2023-11-14 17:35:16 +08:00
21pages
54de5b0300 mobile add default display, merge set server and custom quality code
Signed-off-by: 21pages <pages21@163.com>
2023-09-01 15:04:36 +08:00
21pages
979203cbdb replace offstage with if-else for LinearProgressIndicator in dialog
Signed-off-by: 21pages <pages21@163.com>
2023-08-18 16:16:21 +08:00
dignow
c01c8d0afc touch screen input
Signed-off-by: dignow <linlong1265@gmail.com>
2023-07-17 20:07:55 +08:00
rustdesk
31eea1482b remove stupid group, bad implementation, buggy, and not usable 2023-06-23 17:05:48 +08:00
Kingtous
77fa807b57 feat: implement dialog callback 2023-05-08 12:34:19 +08:00
grummbeer
18ebd2e727 Dialogs Mobile. Options for password length horizontal 2023-03-30 04:11:48 +02:00
grummbeer
7351c58336 Dialogs Mobile. Remove custom contentPadding 2023-03-30 02:43:31 +02:00
fufesou
8ebfd3f628 refactor dialog
Signed-off-by: fufesou <shuanglongchen@yeah.net>
2023-03-24 15:21:14 +08:00
Mr-Update
b7f16997b1 Update dialog.dart 2023-03-12 14:08:26 +01:00
rustdesk
6ae2fbdbc8 change "temporary password" to "one-time password" 2023-03-06 11:25:49 +08:00
NicKoehler
fd8829f08e added icon to dialogButton, reverted some design changes. The outline buttons now rely on theme data 2023-03-01 14:50:50 +01:00
NicKoehler
18339cf343 password dialog 2023-02-28 16:36:44 +01:00
NicKoehler
7bf728bdad restart device dialog 2023-02-28 15:57:25 +01:00
21pages
a9598e006a request elevation menu
Signed-off-by: 21pages <pages21@163.com>
2023-02-24 15:51:13 +08:00
csf
244cfa25f1 opt dark theme in gesture_help.dart 2023-02-09 10:29:35 +09:00
21pages
40d0ea016b refactor peer tab with model, make it scrollable
Signed-off-by: 21pages <pages21@163.com>
2023-02-06 12:54:32 +08:00
rustdesk
3462756a11 optimize dialog margin, fix password eye icon color 2023-02-05 16:56:13 +08:00
21pages
dec1820694 opt dialog style
Signed-off-by: 21pages <pages21@163.com>
2023-01-30 17:56:35 +08:00
21pages
62791613a7 opt dialog button style
Signed-off-by: 21pages <pages21@163.com>
2023-01-15 19:46:16 +08:00
21pages
d3b490ac48 elevation request
Signed-off-by: 21pages <pages21@163.com>
2023-01-14 17:39:46 +08:00
csf
9c07a0f2d8 fix mobile api server validation bug 2022-12-26 10:12:01 +09:00
csf
cba6a3e0ee refactor to use ServerConfig 2022-12-21 16:24:01 +09:00
csf
f5cc55ab3d refactor mobile import ServerConfig 2022-12-21 15:41:07 +09:00
21pages
ca8cb5a3b0 portable-service: better prompt message
Signed-off-by: 21pages <pages21@163.com>
2022-11-15 17:05:12 +08:00
Kingtous
2301d09303 feat: replace forceAppUpdate with customed reloadWindow 2022-10-26 14:39:13 +08:00
fufesou
77de0d05f9 msgbox & translations
Signed-off-by: fufesou <shuanglongchen@yeah.net>
2022-10-17 22:00:44 +08:00
21pages
172091602a opt: adjust msgbox text width, passwordDialog support enter && esc
Signed-off-by: 21pages <pages21@163.com>
2022-09-29 10:48:27 +08:00
csf
51b02353c9 1. mobile ab login.
2. typos
3. del rename dialog body padding
2022-09-22 17:41:58 +08:00
rustdesk
f64d2a3983 fix translation 2022-09-18 11:02:27 +08:00
RustDesk
d18071e70a Merge pull request #1372 from TheLumbee/master
Grammatical correction for closing dialog.
2022-09-18 10:59:36 +08:00
csf
f6055130e4 mv overlay.dart 2022-09-13 09:14:10 +08:00
csf
d0c438268d update overlay widgets on flutter desktop
1. add mobile actions
2. disable showChatIcon
2022-09-08 22:18:02 +08:00
Zachary Locklear
25b052ef17 Grammatical correction for closing dialog. 2022-08-25 09:57:12 -06:00
csf
ce050e250d desktop close connection tab (remote page) 2022-08-17 10:01:26 +08:00
csf
53b69b59a8 rename get_session -> session_get 2022-08-17 10:00:35 +08:00
csf
f99ab7d0a7 fix dialog res bug ; add desktop restart remote device 2022-08-15 20:29:51 +08:00
csf
5b3ef29d75 fix mobile showSuccess & update pubspec.lock 2022-08-15 14:43:08 +08:00