У меня странная проблема: существует SectionPart с составным элементом, который создается из FormToolkit # createComposite (getSection ()). Composite содержит некоторое количество виджетов, которые расположены вертикально один под другим (как в обычной форме). Когда курсор находится внутри какого-то виджета, скажем, input filed, и я щелкаю правой кнопкой мыши между двумя полями в пустом пространстве, затем фокус автоматически переходит к первому полю в этом композите.
Я пытался установить бит стиля SWT.NO_FOCUS для первого виджета в форме (обычно это TableComboViewer), но это не помогло (кажется, этот бит не установлен в TableCombo, который находится внутри TableComboViewer).
Итак, кто-нибудь сталкивался с чем-то подобным, или есть какие-то обходные пути для этой проблемы или какие-либо подсказки, что это может быть?
Upd1: установка стиля NO_FOCUS помогает для не виджетов TableComboViewer (в этом случае они не получают фокус). В случае TableComboViewer виджет TableCombo содержит текстовый виджет, который получает фокус, но даже, если я добавлю бит NO_FOCUS, он не будет применен к стилю текста. Я проверил источник TableCombo и есть метод checkStyle, который делает следующее:
private static int checkStyle (int style) {
int mask = SWT.BORDER | SWT.READ_ONLY | SWT.FLAT | SWT.LEFT_TO_RIGHT | SWT.RIGHT_TO_LEFT;
return SWT.NO_FOCUS | (style & mask);
}
На самом деле я не уверен, что он делает, потому что я не очень хорош в побитовом режиме, но кажется, что это проблема, почему я не могу установить флаг NO_FOCUS.
Я не понимаю, однако, почему, когда я нажимаю на Composite, он пытается установить фокса на своих детей, я могу как-то подавить это?
Upd2: причина, вероятно, найдена, говорят, что:
Когда вид активирован, фокус переносится в форму, которая передает его первому элементу управления, способному принимать фокус, в данном случае наша ссылка.
И кажется, что это невозможно запретить.
Заранее спасибо,
AlexG