From 7c58654fe827cf0508b4e03555412753a99b6d85 Mon Sep 17 00:00:00 2001 From: Vincent Chan Date: Tue, 9 Aug 2022 13:33:54 +0800 Subject: [PATCH] fix: undo redo handler --- .../flowy_editor/lib/service/editor_service.dart | 2 ++ .../redo_undo_handler.dart | 15 +++++++++++++++ 2 files changed, 17 insertions(+) create mode 100644 frontend/app_flowy/packages/flowy_editor/lib/service/internal_key_event_handlers/redo_undo_handler.dart diff --git a/frontend/app_flowy/packages/flowy_editor/lib/service/editor_service.dart b/frontend/app_flowy/packages/flowy_editor/lib/service/editor_service.dart index 78f7bb76fa..2d042377e1 100644 --- a/frontend/app_flowy/packages/flowy_editor/lib/service/editor_service.dart +++ b/frontend/app_flowy/packages/flowy_editor/lib/service/editor_service.dart @@ -17,6 +17,7 @@ import 'package:flowy_editor/service/internal_key_event_handlers/enter_without_s import 'package:flowy_editor/service/internal_key_event_handlers/slash_handler.dart'; import 'package:flowy_editor/service/internal_key_event_handlers/update_text_style_by_command_x_handler.dart'; import 'package:flowy_editor/service/internal_key_event_handlers/whitespace_handler.dart'; +import 'package:flowy_editor/service/internal_key_event_handlers/redo_undo_handler.dart'; import 'package:flowy_editor/service/keyboard_service.dart'; import 'package:flowy_editor/service/render_plugin_service.dart'; import 'package:flowy_editor/service/scroll_service.dart'; @@ -39,6 +40,7 @@ List defaultKeyEventHandler = [ flowyDeleteNodesHandler, arrowKeysHandler, copyPasteKeysHandler, + redoUndoKeysHandler, enterWithoutShiftInTextNodesHandler, updateTextStyleByCommandXHandler, whiteSpaceHandler, diff --git a/frontend/app_flowy/packages/flowy_editor/lib/service/internal_key_event_handlers/redo_undo_handler.dart b/frontend/app_flowy/packages/flowy_editor/lib/service/internal_key_event_handlers/redo_undo_handler.dart new file mode 100644 index 0000000000..75b22402e4 --- /dev/null +++ b/frontend/app_flowy/packages/flowy_editor/lib/service/internal_key_event_handlers/redo_undo_handler.dart @@ -0,0 +1,15 @@ +import 'package:flowy_editor/service/keyboard_service.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; + +FlowyKeyEventHandler redoUndoKeysHandler = (editorState, event) { + if (event.isMetaPressed && event.logicalKey == LogicalKeyboardKey.keyZ) { + if (event.isShiftPressed) { + editorState.undoManager.redo(); + } else { + editorState.undoManager.undo(); + } + return KeyEventResult.handled; + } + return KeyEventResult.ignored; +};