@@ -3,6 +3,7 @@ import 'dart:math' as math;
33import 'package:flutter/rendering.dart' ;
44import 'package:flutter/widgets.dart' ;
55
6+ import '../../models/documents/document.dart' ;
67import '../../models/documents/nodes/leaf.dart' ;
78import '../../utils/delta.dart' ;
89import '../editor.dart' ;
@@ -20,13 +21,23 @@ mixin RawEditorStateSelectionDelegateMixin on EditorState
2021 final oldText = widget.controller.document.toPlainText ();
2122 final newText = value.text;
2223 final diff = getDiff (oldText, newText, cursorPosition);
24+ if (diff.deleted == '' && diff.inserted == '' ) {
25+ // Only changing selection range
26+ widget.controller.updateSelection (value.selection, ChangeSource .LOCAL );
27+ return ;
28+ }
29+
2330 final insertedText = _adjustInsertedText (diff.inserted);
2431
2532 widget.controller.replaceText (
2633 diff.start, diff.deleted.length, insertedText, value.selection);
2734
35+ _applyPasteStyle (insertedText, diff.start);
36+ }
37+
38+ void _applyPasteStyle (String insertedText, int start) {
2839 if (insertedText == pastePlainText && pastePlainText != '' ) {
29- final pos = diff. start;
40+ final pos = start;
3041 for (var i = 0 ; i < pasteStyle.length; i++ ) {
3142 final offset = pasteStyle[i].item1;
3243 final style = pasteStyle[i].item2;
0 commit comments