From 3c7e24c6055c02b683f0c594549f40efc43049cb Mon Sep 17 00:00:00 2001 From: rustdesk Date: Mon, 8 Jul 2024 11:38:42 +0800 Subject: [PATCH] add MOUSE_MOVE_TIME to key event, may work for https://github.com/rustdesk/rustdesk/issues/8633 when window resume via keyboard rather than mouse --- .../lib/desktop/pages/desktop_tab_page.dart | 18 ++++++++++++++++++ src/server/connection.rs | 2 ++ 2 files changed, 20 insertions(+) diff --git a/flutter/lib/desktop/pages/desktop_tab_page.dart b/flutter/lib/desktop/pages/desktop_tab_page.dart index 0f7e77c81..9c42ab465 100644 --- a/flutter/lib/desktop/pages/desktop_tab_page.dart +++ b/flutter/lib/desktop/pages/desktop_tab_page.dart @@ -8,6 +8,7 @@ import 'package:flutter_hbb/models/platform_model.dart'; import 'package:flutter_hbb/models/state_model.dart'; import 'package:get/get.dart'; import 'package:window_manager/window_manager.dart'; +// import 'package:flutter/services.dart'; import '../../common/shared_state.dart'; @@ -41,6 +42,7 @@ class _DesktopTabPageState extends State final tabController = DesktopTabController(tabType: DesktopTabType.main); final RxBool _block = false.obs; + // bool mouseIn = false; @override void didChangeAppLifecycleState(AppLifecycleState state) { @@ -53,6 +55,7 @@ class _DesktopTabPageState extends State @override void initState() { super.initState(); + // HardwareKeyboard.instance.addHandler(_handleKeyEvent); WidgetsBinding.instance.addObserver(this); Get.put(tabController); RemoteCountState.init(); @@ -78,8 +81,19 @@ class _DesktopTabPageState extends State } } + /* + bool _handleKeyEvent(KeyEvent event) { + if (!mouseIn && event is KeyDownEvent) { + print('key down: ${event.logicalKey}'); + shouldBeBlocked(_block, canBeBlocked); + } + return false; // allow it to propagate + } + */ + @override void dispose() { + // HardwareKeyboard.instance.removeHandler(_handleKeyEvent); WidgetsBinding.instance.removeObserver(this); Get.delete(); @@ -105,8 +119,12 @@ class _DesktopTabPageState extends State ))); widget() => MouseRegion( onEnter: (_) async { + // mouseIn = true; await shouldBeBlocked(_block, canBeBlocked); }, + onExit: (_) { + // mouseIn = false; + }, child: FocusScope(child: tabWidget, canRequestFocus: !_block.value)); return isMacOS || kUseCompatibleUiMode ? Obx(() => widget()) diff --git a/src/server/connection.rs b/src/server/connection.rs index 5fac698a1..cc43650e0 100644 --- a/src/server/connection.rs +++ b/src/server/connection.rs @@ -1999,6 +1999,8 @@ impl Connection { if is_enter(&me) { CLICK_TIME.store(get_time(), Ordering::SeqCst); } + // https://github.com/rustdesk/rustdesk/issues/8633 + MOUSE_MOVE_TIME.store(get_time(), Ordering::SeqCst); // handle all down as press // fix unexpected repeating key on remote linux, seems also fix abnormal alt/shift, which // make sure all key are released