diff --git a/lcl/include/dragmanager.inc b/lcl/include/dragmanager.inc
index e94e580..0624547 100644
--- a/lcl/include/dragmanager.inc
+++ b/lcl/include/dragmanager.inc
@@ -644,6 +644,9 @@ begin
     FWaitForTreshold := not AImmediate;
     GetCursorPos(FStartPosition);
 
+    if (AControl.DragKind<>dkDock) and (AControl.HostDockSite <> nil) then
+      AControl.DragKind := dkDock; //make docked control dockable
+
     case AControl.DragKind of
       dkDrag: FPerformer := TDragPerformer.Create(Self, AControl);
       dkDock: FPerformer := TDockPerformer.Create(Self, AControl);
@@ -780,6 +783,7 @@ var
   AIsDragging,
   AIsDocking: Boolean;
 begin
+{$IFDEF old}
   // if this is TWinControl, and it have controls (not TWinControls)
   // then we should check Dragging in those controls
   AIsDocking := False;
@@ -803,6 +807,9 @@ begin
   // belongs to parent => we should allow parent to get capture
   if not (AIsDocking and (CaptureControl = OldCaptureControl.Parent)) then
     DragStop(AIsDragging);
+{$ELSE}
+//ignore changes, they prevent proper drag start and stop
+{$ENDIF}
 end;
 
 
