From ce300aa75fbc5a5a95bc80ddcc11852dbf4ef62d Mon Sep 17 00:00:00 2001 From: Sahil Yeole Date: Wed, 25 Oct 2023 02:05:17 +0530 Subject: [PATCH 1/6] remove unused onSubmitted Signed-off-by: Sahil Yeole --- flutter/lib/desktop/pages/connection_page.dart | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/flutter/lib/desktop/pages/connection_page.dart b/flutter/lib/desktop/pages/connection_page.dart index 670f330bb..cab9b12f7 100644 --- a/flutter/lib/desktop/pages/connection_page.dart +++ b/flutter/lib/desktop/pages/connection_page.dart @@ -271,18 +271,6 @@ class _ConnectionPageState extends State onChanged: (v) { _idController.id = v; }, - onSubmitted: (s) { - if (s == '') { - return; - } - try { - final id = int.parse(s); - _idController.id = s; - onConnect(); - } catch (_) { - return; - } - }, )); }, optionsViewBuilder: (BuildContext context, AutocompleteOnSelected onSelected, Iterable options) { From 2cdfeb8dd0bebfad34c17bdf4e3c44ef29358fcd Mon Sep 17 00:00:00 2001 From: Sahil Yeole Date: Wed, 25 Oct 2023 02:36:23 +0530 Subject: [PATCH 2/6] fix id field ui not updating on peer card connection Signed-off-by: Sahil Yeole --- flutter/lib/common.dart | 4 ++++ flutter/lib/desktop/pages/connection_page.dart | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/flutter/lib/common.dart b/flutter/lib/common.dart index 0ab790720..9c8404c56 100644 --- a/flutter/lib/common.dart +++ b/flutter/lib/common.dart @@ -2024,6 +2024,10 @@ connect( final idController = Get.find(); idController.text = formatID(id); } + if (Get.isRegistered()){ + final fieldTextEditingController = Get.find(); + fieldTextEditingController.text = formatID(id); + } } catch (_) {} } id = id.replaceAll(' ', ''); diff --git a/flutter/lib/desktop/pages/connection_page.dart b/flutter/lib/desktop/pages/connection_page.dart index cab9b12f7..a40e8abe0 100644 --- a/flutter/lib/desktop/pages/connection_page.dart +++ b/flutter/lib/desktop/pages/connection_page.dart @@ -81,6 +81,9 @@ class _ConnectionPageState extends State if (Get.isRegistered()) { Get.delete(); } + if (Get.isRegistered()){ + Get.delete(); + } super.dispose(); } @@ -235,6 +238,7 @@ class _ConnectionPageState extends State VoidCallback onFieldSubmitted, ) { fieldTextEditingController.text = _idController.text; + Get.put(fieldTextEditingController); fieldFocusNode.addListener(() async { _idInputFocused.value = fieldFocusNode.hasFocus; if (fieldFocusNode.hasFocus && !isPeersLoading){ From fcf3577f67c416a87902e5adfb7d37f5ad0ed164 Mon Sep 17 00:00:00 2001 From: fufesou Date: Wed, 25 Oct 2023 09:20:51 +0800 Subject: [PATCH 3/6] fix, check session's keyboard mode on conn Signed-off-by: fufesou --- flutter/lib/consts.dart | 4 +++ .../lib/desktop/widgets/remote_toolbar.dart | 30 +++++++--------- flutter/lib/models/model.dart | 34 +++++++++++++++++++ 3 files changed, 50 insertions(+), 18 deletions(-) diff --git a/flutter/lib/consts.dart b/flutter/lib/consts.dart index e3339c1ec..ccd8fbaac 100644 --- a/flutter/lib/consts.dart +++ b/flutter/lib/consts.dart @@ -11,6 +11,10 @@ const int kMainWindowId = 0; const kAllDisplayValue = -1; +const kKeyLegacyMode = 'legacy'; +const kKeyMapMode = 'map'; +const kKeyTranslateMode = 'translate'; + const String kPeerPlatformWindows = "Windows"; const String kPeerPlatformLinux = "Linux"; const String kPeerPlatformMacOS = "Mac OS"; diff --git a/flutter/lib/desktop/widgets/remote_toolbar.dart b/flutter/lib/desktop/widgets/remote_toolbar.dart index 1cfa36145..1f161ec42 100644 --- a/flutter/lib/desktop/widgets/remote_toolbar.dart +++ b/flutter/lib/desktop/widgets/remote_toolbar.dart @@ -26,10 +26,6 @@ import '../../common/shared_state.dart'; import './popup_menu.dart'; import './kb_layout_type_chooser.dart'; -const _kKeyLegacyMode = 'legacy'; -const _kKeyMapMode = 'map'; -const _kKeyTranslateMode = 'translate'; - class ToolbarState { final kStoreKey = 'remoteMenubarState'; late RxBool show; @@ -1406,18 +1402,16 @@ class _KeyboardMenu extends StatelessWidget { Widget build(BuildContext context) { var ffiModel = Provider.of(context); if (!ffiModel.keyboard) return Offstage(); + // If use flutter to grab keys, we can only use one mode. + // Map mode and Legacy mode, at least one of them is supported. String? modeOnly; if (stateGlobal.grabKeyboard) { if (bind.sessionIsKeyboardModeSupported( - sessionId: ffi.sessionId, mode: _kKeyMapMode)) { - bind.sessionSetKeyboardMode( - sessionId: ffi.sessionId, value: _kKeyMapMode); - modeOnly = _kKeyMapMode; + sessionId: ffi.sessionId, mode: kKeyMapMode)) { + modeOnly = kKeyMapMode; } else if (bind.sessionIsKeyboardModeSupported( - sessionId: ffi.sessionId, mode: _kKeyLegacyMode)) { - bind.sessionSetKeyboardMode( - sessionId: ffi.sessionId, value: _kKeyLegacyMode); - modeOnly = _kKeyLegacyMode; + sessionId: ffi.sessionId, mode: kKeyLegacyMode)) { + modeOnly = kKeyLegacyMode; } } return _IconSubmenuButton( @@ -1439,13 +1433,13 @@ class _KeyboardMenu extends StatelessWidget { keyboardMode(String? modeOnly) { return futureBuilder(future: () async { return await bind.sessionGetKeyboardMode(sessionId: ffi.sessionId) ?? - _kKeyLegacyMode; + kKeyLegacyMode; }(), hasData: (data) { final groupValue = data as String; List modes = [ - InputModeMenu(key: _kKeyLegacyMode, menu: 'Legacy mode'), - InputModeMenu(key: _kKeyMapMode, menu: 'Map mode'), - InputModeMenu(key: _kKeyTranslateMode, menu: 'Translate mode'), + InputModeMenu(key: kKeyLegacyMode, menu: 'Legacy mode'), + InputModeMenu(key: kKeyMapMode, menu: 'Map mode'), + InputModeMenu(key: kKeyTranslateMode, menu: 'Translate mode'), ]; List list = []; final enabled = !ffi.ffiModel.viewOnly; @@ -1463,12 +1457,12 @@ class _KeyboardMenu extends StatelessWidget { continue; } - if (pi.isWayland && mode.key != _kKeyMapMode) { + if (pi.isWayland && mode.key != kKeyMapMode) { continue; } var text = translate(mode.menu); - if (mode.key == _kKeyTranslateMode) { + if (mode.key == kKeyTranslateMode) { text = '$text beta'; } list.add(RdoMenuButton( diff --git a/flutter/lib/models/model.dart b/flutter/lib/models/model.dart index 0d257eaf0..c8675dfa7 100644 --- a/flutter/lib/models/model.dart +++ b/flutter/lib/models/model.dart @@ -703,6 +703,10 @@ class FfiModel with ChangeNotifier { _pi.isSet.value = true; stateGlobal.resetLastResolutionGroupValues(peerId); + if (isDesktop) { + checkDesktopKeyboardMode(); + } + notifyListeners(); if (!isCache) { @@ -710,6 +714,36 @@ class FfiModel with ChangeNotifier { } } + checkDesktopKeyboardMode() async { + final curMode = await bind.sessionGetKeyboardMode(sessionId: sessionId); + if (curMode != null) { + if (bind.sessionIsKeyboardModeSupported( + sessionId: sessionId, mode: curMode)) { + return; + } + } + + // If current keyboard mode is not supported, change to another one. + + if (stateGlobal.grabKeyboard) { + for (final mode in [kKeyMapMode, kKeyLegacyMode]) { + if (bind.sessionIsKeyboardModeSupported( + sessionId: sessionId, mode: mode)) { + bind.sessionSetKeyboardMode(sessionId: sessionId, value: mode); + break; + } + } + } else { + for (final mode in [kKeyMapMode, kKeyTranslateMode, kKeyLegacyMode]) { + if (bind.sessionIsKeyboardModeSupported( + sessionId: sessionId, mode: mode)) { + bind.sessionSetKeyboardMode(sessionId: sessionId, value: mode); + break; + } + } + } + } + tryUseAllMyDisplaysForTheRemoteSession(String peerId) async { if (bind.sessionGetUseAllMyDisplaysForTheRemoteSession( sessionId: sessionId) != From 30580b2c57f266f6f54f04cd064c49fd34241e3b Mon Sep 17 00:00:00 2001 From: RustDesk <71636191+rustdesk@users.noreply.github.com> Date: Wed, 25 Oct 2023 13:15:15 +0800 Subject: [PATCH 4/6] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index c00bc88f0..502d10b28 100644 --- a/README.md +++ b/README.md @@ -170,12 +170,12 @@ Please ensure that you are running these commands from the root of the RustDesk - **[libs/hbb_common](https://github.com/rustdesk/rustdesk/tree/master/libs/hbb_common)**: video codec, config, tcp/udp wrapper, protobuf, fs functions for file transfer, and some other utility functions - **[libs/scrap](https://github.com/rustdesk/rustdesk/tree/master/libs/scrap)**: screen capture - **[libs/enigo](https://github.com/rustdesk/rustdesk/tree/master/libs/enigo)**: platform specific keyboard/mouse control -- **[src/ui](https://github.com/rustdesk/rustdesk/tree/master/src/ui)**: GUI +- **[src/ui](https://github.com/rustdesk/rustdesk/tree/master/src/ui)**: obsolete Sciter UI (deprecated) - **[src/server](https://github.com/rustdesk/rustdesk/tree/master/src/server)**: audio/clipboard/input/video services, and network connections - **[src/client.rs](https://github.com/rustdesk/rustdesk/tree/master/src/client.rs)**: start a peer connection - **[src/rendezvous_mediator.rs](https://github.com/rustdesk/rustdesk/tree/master/src/rendezvous_mediator.rs)**: Communicate with [rustdesk-server](https://github.com/rustdesk/rustdesk-server), wait for remote direct (TCP hole punching) or relayed connection - **[src/platform](https://github.com/rustdesk/rustdesk/tree/master/src/platform)**: platform specific code -- **[flutter](https://github.com/rustdesk/rustdesk/tree/master/flutter)**: Flutter code for mobile +- **[flutter](https://github.com/rustdesk/rustdesk/tree/master/flutter)**: Flutter code for desktop and mobile - **[flutter/web/js](https://github.com/rustdesk/rustdesk/tree/master/flutter/web/js)**: JavaScript for Flutter web client ## Snapshots From 39b5a670404ec00275f05d12aeac900cbbba4a26 Mon Sep 17 00:00:00 2001 From: RustDesk <71636191+rustdesk@users.noreply.github.com> Date: Wed, 25 Oct 2023 13:19:37 +0800 Subject: [PATCH 5/6] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 502d10b28..924cd1786 100644 --- a/README.md +++ b/README.md @@ -49,7 +49,7 @@ Go through [DEVCONTAINER.md](docs/DEVCONTAINER.md) for more info. ## Dependencies -Desktop versions use [Sciter](https://sciter.com/) or Flutter for GUI, this tutorial is for Sciter only. +Desktop versions use Flutter or Sciter (deprecated) for GUI, this tutorial is for Sciter only, since it is easier and more friendly to starter. Check out our [CI](https://github.com/rustdesk/rustdesk/blob/master/.github/workflows/flutter-build.yml) for building Flutter version. Please download Sciter dynamic library yourself. From cadbae31e41deba0ae39ff9056c0921d855b8d12 Mon Sep 17 00:00:00 2001 From: flusheDData <116861809+flusheDData@users.noreply.github.com> Date: Wed, 25 Oct 2023 10:19:17 +0200 Subject: [PATCH 6/6] Update es.rs selinux_tip translation --- src/lang/es.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lang/es.rs b/src/lang/es.rs index 426e80a8e..32635973f 100644 --- a/src/lang/es.rs +++ b/src/lang/es.rs @@ -565,6 +565,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Open in new window", "Abrir en una nueva ventana"), ("Show displays as individual windows", "Mostrar pantallas como ventanas individuales"), ("Use all my displays for the remote session", "Usar todas mis pantallas para la sesión remota"), - ("selinux_tip", ""), + ("selinux_tip", "SELinux está activado en tu dispositivo, lo que puede hacer que RustDesk no se ejecute correctamente como lado controlado."), ].iter().cloned().collect(); }