0

私の現在のプロジェクトでは、TextEditorネストされた a にアタッチされた jface ProjectionViewer の特定の実装を使用していMultiPageEditorます。私の仕事は、Ctrl-Z に対するカスタムの反応を実装することです。私が得た情報から、特定の実装を Viewer にアタッチすることでこれを行うのが最善でありIUndoHandler、すべて問題ありません。

ただし、その TextEditor にフォーカスがあるときに Ctrl-Z を押しても、期待される反応は発生しません。関連するキーの組み合わせ Ctrl-Z を表示するコンテキスト メニューの[入力を元に戻す] をクリックすると、TextViewerUndoManager.DocumentUndoListenerの通知メソッドが呼び出されますが、TextViewerUndoManagerCtrl-Z を押しても のコード行には触れられません。

この問題の考えられる原因として、拡張ポイントでこのキーの組み合わせに対してハンドラーが定義されている可能性があると想定しました。これは、以前にこのメカニズムを試したことがあるためです。別のウィジェットの特別なコンテキスト メニューに関連付けられているもの。

Ctrl-C と Ctrl-V が意図したとおりに機能することに注意してください。

Ctrl-Z が押されたときに何が起こるか、および に何も中継されない理由を調べる必要がありますTextViewerUndoManager

eclipse がこれらのキーの組み合わせを正常に処理し、どのコマンドが適切かを判断する方法について誰かが説明してくれると非常に助かります。

前もって感謝します

4

1 に答える 1

0

Cntrl+Z- undo は を使用して処理されますOperationHistorySupportUndoActionHandlerクラスを見てください。

バインディング サポートは、キーダウン イベント フィルターを使用して実装されますWorkbenchKeyboard(すべてのキーダウン イベントは、最初にこのクラスを使用してフィルター処理されます。これBindingServiceが実装方法です)。これにより、キーバインドに対応するコマンドが特定されます。

DocumentUndoManager.UndoableTextChange元に戻す操作が処理される場所です。

于 2012-08-31T16:38:39.863 に答える