Work for Bug 340695 - Can't reposition trim elements (Initial
Toolbar work)
diff --git a/bundles/org.eclipse.e4.ui.workbench.addons.swt/src/org/eclipse/e4/ui/workbench/addons/dndaddon/IBFDragAgent.java b/bundles/org.eclipse.e4.ui.workbench.addons.swt/src/org/eclipse/e4/ui/workbench/addons/dndaddon/IBFDragAgent.java
index 27f4ef8..f903170 100644
--- a/bundles/org.eclipse.e4.ui.workbench.addons.swt/src/org/eclipse/e4/ui/workbench/addons/dndaddon/IBFDragAgent.java
+++ b/bundles/org.eclipse.e4.ui.workbench.addons.swt/src/org/eclipse/e4/ui/workbench/addons/dndaddon/IBFDragAgent.java
@@ -12,6 +12,7 @@
 package org.eclipse.e4.ui.workbench.addons.dndaddon;
 
 import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.model.application.ui.basic.MTrimElement;
 import org.eclipse.e4.ui.model.application.ui.menu.MToolControl;
 import org.eclipse.e4.ui.widgets.ImageBasedFrame;
 import org.eclipse.e4.ui.workbench.addons.minmax.TrimStack;
@@ -46,7 +47,7 @@
 		if (!(info.curCtrl instanceof ImageBasedFrame))
 			return null;
 
-		if (!(info.curElement instanceof MToolControl))
+		if (!(info.curElement instanceof MTrimElement))
 			return null;
 
 		ImageBasedFrame frame = (ImageBasedFrame) info.curCtrl;
diff --git a/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/workbench/renderers/swt/ToolBarManagerRenderer.java b/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/workbench/renderers/swt/ToolBarManagerRenderer.java
index 49a1120..04b4641 100644
--- a/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/workbench/renderers/swt/ToolBarManagerRenderer.java
+++ b/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/workbench/renderers/swt/ToolBarManagerRenderer.java
@@ -25,6 +25,7 @@
 import org.eclipse.e4.core.services.events.IEventBroker;
 import org.eclipse.e4.ui.internal.workbench.ContributionsAnalyzer;
 import org.eclipse.e4.ui.internal.workbench.swt.AbstractPartRenderer;
+import org.eclipse.e4.ui.internal.workbench.swt.CSSRenderingUtils;
 import org.eclipse.e4.ui.model.application.MApplication;
 import org.eclipse.e4.ui.model.application.MApplicationElement;
 import org.eclipse.e4.ui.model.application.ui.MElementContainer;
@@ -262,6 +263,24 @@
 		createToolbar(toolbarModel, intermediate);
 		bindWidget(element, intermediate);
 		processContribution(toolbarModel);
+
+		MUIElement parentElement = element.getParent();
+		if (parentElement instanceof MTrimBar) {
+			element.getTags().add("Draggable"); //$NON-NLS-1$
+
+			setCSSInfo(element, intermediate);
+
+			boolean vertical = false;
+			MTrimBar bar = (MTrimBar) parentElement;
+			vertical = bar.getSide() == SideValue.LEFT
+					|| bar.getSide() == SideValue.RIGHT;
+			IEclipseContext parentContext = getContextForParent(element);
+			CSSRenderingUtils cssUtils = parentContext
+					.get(CSSRenderingUtils.class);
+			intermediate = (Composite) cssUtils.frameMeIfPossible(intermediate,
+					null, vertical, true);
+		}
+
 		return intermediate;
 	}
 
@@ -393,9 +412,9 @@
 			linkModelToManager((MToolBar) element, manager);
 		}
 		ToolBar bar = manager.createControl(parent);
-		if (bar.getParent() != parent) {
-			Thread.dumpStack();
-		}
+		// if (bar.getParent() != parent) {
+		// Thread.dumpStack();
+		// }
 		bar.setData(manager);
 		bar.setData(AbstractPartRenderer.OWNING_ME, element);
 		bar.getShell().layout(new Control[] { bar }, SWT.DEFER);