Обработка KeyEvent в jface SourceViewer не уважает doit = ​​false - PullRequest
0 голосов
/ 24 июня 2011

У меня есть JFace SourceViewer, который я изменяю, и я хочу захватить, когда пользователь нажимает внутри него клавишу ВВОД, выполнить некоторый код и затем отменить дальнейшее выполнение события ENTER.Другими словами, я не хочу возврата каретки в тексте SourceViewer.

У меня настроены KeyListener и TraverseListener, и все они запускаются правильно, но когда я установил evt.doit = false кареткаreturn все еще отображается в программе просмотра исходного кода.

Если я делаю то же самое в виджете StyledText, он работает правильно.Что-то происходит в классе SourceViewer, которое переопределяет настройку doit = ​​false?

1 Ответ

2 голосов
/ 24 июня 2011

Я предполагаю, что ваш слушатель слишком поздно уволен в списке слушателей.Помните, что StyledText является не нативным элементом управления, и, таким образом, обработка клавиш, мыши, рисования, изменения размера и т. Д. Выполняется путем установки прослушивателя на холсте - см. StyledText.installListeners().

* 1006.* Если этот прослушиватель запускается до того, как у вас есть возможность установить doit = false, то ключ уже будет использован.

Возможно, вы получите лучшее изменение, подключившись к событию SWT.Verify, хотя ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...