From 1a631b8cdaa5a4472279995b9260ad86361f602d Mon Sep 17 00:00:00 2001 From: cyberpwn Date: Thu, 7 Nov 2024 16:18:20 -0500 Subject: [PATCH 1/2] Support enabled property on context menu If its disabled it will just return the child --- lib/src/components/menu/context_menu.dart | 41 ++++++++++++----------- 1 file changed, 22 insertions(+), 19 deletions(-) diff --git a/lib/src/components/menu/context_menu.dart b/lib/src/components/menu/context_menu.dart index cc8ee05d..d19e98be 100644 --- a/lib/src/components/menu/context_menu.dart +++ b/lib/src/components/menu/context_menu.dart @@ -408,14 +408,15 @@ class ContextMenu extends StatefulWidget { final List items; final HitTestBehavior behavior; final Axis direction; + final bool enabled; - const ContextMenu({ - super.key, - required this.child, - required this.items, - this.behavior = HitTestBehavior.translucent, - this.direction = Axis.vertical, - }); + const ContextMenu( + {super.key, + required this.child, + required this.items, + this.behavior = HitTestBehavior.translucent, + this.direction = Axis.vertical, + this.enabled = true}); @override State createState() => _ContextMenuState(); @@ -452,20 +453,22 @@ class _ContextMenuState extends State { final bool enableLongPress = platform == TargetPlatform.iOS || platform == TargetPlatform.android || platform == TargetPlatform.fuchsia; - return GestureDetector( - behavior: widget.behavior, - onSecondaryTapDown: (details) { - _showContextMenu( - context, details.globalPosition, _children, widget.direction); - }, - onLongPressStart: enableLongPress - ? (details) { + return widget.enabled + ? GestureDetector( + behavior: widget.behavior, + onSecondaryTapDown: (details) { _showContextMenu( context, details.globalPosition, _children, widget.direction); - } - : null, - child: widget.child, - ); + }, + onLongPressStart: enableLongPress + ? (details) { + _showContextMenu(context, details.globalPosition, _children, + widget.direction); + } + : null, + child: widget.child, + ) + : widget.child; } } From 89cd69f2a08c47f1a97af3b08406f9ae70fef517 Mon Sep 17 00:00:00 2001 From: cyberpwn Date: Fri, 8 Nov 2024 01:07:19 -0500 Subject: [PATCH 2/2] Prevent tree changes when changing enabled --- lib/src/components/menu/context_menu.dart | 26 +++++++++++------------ 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/lib/src/components/menu/context_menu.dart b/lib/src/components/menu/context_menu.dart index d19e98be..68405bc4 100644 --- a/lib/src/components/menu/context_menu.dart +++ b/lib/src/components/menu/context_menu.dart @@ -453,22 +453,22 @@ class _ContextMenuState extends State { final bool enableLongPress = platform == TargetPlatform.iOS || platform == TargetPlatform.android || platform == TargetPlatform.fuchsia; - return widget.enabled - ? GestureDetector( - behavior: widget.behavior, - onSecondaryTapDown: (details) { + return GestureDetector( + behavior: widget.behavior, + onSecondaryTapDown: !widget.enabled + ? null + : (details) { _showContextMenu( context, details.globalPosition, _children, widget.direction); }, - onLongPressStart: enableLongPress - ? (details) { - _showContextMenu(context, details.globalPosition, _children, - widget.direction); - } - : null, - child: widget.child, - ) - : widget.child; + onLongPressStart: enableLongPress && widget.enabled + ? (details) { + _showContextMenu( + context, details.globalPosition, _children, widget.direction); + } + : null, + child: widget.child, + ); } }