From 816f1f1367465941b924e92a5219da880df406a3 Mon Sep 17 00:00:00 2001 From: X Code Date: Mon, 31 Jan 2022 10:09:36 -0800 Subject: [PATCH] Update set textEditingValue --- .../raw_editor_state_selection_delegate_mixin.dart | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/lib/src/widgets/raw_editor/raw_editor_state_selection_delegate_mixin.dart b/lib/src/widgets/raw_editor/raw_editor_state_selection_delegate_mixin.dart index 0b4904ff..988a0da1 100644 --- a/lib/src/widgets/raw_editor/raw_editor_state_selection_delegate_mixin.dart +++ b/lib/src/widgets/raw_editor/raw_editor_state_selection_delegate_mixin.dart @@ -3,6 +3,7 @@ import 'dart:math' as math; import 'package:flutter/rendering.dart'; import 'package:flutter/widgets.dart'; +import '../../models/documents/document.dart'; import '../../models/documents/nodes/leaf.dart'; import '../../utils/delta.dart'; import '../editor.dart'; @@ -20,13 +21,23 @@ mixin RawEditorStateSelectionDelegateMixin on EditorState final oldText = widget.controller.document.toPlainText(); final newText = value.text; final diff = getDiff(oldText, newText, cursorPosition); + if (diff.deleted == '' && diff.inserted == '') { + // Only changing selection range + widget.controller.updateSelection(value.selection, ChangeSource.LOCAL); + return; + } + final insertedText = _adjustInsertedText(diff.inserted); widget.controller.replaceText( diff.start, diff.deleted.length, insertedText, value.selection); + _applyPasteStyle(insertedText, diff.start); + } + + void _applyPasteStyle(String insertedText, int start) { if (insertedText == pastePlainText && pastePlainText != '') { - final pos = diff.start; + final pos = start; for (var i = 0; i < pasteStyle.length; i++) { final offset = pasteStyle[i].item1; final style = pasteStyle[i].item2;