From d4f1381a2687290fcaeb5c33dd44a01c1788be70 Mon Sep 17 00:00:00 2001 From: krille-chan Date: Wed, 21 May 2025 19:24:15 +0200 Subject: [PATCH] feat: Limit height of text messages and expand if selected --- lib/pages/chat/events/html_message.dart | 4 ++++ lib/pages/chat/events/message.dart | 1 + lib/pages/chat/events/message_content.dart | 3 +++ 3 files changed, 8 insertions(+) diff --git a/lib/pages/chat/events/html_message.dart b/lib/pages/chat/events/html_message.dart index 5e57b128c..4e6877735 100644 --- a/lib/pages/chat/events/html_message.dart +++ b/lib/pages/chat/events/html_message.dart @@ -23,6 +23,7 @@ class HtmlMessage extends StatelessWidget { final void Function(LinkableElement) onOpen; final String? eventId; final Set? checkboxCheckedEvents; + final bool limitHeight; const HtmlMessage({ super.key, @@ -34,6 +35,7 @@ class HtmlMessage extends StatelessWidget { required this.onOpen, this.eventId, this.checkboxCheckedEvents, + this.limitHeight = true, }); /// Keep in sync with: https://spec.matrix.org/latest/client-server-api/#mroommessage-msgtypes @@ -513,6 +515,8 @@ class HtmlMessage extends StatelessWidget { fontSize: fontSize, color: textColor, ), + maxLines: limitHeight ? 64 : null, + overflow: TextOverflow.fade, ); } } diff --git a/lib/pages/chat/events/message.dart b/lib/pages/chat/events/message.dart index f86ab5894..4be9de869 100644 --- a/lib/pages/chat/events/message.dart +++ b/lib/pages/chat/events/message.dart @@ -418,6 +418,7 @@ class Message extends StatelessWidget { onInfoTab: onInfoTab, borderRadius: borderRadius, timeline: timeline, + selected: selected, ), if (event.hasAggregatedEvents( timeline, diff --git a/lib/pages/chat/events/message_content.dart b/lib/pages/chat/events/message_content.dart index 7604fb113..76e536ee8 100644 --- a/lib/pages/chat/events/message_content.dart +++ b/lib/pages/chat/events/message_content.dart @@ -30,6 +30,7 @@ class MessageContent extends StatelessWidget { final void Function(Event)? onInfoTab; final BorderRadius borderRadius; final Timeline timeline; + final bool selected; const MessageContent( this.event, { @@ -39,6 +40,7 @@ class MessageContent extends StatelessWidget { required this.textColor, required this.linkColor, required this.borderRadius, + required this.selected, }); void _verifyOrRequestKey(BuildContext context) async { @@ -269,6 +271,7 @@ class MessageContent extends StatelessWidget { textColor: textColor, room: event.room, fontSize: AppConfig.fontSizeFactor * AppConfig.messageFontSize, + limitHeight: !selected, linkStyle: TextStyle( color: linkColor, fontSize: