some fixes for sizing

pull/1011/head
Gabby Gurdin 2 years ago
parent 6af9a7540d
commit 0bb202b9a3

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

@ -18,7 +18,6 @@ import 'package:matrix/matrix.dart';
enum MessageMode { translation, play, definition }
class ToolbarDisplayController {
final FocusNode focusNode = FocusNode();
final PangeaMessageEvent pangeaMessageEvent;
final String targetId;
final bool immersionMode;
@ -46,14 +45,6 @@ class ToolbarDisplayController {
immersionMode: immersionMode,
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}) {
@ -61,7 +52,18 @@ class ToolbarDisplayController {
if (controller.selectMode) {
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;
try {
overlayEntry = Column(
@ -162,8 +164,8 @@ class MessageToolbarState extends State<MessageToolbar> {
case MessageMode.play:
return true;
case MessageMode.definition:
// return widget.textSelection.selectedText != null;
return true;
return widget.textSelection.selectedText != null;
// return true;
default:
return false;
}

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

Loading…
Cancel
Save