可以使用 SWT 3.7 中引入的 Shell.getToolBar() 将任何类型的自定义控件放入 SWT 中的外壳修剪区域。需要创建一个具有 SWT.SEPARATOR 样式的 ToolItem 并为其分配一个自定义控件。我的“自定义控件”是整个工具栏区域,包括一些基于复合的自定义小部件。
请参阅此错误评论以了解我大致所做的事情:
https://bugs.eclipse.org/bugs/show_bug.cgi?id=222859#c124
问题是用户可以通过单击统一工具栏的“空白”区域来拖动外壳。看来我的自定义控件被视为“空白空间”。我的一个控件支持拖放。但是,当它放在统一的工具栏区域时,拖动是拖动外壳,而不是应该拖动的小部件内容。实际上,两者同时发生。所以我需要做的就是以某种方式阻止事件被进一步处理。将 SWT.MouseDown 的侦听器附加到我的自定义控件并将 event.doit 设置为 false 不起作用。