diff --git a/flutter/lib/common.dart b/flutter/lib/common.dart index 938be7888..6c3716f53 100644 --- a/flutter/lib/common.dart +++ b/flutter/lib/common.dart @@ -219,6 +219,13 @@ class MyTheme { ), ); + //tooltip + static TooltipThemeData tooltipTheme() { + return TooltipThemeData( + waitDuration: Duration(seconds: 1, milliseconds: 500), + ); + } + // Dialogs static const double dialogPadding = 24; @@ -288,6 +295,7 @@ class MyTheme { tabBarTheme: const TabBarTheme( labelColor: Colors.black87, ), + tooltipTheme: tooltipTheme(), splashColor: isDesktop ? Colors.transparent : null, highlightColor: isDesktop ? Colors.transparent : null, splashFactory: isDesktop ? NoSplash.splashFactory : null, @@ -377,6 +385,7 @@ class MyTheme { scrollbarTheme: ScrollbarThemeData( thumbColor: MaterialStateProperty.all(Colors.grey[500]), ), + tooltipTheme: tooltipTheme(), splashColor: isDesktop ? Colors.transparent : null, highlightColor: isDesktop ? Colors.transparent : null, splashFactory: isDesktop ? NoSplash.splashFactory : null, diff --git a/flutter/lib/desktop/widgets/remote_toolbar.dart b/flutter/lib/desktop/widgets/remote_toolbar.dart index d049804e2..9cbcbf658 100644 --- a/flutter/lib/desktop/widgets/remote_toolbar.dart +++ b/flutter/lib/desktop/widgets/remote_toolbar.dart @@ -1546,7 +1546,7 @@ class _CloseMenu extends StatelessWidget { class _IconMenuButton extends StatefulWidget { final String? assetName; final Widget? icon; - final String? tooltip; + final String tooltip; final Color color; final Color hoverColor; final VoidCallback? onPressed; @@ -1557,7 +1557,7 @@ class _IconMenuButton extends StatefulWidget { Key? key, this.assetName, this.icon, - this.tooltip, + required this.tooltip, required this.color, required this.hoverColor, required this.onPressed, @@ -1595,14 +1595,17 @@ class _IconMenuButtonState extends State<_IconMenuButton> { hover = value; }), onPressed: widget.onPressed, - child: Material( - type: MaterialType.transparency, - child: Ink( - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(_ToolbarTheme.iconRadius), - color: hover ? widget.hoverColor : widget.color, - ), - child: icon)), + child: Tooltip( + message: translate(widget.tooltip), + child: Material( + type: MaterialType.transparency, + child: Ink( + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(_ToolbarTheme.iconRadius), + color: hover ? widget.hoverColor : widget.color, + ), + child: icon)), + ) ), ).marginSymmetric( horizontal: widget.hMargin ?? _ToolbarTheme.buttonHMargin, @@ -1669,15 +1672,18 @@ class _IconSubmenuButtonState extends State<_IconSubmenuButton> { onHover: (value) => setState(() { hover = value; }), - child: Material( - type: MaterialType.transparency, - child: Ink( - decoration: BoxDecoration( - borderRadius: + child: Tooltip( + message: translate(widget.tooltip), + child: Material( + type: MaterialType.transparency, + child: Ink( + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(_ToolbarTheme.iconRadius), - color: hover ? widget.hoverColor : widget.color, + color: hover ? widget.hoverColor : widget.color, + ), + child: icon)) ), - child: icon)), menuChildren: widget.menuChildren .map((e) => _buildPointerTrackWidget(e, widget.ffi)) .toList())); @@ -2003,6 +2009,7 @@ class _MultiMonitorMenu extends StatelessWidget { Obx(() { RxInt display = CurrentDisplayState.find(id); return _IconMenuButton( + tooltip: "", topLevel: false, color: i == display.value ? _ToolbarTheme.blueColor