From 648b25a25276db367387029ce764cd707066a09a Mon Sep 17 00:00:00 2001 From: Gabby Gurdin Date: Sat, 10 Feb 2024 10:44:58 -0500 Subject: [PATCH] fix for long press selecting messages --- lib/pages/chat/events/message.dart | 16 ++++++---------- lib/pages/chat/events/message_content.dart | 16 +++++++++++++--- lib/pangea/widgets/igc/pangea_rich_text.dart | 14 +++++++++++--- 3 files changed, 30 insertions(+), 16 deletions(-) diff --git a/lib/pages/chat/events/message.dart b/lib/pages/chat/events/message.dart index 971e85a58..20574ac2d 100644 --- a/lib/pages/chat/events/message.dart +++ b/lib/pages/chat/events/message.dart @@ -246,17 +246,13 @@ class Message extends StatelessWidget { onTap: () => toolbarController?.showToolbar(context), onDoubleTap: () => toolbarController?.showToolbar(context), - onLongPress: () { - onSelect(event); - HapticFeedback.selectionClick(); - }, - // onLongPress: longPressSelect - // ? null - // : () { - // onSelect(event); - // HapticFeedback.selectionClick(); - // }, // Pangea# + onLongPress: longPressSelect + ? null + : () { + onSelect(event); + HapticFeedback.selectionClick(); + }, child: AnimatedOpacity( opacity: animateIn ? 0 diff --git a/lib/pages/chat/events/message_content.dart b/lib/pages/chat/events/message_content.dart index c772d3582..def3b2975 100644 --- a/lib/pages/chat/events/message_content.dart +++ b/lib/pages/chat/events/message_content.dart @@ -303,9 +303,19 @@ class MessageContent extends StatelessWidget { messageText, ); return SelectableLinkify( - onSelectionChanged: (selection, cause) => toolbarController - ?.toolbar?.textSelection - .onTextSelection(selection), + onSelectionChanged: (selection, cause) { + if (cause == SelectionChangedCause.longPress && + toolbarController != null && + pangeaMessageEvent != null && + !(toolbarController!.highlighted)) { + toolbarController!.controller.onSelectMessage( + pangeaMessageEvent!.event, + ); + return; + } + toolbarController?.toolbar?.textSelection + .onTextSelection(selection); + }, onTap: () => toolbarController?.showToolbar(context), text: toolbarController?.toolbar?.textSelection.messageText ?? messageText, diff --git a/lib/pangea/widgets/igc/pangea_rich_text.dart b/lib/pangea/widgets/igc/pangea_rich_text.dart index d0a7ed11e..68deabcb0 100644 --- a/lib/pangea/widgets/igc/pangea_rich_text.dart +++ b/lib/pangea/widgets/igc/pangea_rich_text.dart @@ -95,9 +95,17 @@ class PangeaRichTextState extends State { Widget build(BuildContext context) { //TODO - take out of build function of every message final Widget richText = SelectableText.rich( - onSelectionChanged: (selection, cause) => widget - .toolbarController.toolbar?.textSelection - .onTextSelection(selection), + onSelectionChanged: (selection, cause) { + if (cause == SelectionChangedCause.longPress && + !widget.toolbarController.highlighted) { + widget.toolbarController.controller.onSelectMessage( + widget.pangeaMessageEvent.event, + ); + return; + } + widget.toolbarController.toolbar?.textSelection + .onTextSelection(selection); + }, onTap: () => widget.toolbarController.showToolbar(context), focusNode: widget.toolbarController.focusNode, contextMenuBuilder: (context, state) =>