From ea692da571924d206a0149d10b74cce2dfca85dd Mon Sep 17 00:00:00 2001 From: Patrick Britton Date: Sun, 8 Feb 2026 15:04:08 -0600 Subject: [PATCH] fix: RadialMenuOverlay gesture-eating bug IgnorePointer when not visible + status listener to trigger rebuild on dismiss --- sojorn_app/lib/widgets/radial_menu_overlay.dart | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/sojorn_app/lib/widgets/radial_menu_overlay.dart b/sojorn_app/lib/widgets/radial_menu_overlay.dart index f8773d9..275c31e 100644 --- a/sojorn_app/lib/widgets/radial_menu_overlay.dart +++ b/sojorn_app/lib/widgets/radial_menu_overlay.dart @@ -37,6 +37,13 @@ class _RadialMenuOverlayState extends State vsync: this, ); + // Rebuild when animation dismisses so the SizedBox.shrink check fires + _controller.addStatusListener((status) { + if (status == AnimationStatus.dismissed && mounted) { + setState(() {}); + } + }); + _scaleAnimation = CurvedAnimation( parent: _controller, curve: Curves.easeOutBack, @@ -72,9 +79,11 @@ class _RadialMenuOverlayState extends State return const SizedBox.shrink(); } - return GestureDetector( - onTap: widget.onDismiss, - child: AnimatedBuilder( + return IgnorePointer( + ignoring: !widget.isVisible, + child: GestureDetector( + onTap: widget.onDismiss, + child: AnimatedBuilder( animation: _controller, builder: (context, child) { return Stack( @@ -102,6 +111,7 @@ class _RadialMenuOverlayState extends State ); }, ), + ), ); }