Dockable d = event.getDragSource().getDockable();
DockableState.Location dockableLocation = d.getDockKey().getLocation();
DockableState.Location viewLocation = dockable.getDockKey().getLocation();
if (drop){
event.setDockingAction(new DockingActionCreateTabEvent(event.getDesktop(),
d, dockableLocation, viewLocation, dockable, 0));
((DockDropEvent) event).acceptDrop(false); // don't remove the floatable : we have to find it's current position
desktop.createTab(dockable, event.getDragSource().getDockable(), 0, true);
} else {
Rectangle2D r2d = new Rectangle2D.Float(bounds.x, bounds.y,
bounds.width,
bounds.height);
event.setDockingAction(new DockingActionCreateTabEvent(event.getDesktop(),
d, dockableLocation, viewLocation, dockable, 0));
if (r2d.equals(lastDropShape)) {
// optimized shape caching
( (DockDragEvent) event).acceptDrag(lastDropGeneralPath);
} else {