From a277b022ffc166de1db0c4882a7b7642a4453c86 Mon Sep 17 00:00:00 2001 From: rustdesk Date: Fri, 8 Nov 2024 15:00:49 +0800 Subject: [PATCH 1/2] bump to 1.3.3 --- .github/workflows/flutter-build.yml | 2 +- .github/workflows/playground.yml | 2 +- Cargo.lock | 4 ++-- Cargo.toml | 2 +- appimage/AppImageBuilder-aarch64.yml | 2 +- appimage/AppImageBuilder-x86_64.yml | 2 +- flutter/pubspec.lock | 4 ++-- flutter/pubspec.yaml | 4 ++-- libs/portable/Cargo.toml | 2 +- res/PKGBUILD | 2 +- res/rpm-flutter-suse.spec | 2 +- res/rpm-flutter.spec | 2 +- res/rpm.spec | 2 +- 13 files changed, 16 insertions(+), 16 deletions(-) diff --git a/.github/workflows/flutter-build.yml b/.github/workflows/flutter-build.yml index dd21515ba547..5c2c608a821d 100644 --- a/.github/workflows/flutter-build.yml +++ b/.github/workflows/flutter-build.yml @@ -33,7 +33,7 @@ env: VCPKG_BINARY_SOURCES: "clear;x-gha,readwrite" # vcpkg version: 2024.07.12 VCPKG_COMMIT_ID: "1de2026f28ead93ff1773e6e680387643e914ea1" - VERSION: "1.3.2" + VERSION: "1.3.3" NDK_VERSION: "r27b" #signing keys env variable checks ANDROID_SIGNING_KEY: "${{ secrets.ANDROID_SIGNING_KEY }}" diff --git a/.github/workflows/playground.yml b/.github/workflows/playground.yml index efd6974a9914..843e07835cdb 100644 --- a/.github/workflows/playground.yml +++ b/.github/workflows/playground.yml @@ -18,7 +18,7 @@ env: VCPKG_BINARY_SOURCES: "clear;x-gha,readwrite" # vcpkg version: 2024.06.15 VCPKG_COMMIT_ID: "f7423ee180c4b7f40d43402c2feb3859161ef625" - VERSION: "1.3.2" + VERSION: "1.3.3" NDK_VERSION: "r26d" #signing keys env variable checks ANDROID_SIGNING_KEY: "${{ secrets.ANDROID_SIGNING_KEY }}" diff --git a/Cargo.lock b/Cargo.lock index 7565d34eed64..5930b87216d4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5480,7 +5480,7 @@ dependencies = [ [[package]] name = "rustdesk" -version = "1.3.2" +version = "1.3.3" dependencies = [ "android-wakelock", "android_logger", @@ -5580,7 +5580,7 @@ dependencies = [ [[package]] name = "rustdesk-portable-packer" -version = "1.3.2" +version = "1.3.3" dependencies = [ "brotli", "dirs 5.0.1", diff --git a/Cargo.toml b/Cargo.toml index 1ee749afb80e..a7788372b958 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "rustdesk" -version = "1.3.2" +version = "1.3.3" authors = ["rustdesk "] edition = "2021" build= "build.rs" diff --git a/appimage/AppImageBuilder-aarch64.yml b/appimage/AppImageBuilder-aarch64.yml index 5ff9fc2a7b23..a6bd632dc0cb 100644 --- a/appimage/AppImageBuilder-aarch64.yml +++ b/appimage/AppImageBuilder-aarch64.yml @@ -18,7 +18,7 @@ AppDir: id: rustdesk name: rustdesk icon: rustdesk - version: 1.3.2 + version: 1.3.3 exec: usr/lib/rustdesk/rustdesk exec_args: $@ apt: diff --git a/appimage/AppImageBuilder-x86_64.yml b/appimage/AppImageBuilder-x86_64.yml index d8f0991cf953..9ea820fec475 100644 --- a/appimage/AppImageBuilder-x86_64.yml +++ b/appimage/AppImageBuilder-x86_64.yml @@ -18,7 +18,7 @@ AppDir: id: rustdesk name: rustdesk icon: rustdesk - version: 1.3.2 + version: 1.3.3 exec: usr/lib/rustdesk/rustdesk exec_args: $@ apt: diff --git a/flutter/pubspec.lock b/flutter/pubspec.lock index 6551bbb37bfb..1a8badd89ae7 100644 --- a/flutter/pubspec.lock +++ b/flutter/pubspec.lock @@ -1583,8 +1583,8 @@ packages: dependency: "direct main" description: path: "plugins/window_size" - ref: a738913c8ce2c9f47515382d40827e794a334274 - resolved-ref: a738913c8ce2c9f47515382d40827e794a334274 + ref: eb3964990cf19629c89ff8cb4a37640c7b3d5601 + resolved-ref: eb3964990cf19629c89ff8cb4a37640c7b3d5601 url: "https://github.com/google/flutter-desktop-embedding.git" source: git version: "0.1.0" diff --git a/flutter/pubspec.yaml b/flutter/pubspec.yaml index cc3a2e6c53f7..0f105d702bf3 100644 --- a/flutter/pubspec.yaml +++ b/flutter/pubspec.yaml @@ -16,7 +16,7 @@ publish_to: "none" # Remove this line if you wish to publish to pub.dev # Read more about iOS versioning at # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html # 1.1.9-1 works for android, but for ios it becomes 1.1.91, need to set it to 1.1.9-a.1 for iOS, will get 1.1.9.1, but iOS store not allow 4 numbers -version: 1.3.2+51 +version: 1.3.3+52 environment: sdk: '^3.1.0' @@ -62,7 +62,7 @@ dependencies: git: url: https://github.com/google/flutter-desktop-embedding.git path: plugins/window_size - ref: a738913c8ce2c9f47515382d40827e794a334274 + ref: eb3964990cf19629c89ff8cb4a37640c7b3d5601 get: ^4.6.5 visibility_detector: ^0.4.0+2 contextmenu: ^3.0.0 diff --git a/libs/portable/Cargo.toml b/libs/portable/Cargo.toml index 7e60f7d1fac6..3bf827865dd6 100644 --- a/libs/portable/Cargo.toml +++ b/libs/portable/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "rustdesk-portable-packer" -version = "1.3.2" +version = "1.3.3" edition = "2021" description = "RustDesk Remote Desktop" diff --git a/res/PKGBUILD b/res/PKGBUILD index 616682e8f69f..3da7c98da0ab 100644 --- a/res/PKGBUILD +++ b/res/PKGBUILD @@ -1,5 +1,5 @@ pkgname=rustdesk -pkgver=1.3.2 +pkgver=1.3.3 pkgrel=0 epoch= pkgdesc="" diff --git a/res/rpm-flutter-suse.spec b/res/rpm-flutter-suse.spec index 768b04c28d2e..7f52a8f57f87 100644 --- a/res/rpm-flutter-suse.spec +++ b/res/rpm-flutter-suse.spec @@ -1,5 +1,5 @@ Name: rustdesk -Version: 1.3.2 +Version: 1.3.3 Release: 0 Summary: RPM package License: GPL-3.0 diff --git a/res/rpm-flutter.spec b/res/rpm-flutter.spec index b62c18b3b71f..fcb15a1a14ab 100644 --- a/res/rpm-flutter.spec +++ b/res/rpm-flutter.spec @@ -1,5 +1,5 @@ Name: rustdesk -Version: 1.3.2 +Version: 1.3.3 Release: 0 Summary: RPM package License: GPL-3.0 diff --git a/res/rpm.spec b/res/rpm.spec index 033e95937d25..bdd6afa3f4f6 100644 --- a/res/rpm.spec +++ b/res/rpm.spec @@ -1,5 +1,5 @@ Name: rustdesk -Version: 1.3.2 +Version: 1.3.3 Release: 0 Summary: RPM package License: GPL-3.0 From d3efcd4223a0687181616ef53d64bbea6c164f1a Mon Sep 17 00:00:00 2001 From: fufesou <13586388+fufesou@users.noreply.github.com> Date: Fri, 8 Nov 2024 15:01:36 +0800 Subject: [PATCH 2/2] fix: mobile, soft keyboard (#9860) Switching the input method, don't affect the canvas. Signed-off-by: fufesou --- flutter/lib/mobile/pages/remote_page.dart | 9 ++++++++- flutter/lib/models/model.dart | 16 ++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/flutter/lib/mobile/pages/remote_page.dart b/flutter/lib/mobile/pages/remote_page.dart index e63a5c5b9bf4..1dee69b94ee7 100644 --- a/flutter/lib/mobile/pages/remote_page.dart +++ b/flutter/lib/mobile/pages/remote_page.dart @@ -134,6 +134,13 @@ class _RemotePageState extends State with WidgetsBindingObserver { @override void didChangeMetrics() { + // If the soft keyboard is visible and the canvas has been changed(panned or scaled) + // Don't try reset the view style and focus the cursor. + if (gFFI.cursorModel.lastKeyboardIsVisible && + gFFI.canvasModel.isMobileCanvasChanged) { + return; + } + final newBottom = MediaQueryData.fromView(ui.window).viewInsets.bottom; _timerDidChangeMetrics?.cancel(); _timerDidChangeMetrics = Timer(Duration(milliseconds: 100), () async { @@ -563,7 +570,7 @@ class _RemotePageState extends State with WidgetsBindingObserver { // `onChanged` may be called depending on the input method if this widget is wrapped in // `Focus(onKeyEvent: ..., child: ...)` // For `Backspace` button in the soft keyboard: - // en/fr input method: + // en/fr input method: // 1. The button will not trigger `onKeyEvent` if the text field is not empty. // 2. The button will trigger `onKeyEvent` if the text field is empty. // ko/zh/ja input method: the button will trigger `onKeyEvent` diff --git a/flutter/lib/models/model.dart b/flutter/lib/models/model.dart index d3c76457a8a9..5446856fe5ab 100644 --- a/flutter/lib/models/model.dart +++ b/flutter/lib/models/model.dart @@ -1424,6 +1424,10 @@ class CanvasModel with ChangeNotifier { Timer? _timerMobileFocusCanvasCursor; + // `isMobileCanvasChanged` is used to avoid canvas reset when changing the input method + // after showing the soft keyboard. + bool isMobileCanvasChanged = false; + final ScrollController _horizontal = ScrollController(); final ScrollController _vertical = ScrollController(); @@ -1639,6 +1643,9 @@ class CanvasModel with ChangeNotifier { panX(double dx) { _x += dx; + if (isMobile) { + isMobileCanvasChanged = true; + } notifyListeners(); } @@ -1653,6 +1660,9 @@ class CanvasModel with ChangeNotifier { panY(double dy) { _y += dy; + if (isMobile) { + isMobileCanvasChanged = true; + } notifyListeners(); } @@ -1672,6 +1682,9 @@ class CanvasModel with ChangeNotifier { // (focalPoint.dy - _y_1 - adjust) / s1 + displayOriginY = (focalPoint.dy - _y_2 - adjust) / s2 + displayOriginY // _y_2 = focalPoint.dy - adjust - (focalPoint.dy - _y_1 - adjust) / s1 * s2 _y = focalPoint.dy - adjust - (focalPoint.dy - _y - adjust) / s * _scale; + if (isMobile) { + isMobileCanvasChanged = true; + } notifyListeners(); } @@ -1941,6 +1954,8 @@ class CursorModel with ChangeNotifier { bool _lastIsBlocked = false; bool _lastKeyboardIsVisible = false; + bool get lastKeyboardIsVisible => _lastKeyboardIsVisible; + Rect? get keyHelpToolsRectToAdjustCanvas => _lastKeyboardIsVisible ? _keyHelpToolsRect : null; keyHelpToolsVisibilityChanged(Rect? r, bool keyboardIsVisible) { @@ -1955,6 +1970,7 @@ class CursorModel with ChangeNotifier { } if (isMobile && _lastKeyboardIsVisible != keyboardIsVisible) { parent.target?.canvasModel.mobileFocusCanvasCursor(); + parent.target?.canvasModel.isMobileCanvasChanged = false; } _lastKeyboardIsVisible = keyboardIsVisible; }