From 1b5d717560494eec57a10b0bd6d984cd29bc3397 Mon Sep 17 00:00:00 2001 From: "Lucas.Xu" Date: Fri, 12 Aug 2022 13:40:35 +0800 Subject: [PATCH] fix: #832 --- .../internal_key_event_handlers/delete_text_handler.dart | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/frontend/app_flowy/packages/flowy_editor/lib/src/service/internal_key_event_handlers/delete_text_handler.dart b/frontend/app_flowy/packages/flowy_editor/lib/src/service/internal_key_event_handlers/delete_text_handler.dart index 5e96e75a99..92f5e9afb9 100644 --- a/frontend/app_flowy/packages/flowy_editor/lib/src/service/internal_key_event_handlers/delete_text_handler.dart +++ b/frontend/app_flowy/packages/flowy_editor/lib/src/service/internal_key_event_handlers/delete_text_handler.dart @@ -4,12 +4,13 @@ import 'package:flutter/services.dart'; import 'package:flowy_editor/flowy_editor.dart'; KeyEventResult _handleBackspace(EditorState editorState, RawKeyEvent event) { - final selection = editorState.service.selectionService.currentSelection.value; + var selection = editorState.service.selectionService.currentSelection.value; if (selection == null) { return KeyEventResult.ignored; } - - final nodes = editorState.service.selectionService.currentSelectedNodes; + var nodes = editorState.service.selectionService.currentSelectedNodes; + nodes = selection.isBackward ? nodes : nodes.reversed.toList(growable: false); + selection = selection.isBackward ? selection : selection.reversed; // make sure all nodes is [TextNode]. final textNodes = nodes.whereType().toList(); if (textNodes.length != nodes.length) { @@ -20,7 +21,7 @@ KeyEventResult _handleBackspace(EditorState editorState, RawKeyEvent event) { if (textNodes.length == 1) { final textNode = textNodes.first; final index = textNode.delta.prevRunePosition(selection.start.offset); - if (index < 0) { + if (index < 0 && selection.isCollapsed) { // 1. style if (textNode.subtype != null) { transactionBuilder