diff --git a/flutter/lib/common.dart b/flutter/lib/common.dart index 7e09a8eb7..2ceee5262 100644 --- a/flutter/lib/common.dart +++ b/flutter/lib/common.dart @@ -3131,3 +3131,8 @@ Size getIncomingOnlyHomeSize() { Size getIncomingOnlySettingsSize() { return Size(768, 600); } + +bool isInHomePage() { + final controller = Get.find(); + return controller.state.value.selected == 0; +} diff --git a/flutter/lib/desktop/pages/desktop_home_page.dart b/flutter/lib/desktop/pages/desktop_home_page.dart index f47e90d9d..9ca609704 100644 --- a/flutter/lib/desktop/pages/desktop_home_page.dart +++ b/flutter/lib/desktop/pages/desktop_home_page.dart @@ -13,7 +13,6 @@ import 'package:flutter_hbb/desktop/pages/connection_page.dart'; import 'package:flutter_hbb/desktop/pages/desktop_setting_page.dart'; import 'package:flutter_hbb/desktop/pages/desktop_tab_page.dart'; import 'package:flutter_hbb/desktop/widgets/scroll_wrapper.dart'; -import 'package:flutter_hbb/desktop/widgets/tabbar_widget.dart'; import 'package:flutter_hbb/models/platform_model.dart'; import 'package:flutter_hbb/models/server_model.dart'; import 'package:flutter_hbb/plugin/ui_manager.dart'; @@ -56,11 +55,6 @@ class _DesktopHomePageState extends State final GlobalKey _childKey = GlobalKey(); - bool _isInHomePage() { - final controller = Get.find(); - return controller.state.value.selected == 0; - } - @override Widget build(BuildContext context) { super.build(context); @@ -152,7 +146,7 @@ class _DesktopHomePageState extends State builder: (_, data) { if (data.hasData) { if (isIncomingOnly) { - if (_isInHomePage()) { + if (isInHomePage()) { Future.delayed(Duration(milliseconds: 300), () { _updateWindowSize(); }); @@ -171,7 +165,7 @@ class _DesktopHomePageState extends State Divider(), OnlineStatusWidget( onSvcStatusChanged: () { - if (_isInHomePage()) { + if (isInHomePage()) { Future.delayed(Duration(milliseconds: 300), () { _updateWindowSize(); }); diff --git a/flutter/lib/desktop/widgets/tabbar_widget.dart b/flutter/lib/desktop/widgets/tabbar_widget.dart index df0ceca00..e6b622088 100644 --- a/flutter/lib/desktop/widgets/tabbar_widget.dart +++ b/flutter/lib/desktop/widgets/tabbar_widget.dart @@ -375,7 +375,8 @@ class DesktopTab extends StatelessWidget { Expanded( child: GestureDetector( // custom double tap handler - onTap: !bind.isIncomingOnly() && showMaximize + onTap: !(bind.isIncomingOnly() && isInHomePage()) && + showMaximize ? () { final current = DateTime.now().millisecondsSinceEpoch; final elapsed = current - _lastClickTime; @@ -691,7 +692,9 @@ class WindowActionPanelState extends State icon: stateGlobal.isMaximized.isTrue ? IconFont.restore : IconFont.max, - onTap: _toggleMaximize, + onTap: bind.isIncomingOnly() && isInHomePage() + ? null + : _toggleMaximize, isClose: false, ))), Offstage( @@ -1107,7 +1110,7 @@ class _CloseButton extends StatelessWidget { class ActionIcon extends StatefulWidget { final String? message; final IconData icon; - final Function() onTap; + final GestureTapCallback? onTap; final bool isClose; final double iconSize; final double boxSize; @@ -1116,7 +1119,7 @@ class ActionIcon extends StatefulWidget { {Key? key, this.message, required this.icon, - required this.onTap, + this.onTap, this.isClose = false, this.iconSize = _kActionIconSize, this.boxSize = _kTabBarHeight - 1}) @@ -1140,24 +1143,30 @@ class _ActionIconState extends State { return Tooltip( message: widget.message != null ? translate(widget.message!) : "", waitDuration: const Duration(seconds: 1), - child: Obx( - () => InkWell( - hoverColor: widget.isClose - ? const Color.fromARGB(255, 196, 43, 28) - : MyTheme.tabbar(context).hoverColor, - onHover: (value) => hover.value = value, - onTap: widget.onTap, - child: SizedBox( - height: widget.boxSize, - width: widget.boxSize, - child: Icon( - widget.icon, - color: hover.value && widget.isClose - ? Colors.white - : MyTheme.tabbar(context).unSelectedIconColor, - size: widget.iconSize, - ), - ), + child: InkWell( + hoverColor: widget.isClose + ? const Color.fromARGB(255, 196, 43, 28) + : MyTheme.tabbar(context).hoverColor, + onHover: (value) => hover.value = value, + onTap: widget.onTap, + child: SizedBox( + height: widget.boxSize, + width: widget.boxSize, + child: widget.onTap == null + ? Icon( + widget.icon, + color: Colors.grey, + size: widget.iconSize, + ) + : Obx( + () => Icon( + widget.icon, + color: hover.value && widget.isClose + ? Colors.white + : MyTheme.tabbar(context).unSelectedIconColor, + size: widget.iconSize, + ), + ), ), ), );