Bug 569291 - Don't start drag when no active shell is available

Add a guard when Display#getActiveShell() returns null. This might
happen in rare situations, e.g. when an e4 view is dragged to detach it.

Change-Id: I1566047b9b65b47039ea80fade5a77d950aaa82f
Signed-off-by: Karsten Thoms <karsten.thoms@karakun.com>
Reviewed-on: https://git.eclipse.org/r/c/platform/eclipse.platform.ui/+/173029
Tested-by: Platform Bot <platform-bot@eclipse.org>
Reviewed-by: Alexander Kurtakov <akurtako@redhat.com>
diff --git a/bundles/org.eclipse.e4.ui.workbench.addons.swt/src/org/eclipse/e4/ui/workbench/addons/dndaddon/DnDManager.java b/bundles/org.eclipse.e4.ui.workbench.addons.swt/src/org/eclipse/e4/ui/workbench/addons/dndaddon/DnDManager.java
index fe789d3..3d0fe81 100644
--- a/bundles/org.eclipse.e4.ui.workbench.addons.swt/src/org/eclipse/e4/ui/workbench/addons/dndaddon/DnDManager.java
+++ b/bundles/org.eclipse.e4.ui.workbench.addons.swt/src/org/eclipse/e4/ui/workbench/addons/dndaddon/DnDManager.java
@@ -195,7 +195,12 @@
 
 	protected void startDrag() {
 		// Create a new tracker for this drag instance
-		tracker = new Tracker(Display.getCurrent().getActiveShell(), SWT.NULL);
+		Shell activeShell = Display.getCurrent().getActiveShell();
+		if (activeShell == null) {
+			return;
+		}
+
+		tracker = new Tracker(activeShell, SWT.NULL);
 		tracker.setStippled(true);
 		setRectangle(offScreenRect);