diff --git a/lib/src/editor/editor.dart b/lib/src/editor/editor.dart index f1b23db34..ee90591ec 100644 --- a/lib/src/editor/editor.dart +++ b/lib/src/editor/editor.dart @@ -984,19 +984,21 @@ class RenderEditor extends RenderEditableContainerBox if (position.offset < _extendSelectionOrigin!.baseOffset) { _handleSelectionChange( - TextSelection( + DragTextSelection( baseOffset: position.offset, extentOffset: _extendSelectionOrigin!.extentOffset, affinity: selection.affinity, + first: true, ), cause, ); } else if (position.offset > _extendSelectionOrigin!.extentOffset) { _handleSelectionChange( - TextSelection( + DragTextSelection( baseOffset: _extendSelectionOrigin!.baseOffset, extentOffset: position.offset, affinity: selection.affinity, + first: false, ), cause, ); @@ -1055,10 +1057,11 @@ class RenderEditor extends RenderEditableContainerBox extentOffset = math.max(fromPosition.offset, toPosition.offset); } - final newSelection = TextSelection( + final newSelection = DragTextSelection( baseOffset: baseOffset, extentOffset: extentOffset, affinity: fromPosition.affinity, + first: toPosition == null || fromPosition.offset <= toPosition.offset, ); // Call [onSelectionChanged] only when the selection actually changed. diff --git a/lib/src/editor/widgets/text/text_selection.dart b/lib/src/editor/widgets/text/text_selection.dart index 75517e486..fd8c48594 100644 --- a/lib/src/editor/widgets/text/text_selection.dart +++ b/lib/src/editor/widgets/text/text_selection.dart @@ -498,22 +498,24 @@ class _TextSelectionHandleOverlayState final isNormalized = widget.selection.extentOffset >= widget.selection.baseOffset; - TextSelection newSelection; + DragTextSelection newSelection; switch (widget.position) { case _TextSelectionHandlePosition.start: - newSelection = TextSelection( + newSelection = DragTextSelection( baseOffset: isNormalized ? position.offset : widget.selection.baseOffset, extentOffset: isNormalized ? widget.selection.extentOffset : position.offset, + first: true, ); break; case _TextSelectionHandlePosition.end: - newSelection = TextSelection( + newSelection = DragTextSelection( baseOffset: isNormalized ? widget.selection.baseOffset : position.offset, extentOffset: isNormalized ? position.offset : widget.selection.extentOffset, + first: false, ); break; }