From eb77ad791d042af2dd6729eb8b15d2feff1d2308 Mon Sep 17 00:00:00 2001 From: klockky Date: Sat, 23 May 2026 05:32:38 +0000 Subject: [PATCH] =?UTF-8?q?fix:=20=D0=BB=D0=BE=D0=B2=D0=B8=D0=BC=20pointer?= =?UTF-8?q?=20=D1=81=D0=BE=D0=B1=D1=8B=D1=82=D0=B8=D1=8F=20=D1=87=D0=B5?= =?UTF-8?q?=D1=80=D0=B5=D0=B7=20Listener=20=D0=B2=D0=BC=D0=B5=D1=81=D1=82?= =?UTF-8?q?=D0=BE=20onLongPressMoveUpdate=20(route=20=D0=B3=D0=BB=D0=BE?= =?UTF-8?q?=D1=82=D0=B0=D0=BB=20events)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/frontend/screens/chats/chat_screen.dart | 33 ++++++++++--------- .../widgets/message_actions_overlay.dart | 3 ++ 2 files changed, 21 insertions(+), 15 deletions(-) diff --git a/lib/frontend/screens/chats/chat_screen.dart b/lib/frontend/screens/chats/chat_screen.dart index 01be3b8..216c7c9 100644 --- a/lib/frontend/screens/chats/chat_screen.dart +++ b/lib/frontend/screens/chats/chat_screen.dart @@ -1734,6 +1734,7 @@ class _LongPressBubbleState extends State<_LongPressBubble> { Haptics.medium(); final controller = MessageActionsController(); + controller.updatePointer(details.globalPosition); _controller = controller; Navigator.of(ctx) @@ -1755,24 +1756,26 @@ class _LongPressBubbleState extends State<_LongPressBubble> { }); } - void _onLongPressMoveUpdate(LongPressMoveUpdateDetails details) { - _controller?.updatePointer(details.globalPosition); - } - - void _onLongPressEnd(LongPressEndDetails details) { - _controller?.commit(); - } - @override Widget build(BuildContext context) { - return GestureDetector( + return Listener( behavior: HitTestBehavior.deferToChild, - onLongPressStart: _onLongPressStart, - onLongPressMoveUpdate: _onLongPressMoveUpdate, - onLongPressEnd: _onLongPressEnd, - child: RepaintBoundary( - key: _boundaryKey, - child: widget.child, + onPointerMove: (event) { + _controller?.updatePointer(event.position); + }, + onPointerUp: (event) { + _controller?.commit(); + }, + onPointerCancel: (event) { + _controller?.commit(); + }, + child: GestureDetector( + behavior: HitTestBehavior.deferToChild, + onLongPressStart: _onLongPressStart, + child: RepaintBoundary( + key: _boundaryKey, + child: widget.child, + ), ), ); } diff --git a/lib/frontend/widgets/message_actions_overlay.dart b/lib/frontend/widgets/message_actions_overlay.dart index 83df990..c3e7b66 100644 --- a/lib/frontend/widgets/message_actions_overlay.dart +++ b/lib/frontend/widgets/message_actions_overlay.dart @@ -115,6 +115,9 @@ class _MessageActionsLayerState extends State<_MessageActionsLayer> { : Offset(widget.tapPoint.dx, widget.originRect.top - 16); _buttonCenters = _computeButtonCenters(screenSize); widget.controller.addListener(_onControllerUpdate); + WidgetsBinding.instance.addPostFrameCallback((_) { + if (mounted) _onControllerUpdate(); + }); } @override