0

在我当前的项目中,我正在使用附加到TextEditor嵌套在MultiPageEditor. 我现在的任务是实现对 Ctrl-Z 的自定义反应,据我所知,最好通过将特定实现附加IUndoHandler到查看器来完成,所有这些都没有问题。

但是,在使 TextEditor 聚焦的同时按 Ctrl-Z 不会引起任何预期的反应。在上下文菜单中单击“撤消键入”时,显示关联的组合键 Ctrl-Z 会导致TextViewerUndoManager.DocumentUndoListener调用 的通知方法,TextViewerUndoManager按 Ctrl-Z 时不会触摸其中的任何代码行。

作为这个问题的一个可能来源,我假设可能会在扩展点中为这个组合键定义一个处理程序,因为我之前已经尝试过这种机制,但是 plugin.xml 没有定义任何组合键,也没有定义任何撤消处理程序。一个与不同小部件的特殊上下文菜单相关联的菜单。

值得注意的是 Ctrl-C 和 Ctrl-V 按预期工作。

我需要找出按下 Ctrl-Z 时会发生什么,以及为什么什么都没有传递到TextViewerUndoManager.

如果有人可以描述 eclipse 如何正常处理这些组合键并决定哪个命令是合适的,那将是非常有帮助的。

提前致谢

4

1 回答 1

0

Cntrl+Z- 撤消使用 处理OperationHistorySupport。看UndoActionHandler课。

绑定支持是使用 keydown 事件过滤器实现的WorkbenchKeyboard(所有 keydown 事件首先使用此类过滤。这是如何BindingService实现的)。这将找出键绑定的相应命令。

DocumentUndoManager.UndoableTextChange是处理撤消操作的地方。

于 2012-08-31T16:38:39.863 回答