SWT TableCombo отключить подсветку выбранного элемента

Я использую TableCombo, и когда я нажимаю кнопку раскрывающегося списка, отображается список всех элементов. Мне бы хотелось, чтобы выбранная строка не выделялась в этом списке (поскольку я использую разные цвета фона в зависимости от типа элемента, а выделение скрывает цвет фона выбранного элемента). Я попытался создать таблицу с SWT.NO_FOCUS а также SWT.HIDE_SELECTION флаги, но это не убрало основной момент. Есть идеи?

Я пытался найти что-то вроде маркера в разгаре, но мне не удалось

2 ответа

Решение

Я только что нашел эту ветку, которая в значительной степени отвечает на мой вопрос. За SWT.FULL_SELECTION ОС выделяет подсветку автоматически - см. Table.CDDS_ITEMPOSTPAINT(NMLVCUSTOMDRAW nmcd, int wParam, int lParam) на Win32.

Однако это поведение может быть изменено с помощью констант стиля. Правильным решением для меня было использование SWT.FULL_SELECTION (можно выбрать целый ряд) и SWT.NO_FOCUS (синяя подсветка не используется) и SWT.HIDE_SELECTION (скрывает серый цвет фона по умолчанию для выбранного элемента) флаги вместе.

К сожалению, HIDE_SELECTION флаг не поддерживается SWT Tree,

Как предложено в этом ответе SO, можно отключить событие, переданное SWT.EraseItem:

table.addListener(SWT.EraseItem, new Listener() {   
    @Override
    public void handleEvent(Event event) {
        event.detail &= ~SWT.SELECTED;
    }
});

table это таблица SWT, которую я получаю из своего JFace TableViewer, Не уверен насчет TableCombo API.

Другие вопросы по тегам