Merge pull request #59 from pangeachat/toolbar-testing

some fixes for sizing
pull/1011/head
ggurdin 2 years ago committed by GitHub
commit b865e629a7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -307,7 +307,8 @@ class MessageContent extends StatelessWidget {
if (cause == SelectionChangedCause.longPress && if (cause == SelectionChangedCause.longPress &&
toolbarController != null && toolbarController != null &&
pangeaMessageEvent != null && pangeaMessageEvent != null &&
!(toolbarController!.highlighted)) { !(toolbarController!.highlighted) &&
!selected) {
toolbarController!.controller.onSelectMessage( toolbarController!.controller.onSelectMessage(
pangeaMessageEvent!.event, pangeaMessageEvent!.event,
); );
@ -319,20 +320,21 @@ class MessageContent extends StatelessWidget {
onTap: () => toolbarController?.showToolbar(context), onTap: () => toolbarController?.showToolbar(context),
text: toolbarController?.toolbar?.textSelection.messageText ?? text: toolbarController?.toolbar?.textSelection.messageText ??
messageText, messageText,
focusNode: toolbarController?.focusNode,
contextMenuBuilder: (context, state) => contextMenuBuilder: (context, state) =>
MessageContextMenu.contextMenuOverride( (toolbarController?.highlighted ?? false)
context: context, ? const SizedBox.shrink()
textSelection: state, : MessageContextMenu.contextMenuOverride(
onDefine: () => toolbarController?.showToolbar( context: context,
context, textSelection: state,
mode: MessageMode.definition, onDefine: () => toolbarController?.showToolbar(
), context,
onListen: () => toolbarController?.showToolbar( mode: MessageMode.definition,
context, ),
mode: MessageMode.play, onListen: () => toolbarController?.showToolbar(
), context,
), mode: MessageMode.play,
),
),
// text: snapshot.data ?? // text: snapshot.data ??
// event.calcLocalizedBodyFallback( // event.calcLocalizedBodyFallback(
// MatrixLocals(L10n.of(context)!), // MatrixLocals(L10n.of(context)!),

@ -18,7 +18,6 @@ import 'package:matrix/matrix.dart';
enum MessageMode { translation, play, definition } enum MessageMode { translation, play, definition }
class ToolbarDisplayController { class ToolbarDisplayController {
final FocusNode focusNode = FocusNode();
final PangeaMessageEvent pangeaMessageEvent; final PangeaMessageEvent pangeaMessageEvent;
final String targetId; final String targetId;
final bool immersionMode; final bool immersionMode;
@ -46,14 +45,6 @@ class ToolbarDisplayController {
immersionMode: immersionMode, immersionMode: immersionMode,
controller: controller, controller: controller,
); );
final LayerLinkAndKey layerLinkAndKey =
MatrixState.pAnyState.layerLinkAndKey(targetId);
final targetRenderBox =
layerLinkAndKey.key.currentContext?.findRenderObject();
if (targetRenderBox == null) return;
final Size transformTargetSize = (targetRenderBox as RenderBox).size;
messageWidth = transformTargetSize.width;
} }
void showToolbar(BuildContext context, {MessageMode? mode}) { void showToolbar(BuildContext context, {MessageMode? mode}) {
@ -61,7 +52,18 @@ class ToolbarDisplayController {
if (controller.selectMode) { if (controller.selectMode) {
controller.clearSelectedEvents(); controller.clearSelectedEvents();
} }
focusNode.unfocus(); // focusNode.unfocus();
FocusScope.of(context).unfocus();
final LayerLinkAndKey layerLinkAndKey =
MatrixState.pAnyState.layerLinkAndKey(targetId);
final targetRenderBox =
layerLinkAndKey.key.currentContext?.findRenderObject();
if (targetRenderBox != null) {
final Size transformTargetSize = (targetRenderBox as RenderBox).size;
messageWidth = transformTargetSize.width;
}
Widget overlayEntry; Widget overlayEntry;
try { try {
overlayEntry = Column( overlayEntry = Column(
@ -162,8 +164,8 @@ class MessageToolbarState extends State<MessageToolbar> {
case MessageMode.play: case MessageMode.play:
return true; return true;
case MessageMode.definition: case MessageMode.definition:
// return widget.textSelection.selectedText != null; return widget.textSelection.selectedText != null;
return true; // return true;
default: default:
return false; return false;
} }

@ -97,7 +97,10 @@ class PangeaRichTextState extends State<PangeaRichText> {
final Widget richText = SelectableText.rich( final Widget richText = SelectableText.rich(
onSelectionChanged: (selection, cause) { onSelectionChanged: (selection, cause) {
if (cause == SelectionChangedCause.longPress && if (cause == SelectionChangedCause.longPress &&
!widget.toolbarController.highlighted) { !widget.toolbarController.highlighted &&
!widget.toolbarController.controller.selectedEvents.any(
(e) => e.eventId == widget.pangeaMessageEvent.eventId,
)) {
widget.toolbarController.controller.onSelectMessage( widget.toolbarController.controller.onSelectMessage(
widget.pangeaMessageEvent.event, widget.pangeaMessageEvent.event,
); );
@ -107,20 +110,21 @@ class PangeaRichTextState extends State<PangeaRichText> {
.onTextSelection(selection); .onTextSelection(selection);
}, },
onTap: () => widget.toolbarController.showToolbar(context), onTap: () => widget.toolbarController.showToolbar(context),
focusNode: widget.toolbarController.focusNode,
contextMenuBuilder: (context, state) => contextMenuBuilder: (context, state) =>
MessageContextMenu.contextMenuOverride( widget.toolbarController.highlighted
context: context, ? const SizedBox.shrink()
textSelection: state, : MessageContextMenu.contextMenuOverride(
onDefine: () => widget.toolbarController.showToolbar( context: context,
context, textSelection: state,
mode: MessageMode.definition, onDefine: () => widget.toolbarController.showToolbar(
), context,
onListen: () => widget.toolbarController.showToolbar( mode: MessageMode.definition,
context, ),
mode: MessageMode.play, onListen: () => widget.toolbarController.showToolbar(
), context,
), mode: MessageMode.play,
),
),
TextSpan( TextSpan(
text: textSpan, text: textSpan,
style: widget.style, style: widget.style,

Loading…
Cancel
Save