diff --git a/flutter/lib/desktop/pages/remote_page.dart b/flutter/lib/desktop/pages/remote_page.dart index 130a5e6ad..e66d84a35 100644 --- a/flutter/lib/desktop/pages/remote_page.dart +++ b/flutter/lib/desktop/pages/remote_page.dart @@ -157,6 +157,11 @@ class _RemotePageState extends State focusNode: _rawKeyFocusNode, onFocusChange: (bool v) { _imageFocused = v; + if (_imageFocused) { + _ffi.inputModel.enterOrLeave(true); + } else { + _ffi.inputModel.enterOrLeave(false); + } }, inputModel: _ffi.inputModel, child: getBodyForDesktop(context))); @@ -195,7 +200,6 @@ class _RemotePageState extends State // } } - _ffi.inputModel.enterOrLeave(true); } void leaveView(PointerExitEvent evt) { @@ -208,7 +212,6 @@ class _RemotePageState extends State // } } - _ffi.inputModel.enterOrLeave(false); } Widget getBodyForDesktop(BuildContext context) { diff --git a/flutter/lib/desktop/pages/remote_tab_page.dart b/flutter/lib/desktop/pages/remote_tab_page.dart index 713c3d13c..f7237af96 100644 --- a/flutter/lib/desktop/pages/remote_tab_page.dart +++ b/flutter/lib/desktop/pages/remote_tab_page.dart @@ -37,7 +37,8 @@ class ConnectionTabPage extends StatefulWidget { State createState() => _ConnectionTabPageState(params); } -class _ConnectionTabPageState extends State { +class _ConnectionTabPageState extends State + with MultiWindowListener { final tabController = Get.put(DesktopTabController( tabType: DesktopTabType.remoteScreen, onSelected: (_, id) => bind.setCurSessionId(id: id))); @@ -105,14 +106,26 @@ class _ConnectionTabPageState extends State { } _update_remote_count(); }); + DesktopMultiWindow.addListener(this); } @override void dispose() { super.dispose(); + DesktopMultiWindow.removeListener(this); _menubarState.save(); } + @override + void onWindowBlur() { + super.onWindowBlur(); + final state = tabController.state.value; + if (state.tabs.isNotEmpty) { + final sessionId = state.tabs[state.selected].key; + bind.sessionEnterOrLeave(id: sessionId, enter: false); + } + } + @override Widget build(BuildContext context) { final tabWidget = Obx(