diff options
Diffstat (limited to 'experimental')
2 files changed, 9 insertions, 2 deletions
diff --git a/experimental/swt/org.eclipse.fx.runtime.swt.e4/META-INF/MANIFEST.MF b/experimental/swt/org.eclipse.fx.runtime.swt.e4/META-INF/MANIFEST.MF index 71cb0fac5..6c78712b2 100644 --- a/experimental/swt/org.eclipse.fx.runtime.swt.e4/META-INF/MANIFEST.MF +++ b/experimental/swt/org.eclipse.fx.runtime.swt.e4/META-INF/MANIFEST.MF @@ -6,7 +6,9 @@ Bundle-Version: 1.0.0.qualifier Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Require-Bundle: org.eclipse.e4.core.contexts, org.eclipse.fx.runtime.swt;bundle-version="1.0.0", - org.eclipse.e4.ui.services + org.eclipse.e4.ui.services, + org.eclipse.fx.ui.services, + org.eclipse.e4.ui.di Service-Component: OSGI-INF/services/fxtoswtfunction.xml, OSGI-INF/services/fxtoswtdisplay.xml, OSGI-INF/services/swtactiveshell.xml diff --git a/experimental/swt/org.eclipse.fx.runtime.swt.e4/src/org/eclipse/fx/runtime/swt/e4/internal/SWTActiveShellFunction.java b/experimental/swt/org.eclipse.fx.runtime.swt.e4/src/org/eclipse/fx/runtime/swt/e4/internal/SWTActiveShellFunction.java index 3684388fc..dad706628 100644 --- a/experimental/swt/org.eclipse.fx.runtime.swt.e4/src/org/eclipse/fx/runtime/swt/e4/internal/SWTActiveShellFunction.java +++ b/experimental/swt/org.eclipse.fx.runtime.swt.e4/src/org/eclipse/fx/runtime/swt/e4/internal/SWTActiveShellFunction.java @@ -16,6 +16,7 @@ import javafx.stage.Stage; import org.eclipse.e4.core.contexts.ContextFunction; import org.eclipse.e4.core.contexts.IEclipseContext; import org.eclipse.e4.ui.services.IServiceConstants; +import org.eclipse.fx.ui.services.sync.UISynchronize; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; @@ -24,7 +25,11 @@ public class SWTActiveShellFunction extends ContextFunction { public Object compute(IEclipseContext context) { Object active = context.get(IServiceConstants.ACTIVE_SHELL); if (active != null && active instanceof Stage) { - return new Shell((Stage)active); + UISynchronize uiSynchronize = context.get(UISynchronize.class); + Shell result = uiSynchronize.syncExec(() -> { + return new Shell((Stage)active); + }, null); + return result; } return Display.getCurrent().getActiveShell(); } |