diff --git a/bundles/org.eclipse.e4.ui.workbench.addons.swt/src/org/eclipse/e4/ui/workbench/addons/dndaddon/DetachedDropAgent.java b/bundles/org.eclipse.e4.ui.workbench.addons.swt/src/org/eclipse/e4/ui/workbench/addons/dndaddon/DetachedDropAgent.java
index cf70e2e..cad4e0d 100644
--- a/bundles/org.eclipse.e4.ui.workbench.addons.swt/src/org/eclipse/e4/ui/workbench/addons/dndaddon/DetachedDropAgent.java
+++ b/bundles/org.eclipse.e4.ui.workbench.addons.swt/src/org/eclipse/e4/ui/workbench/addons/dndaddon/DetachedDropAgent.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2010 IBM Corporation and others.
+ * Copyright (c) 2010, 2011 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -29,8 +29,7 @@
 
 	@Override
 	public boolean canDrop(MUIElement dragElement, CursorInfo info) {
-		if (dragElement instanceof MPart && info.curElement == null
-				&& !dragElement.getTags().contains("Editor")) //$NON-NLS-1$
+		if (dragElement instanceof MPart && info.curElement == null)
 			return true;
 
 		return false;
diff --git a/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/internal/workbench/ModelServiceImpl.java b/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/internal/workbench/ModelServiceImpl.java
index 3276c95..466f48e 100644
--- a/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/internal/workbench/ModelServiceImpl.java
+++ b/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/internal/workbench/ModelServiceImpl.java
@@ -506,12 +506,24 @@
 	public void detach(MPartSashContainerElement element, int x, int y, int width, int height) {
 		// Determine the correct parent for the new window
 		MUIElement curParent = element.getParent();
-		while (curParent != null && !(curParent instanceof MPerspective)
-				&& !(curParent instanceof MWindow))
-			curParent = curParent.getParent();
+		MUIElement current = element;
+		MWindow window = getTopLevelWindowFor(element);
+		while (!(curParent instanceof MPerspective) && !(curParent instanceof MWindow)) {
+			if (curParent == null) {
+				// no parent, maybe we're being represented by a placeholder
+				current = findPlaceholderFor(window, current);
+				if (current == null) {
+					return; // log??
+				}
 
-		if (curParent == null)
-			return; // log??
+				curParent = current.getParent();
+				if (curParent == null) {
+					return; // log??
+				}
+			}
+			current = curParent;
+			curParent = current.getParent();
+		}
 
 		MTrimmedWindow newWindow = BasicFactoryImpl.INSTANCE.createTrimmedWindow();
 
@@ -529,7 +541,6 @@
 			MPerspective persp = (MPerspective) curParent;
 			persp.getWindows().add(newWindow);
 
-			MWindow window = getTopLevelWindowFor(persp);
 			IPresentationEngine renderingEngine = persp.getContext().get(IPresentationEngine.class);
 			renderingEngine.createGui(newWindow, window.getWidget(), persp.getContext());
 		} else if (curParent instanceof MWindow) {
@@ -542,9 +553,6 @@
 	 * @return
 	 */
 	private MWindowElement wrapElementForWindow(MPartSashContainerElement element) {
-		if (element instanceof MWindowElement)
-			return (MWindowElement) element;
-
 		if (element instanceof MPlaceholder) {
 			MUIElement ref = ((MPlaceholder) element).getRef();
 			if (ref instanceof MPart) {
@@ -552,6 +560,12 @@
 				newPS.getChildren().add((MPlaceholder) element);
 				return newPS;
 			}
+		} else if (element instanceof MPart) {
+			MPartStack newPS = MBasicFactory.INSTANCE.createPartStack();
+			newPS.getChildren().add((MPart) element);
+			return newPS;
+		} else if (element instanceof MWindowElement) {
+			return (MWindowElement) element;
 		}
 		return null;
 	}
