在 e4 中打开多个 windows 锁定前一个 windows

Opening multiple windows in e4 locks previous windows

我正在使用 E4 和 SWT 构建应用程序。对于单击按钮,有时会打开一个新的 window(shell)。问题是当我打开一个新的 window 时,我无法使用另一个 windows,从某种意义上说,它被锁定了。除非我关闭最新的 window,否则无法访问其他的。这使得调试有点困难。我不确定这是由于 e4 模型还是 SWT 框架。 你能告诉我这是为什么以及如何克服这个问题吗?

提前致谢。

我在创建新的 window (MWindow) 并将其添加到透视图 (MPerspective) 时,曾 运行 处理过这个问题。如果这是你正在做的,那么你有两个选择:

  1. 将新的 window 添加到应用程序 (MApplication) 而不是透视图

  2. 将标签 IPresentationEngine.WINDOW_TOP_LEVEL 添加到新的 window。 (有关更多信息,请参阅:https://bugs.eclipse.org/bugs/show_bug.cgi?id=441251

(2) 的附加信息:如果您还希望 window 最小化并在 windows 任务栏中有一个图标表示,您可以使用以下设置来配置渲染器

MWindow window = modelService.createModelElement(MTrimmedWindow.class);
window.getTags().add(IPresentationEngine.WINDOW_TOP_LEVEL);         
window.getPersistedState().put(IPresentationEngine.STYLE_OVERRIDE_KEY, "" + SWT.SHELL_TRIM);

我发现哪里出了问题。 shell 创建错误,因为我使用的是 APPLICATION_MODAL 位:

shell = new Shell(Display.getCurrent(), SWT.TITLE | SWT.CLOSE | SWT.MAX | SWT.SHELL_TRIM | SWT.APPLICATION_MODAL | SWT.YES | SWT.NO);

必须是 PRIMARY_MODAL:

shell = new Shell(Display.getCurrent(), SWT.TITLE | SWT.CLOSE | SWT.MAX | SWT.SHELL_TRIM | SWT.PRIMARY_MODAL | SWT.YES | SWT.NO);

感谢大家的帮助。