|
|
|
|
@ -2,6 +2,7 @@ import 'package:fluffychat/config/themes.dart';
|
|
|
|
|
import 'package:fluffychat/pages/chat/chat.dart';
|
|
|
|
|
import 'package:fluffychat/pangea/matrix_event_wrappers/pangea_message_event.dart';
|
|
|
|
|
import 'package:fluffychat/pangea/utils/any_state_holder.dart';
|
|
|
|
|
import 'package:fluffychat/pangea/utils/error_handler.dart';
|
|
|
|
|
import 'package:fluffychat/pangea/widgets/chat/message_toolbar.dart';
|
|
|
|
|
import 'package:fluffychat/pangea/widgets/chat/overlay_footer.dart';
|
|
|
|
|
import 'package:fluffychat/pangea/widgets/chat/overlay_header.dart';
|
|
|
|
|
@ -56,18 +57,21 @@ class MessageSelectionOverlay extends StatelessWidget {
|
|
|
|
|
final double stackSize =
|
|
|
|
|
MediaQuery.of(context).size.height - footerSize - headerSize;
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
if (targetRenderBox != null) {
|
|
|
|
|
final Size transformTargetSize = (targetRenderBox as RenderBox).size;
|
|
|
|
|
final Offset targetOffset = (targetRenderBox).localToGlobal(Offset.zero);
|
|
|
|
|
final Offset targetOffset =
|
|
|
|
|
(targetRenderBox).localToGlobal(Offset.zero);
|
|
|
|
|
if (ownMessage) {
|
|
|
|
|
right = MediaQuery.of(context).size.width -
|
|
|
|
|
targetOffset.dx -
|
|
|
|
|
transformTargetSize.width;
|
|
|
|
|
} else {
|
|
|
|
|
left = targetOffset.dx - (FluffyThemes.isColumnMode(context) ? 425 : 1);
|
|
|
|
|
left =
|
|
|
|
|
targetOffset.dx - (FluffyThemes.isColumnMode(context) ? 425 : 1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
showDown = targetOffset.dy + transformTargetSize.height <=
|
|
|
|
|
showDown = targetOffset.dy + transformTargetSize.height / 2 <=
|
|
|
|
|
headerSize + stackSize / 2;
|
|
|
|
|
|
|
|
|
|
center = targetOffset.dy -
|
|
|
|
|
@ -91,7 +95,7 @@ class MessageSelectionOverlay extends StatelessWidget {
|
|
|
|
|
}
|
|
|
|
|
// If message is not too long, but too close
|
|
|
|
|
// to center of screen, scroll closer to edges
|
|
|
|
|
if (targetOffset.dy + transformTargetSize.height > midpoint - 30 &&
|
|
|
|
|
else if (targetOffset.dy + transformTargetSize.height > midpoint - 30 &&
|
|
|
|
|
targetOffset.dy < midpoint + 30) {
|
|
|
|
|
final double scrollUp = midpoint + 30 - targetOffset.dy;
|
|
|
|
|
final double scrollDown =
|
|
|
|
|
@ -131,6 +135,12 @@ class MessageSelectionOverlay extends StatelessWidget {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} catch (err) {
|
|
|
|
|
MatrixState.pAnyState.closeAllOverlays();
|
|
|
|
|
ErrorHandler.logError(e: err, s: StackTrace.current);
|
|
|
|
|
// throw L10n.of(context)!.toolbarError;
|
|
|
|
|
return const SizedBox();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
final Widget overlayMessage = OverlayMessage(
|
|
|
|
|
pangeaMessageEvent.event,
|
|
|
|
|
@ -142,11 +152,7 @@ class MessageSelectionOverlay extends StatelessWidget {
|
|
|
|
|
showDown: showDown,
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
return Container(
|
|
|
|
|
constraints: BoxConstraints(
|
|
|
|
|
maxWidth: MediaQuery.of(context).size.width -
|
|
|
|
|
(FluffyThemes.isColumnMode(context) ? 425 : 0),
|
|
|
|
|
),
|
|
|
|
|
return Expanded(
|
|
|
|
|
child: Column(
|
|
|
|
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
|
|
|
|
mainAxisSize: MainAxisSize.max,
|
|
|
|
|
|