我正在创建自己的GEF基于GEF的图形编辑器。当验证失败时,它会创建错误标记,并且编辑器有一个gotomarker方法来查找和活动标记。这一切都有效。

只有问题是我在双击标记时获得一个runtimeexception(点击从上下文菜单中单击“转到”时,没有问题) 消息如下:

java.lang.RuntimeException: WARNING: Prevented recursive attempt to activate part org.eclipse.ui.views.ProblemView while still in the middle of activating part namespace.myEditorID`
.

相应的堆叠器的一部分显示:

at org.eclipse.ui.internal.WorkbenchPage.setActivePart(WorkbenchPage.java:3586)
...
at org.eclipse.swt.widgets.Display.eventProc(Display.java:1245)
at org.eclipse.swt.internal.gtk.OS._gtk_enumerate_printers(Native Method)
at org.eclipse.swt.internal.gtk.OS.gtk_enumerate_printers(OS.java:9296)
at org.eclipse.swt.printing.Printer.getPrinterList(Printer.java:98)
at org.eclipse.gef.ui.actions.PrintAction.calculateEnabled(PrintAction.java:45)
at org.eclipse.gef.ui.actions.WorkbenchPartAction.isEnabled(WorkbenchPartAction.java:123)
...
.

完整的stacktrace有点长,所以它可在 pastebin

这使我想到了在 actionbarcontributor .declareglobalactionkey通过删除:

addGlobalActionKey(ActionFactory.PRINT.getId());
.

这解决了runtimeexception ...?!

我没有看到打印动作之间的关系并在单击标记后进入相应的对象。当然,离开打印动作禁用,不是解决方案。

所以我可以做些什么来保持打印动作可用,防止这些runtimeexceptions?

有帮助吗?

解决方案

As a test ,I refer to the url:https://bugs.eclipse.org/bugs/show_bug.cgi?id=154112 and I overrid my EditorPart's setFocus method like:

@Override
public void setFocus() {
    PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell().setFocus();
}

and then it works well.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top