From 3e45420fe372222ba0431f42f1b3cfacb9d65315 Mon Sep 17 00:00:00 2001 From: krzysztof-swi <72507754+krzysztof-swi@users.noreply.github.com> Date: Fri, 3 Feb 2023 10:07:13 +0100 Subject: [PATCH] Fixed a layout of overflowWidget in RTL language (should be displayed bottom left instead of bottom right) --- lib/src/text_overflow_render_mixin.dart | 38 +++++++++++++++++-------- 1 file changed, 26 insertions(+), 12 deletions(-) diff --git a/lib/src/text_overflow_render_mixin.dart b/lib/src/text_overflow_render_mixin.dart index 073c6ad..47f8118 100644 --- a/lib/src/text_overflow_render_mixin.dart +++ b/lib/src/text_overflow_render_mixin.dart @@ -75,20 +75,34 @@ mixin TextOverflowMixin on ExtendedTextSelectionRenderObject { overflowWidget!.position; final int maxOffset = text!.toPlainText().runes.length; if (textOverflowPosition == TextOverflowPosition.end) { - final TextSelection overflowSelection = TextSelection( - baseOffset: textPainter - .getPositionForOffset(rect.bottomRight - - Offset( - overflowWidgetSize.width, overflowWidgetSize.height / 2)) - .offset, - extentOffset: - textPainter.getPositionForOffset(rect.bottomRight).offset, - ); + TextSelection overflowSelection; + if (textDirection == TextDirection.ltr) { + overflowSelection = TextSelection( + baseOffset: textPainter + .getPositionForOffset(rect.bottomRight - + Offset( + overflowWidgetSize.width, overflowWidgetSize.height / 2)) + .offset, + extentOffset: textPainter.getPositionForOffset(rect.bottomRight).offset, + ); - textParentData.offset = rect.bottomRight - - Offset(overflowWidgetSize.width, overflowWidgetSize.height); + textParentData.offset = rect.bottomRight - + Offset(overflowWidgetSize.width, overflowWidgetSize.height); + } else { + overflowSelection = TextSelection( + baseOffset: textPainter + .getPositionForOffset(rect.bottomLeft - + Offset(0, overflowWidgetSize.height / 2)) + .offset, + extentOffset: textPainter.getPositionForOffset(rect.bottomLeft + + Offset(overflowWidgetSize.width, 0)).offset, + ); - _setOverflowRect( + textParentData.offset = rect.bottomLeft - + Offset(0, overflowWidgetSize.height); + } + + _setOverflowRect( overflowSelection, overflowWidgetSize, textParentData,