是否有任何CSS可以删除Eclipse RCP4中带下划线的视图标签文本

时间:2018-08-09 05:58:58

标签: eclipse-rcp rcp e4

在我的零件类中,我删除了实现了

的@Focus批注方法
@Focus
public void setFocus() {
    viewer.getControl().setFocus();
}

该标签文本下划线后不可见。但是,当打开带有单部分选项卡的文本下划线的窗口可见时,如果我在窗口下划线的任何位置单击,就消失了。 如何删除标签文字下划线?

1 个答案:

答案 0 :(得分:0)

如果用于零件的CTabFolder具有焦点,则会绘制下划线。因此,您应该始终为零件定义@Focus方法,并将焦点设置到零件中的其他控件。

标签的实际绘制由标签渲染器完成,您可以使用swt-tab-renderer在CSS中设置标签渲染器:

CTabFolder
{
  swt-tab-renderer: url('bundleclass://org.eclipse.e4.ui.workbench.renderers.swt/org.eclipse.e4.ui.workbench.renderers.swt.CTabRendering');
}

但是制表符渲染器相当复杂且难以编写。

标准渲染器中下划线的实际代码为:

if (parent.isFocusControl()) {
    Display display = parent.getDisplay();
    if (parent.simple || parent.single) {
        gc.setBackground(display.getSystemColor(SWT.COLOR_BLACK));
        gc.setForeground(display.getSystemColor(SWT.COLOR_WHITE));
        gc.drawFocus(xDraw-1, textY-1, extent.x+2, extent.y+2);
    } else {
        gc.setForeground(display.getSystemColor(BUTTON_BORDER));
        gc.drawLine(xDraw, textY+extent.y+1, xDraw+extent.x+1, textY+extent.y+1);
    }
}
这段代码中的

parentCTabFolder(来自org.eclipse.swt.custom.CTabFolderRenderer