From d23e161d1fd2027be0f2f4b7c3cf7e3a82f9ceca Mon Sep 17 00:00:00 2001 From: Andy Trand Date: Fri, 3 Dec 2021 00:43:57 +0200 Subject: [PATCH] style fetch fix on editing between different blocks (#496) --- lib/src/models/documents/nodes/container.dart | 2 +- .../raw_editor_state_text_input_client_mixin.dart | 9 +++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/lib/src/models/documents/nodes/container.dart b/lib/src/models/documents/nodes/container.dart index 40d3ba9e..ac13ff27 100644 --- a/lib/src/models/documents/nodes/container.dart +++ b/lib/src/models/documents/nodes/container.dart @@ -94,7 +94,7 @@ abstract class Container extends Node { for (final node in children) { final len = node.length; - if (offset < len || (inclusive && offset == len && node.isLast)) { + if (offset < len || (inclusive && offset == len)) { return ChildQuery(node, offset); } offset -= len; diff --git a/lib/src/widgets/raw_editor/raw_editor_state_text_input_client_mixin.dart b/lib/src/widgets/raw_editor/raw_editor_state_text_input_client_mixin.dart index bfb36106..6e4607f9 100644 --- a/lib/src/widgets/raw_editor/raw_editor_state_text_input_client_mixin.dart +++ b/lib/src/widgets/raw_editor/raw_editor_state_text_input_client_mixin.dart @@ -2,6 +2,7 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/services.dart'; import 'package:flutter/widgets.dart'; +import '../../models/documents/document.dart'; import '../../utils/diff_delta.dart'; import '../editor.dart'; @@ -167,8 +168,12 @@ mixin RawEditorStateTextInputClientMixin on EditorState final text = value.text; final cursorPosition = value.selection.extentOffset; final diff = getDiff(oldText, text, cursorPosition); - widget.controller.replaceText( - diff.start, diff.deleted.length, diff.inserted, value.selection); + if (diff.deleted.isEmpty && diff.inserted.isEmpty) { + widget.controller.updateSelection(value.selection, ChangeSource.LOCAL); + } else { + widget.controller.replaceText( + diff.start, diff.deleted.length, diff.inserted, value.selection); + } } @override