some fixes for sizing
This commit is contained in:
parent
6af9a7540d
commit
0bb202b9a3
3 changed files with 48 additions and 40 deletions
|
|
@ -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…
Add table
Reference in a new issue