创建后激活导致工具栏在零件堆栈中丢失
ACTIVATE after CREATE causing the toolbar to be missing in part stack
我有一个包含两个零件的零件堆。第二部分有一个 ToolBar
和一个带有图标的 Direct Tool Item
。
我想初始化第二部分而不显示它,因为有些代码需要立即执行,而不是在获得焦点时执行。
为此我调用:
partService.showPart(secondPartID, PartState.CREATE);
之后我打电话给:
partService.showPart(secondPartID, PartState.ACTIVATE);
这会按预期将第二个视图置于最前面,但缺少工具栏。
我尝试获取部件的工具栏并获取小部件,但小部件为空。
如果我切换到第一部分(通过单击选项卡)然后切换回第二部分,则工具栏已成功创建。
我想知道我是否使用了 CREATE
/ACTIVATE
调用不正确,因为我得到的行为很奇怪。
这可能是什么原因造成的?
通过将其包装在 async
中,它可以修复它。我已经尝试了多种变体来解决这个问题,这是唯一可以解决的问题。
Display.getDefault().asyncExec(() -> partService.showPart(id, PartState.ACTIVATE));
肯定是initialised/ready事情还没有完成,导致工具栏无法添加。通过使用异步,它必须等待直到它准备好显示工具栏。
如果有人能够提供任何额外信息来说明为什么会修复它,我会更新答案。
我有一个包含两个零件的零件堆。第二部分有一个 ToolBar
和一个带有图标的 Direct Tool Item
。
我想初始化第二部分而不显示它,因为有些代码需要立即执行,而不是在获得焦点时执行。
为此我调用:
partService.showPart(secondPartID, PartState.CREATE);
之后我打电话给:
partService.showPart(secondPartID, PartState.ACTIVATE);
这会按预期将第二个视图置于最前面,但缺少工具栏。
我尝试获取部件的工具栏并获取小部件,但小部件为空。
如果我切换到第一部分(通过单击选项卡)然后切换回第二部分,则工具栏已成功创建。
我想知道我是否使用了 CREATE
/ACTIVATE
调用不正确,因为我得到的行为很奇怪。
这可能是什么原因造成的?
通过将其包装在 async
中,它可以修复它。我已经尝试了多种变体来解决这个问题,这是唯一可以解决的问题。
Display.getDefault().asyncExec(() -> partService.showPart(id, PartState.ACTIVATE));
肯定是initialised/ready事情还没有完成,导致工具栏无法添加。通过使用异步,它必须等待直到它准备好显示工具栏。
如果有人能够提供任何额外信息来说明为什么会修复它,我会更新答案。