anchor.diff:    FDraggingObject.X := fMain.FMouseTileX+FShiftX;
     FDraggingObject.Y := fMain.FMouseTileY+FShiftY;
   
  -  fMain.FSelectedObject := FDraggingObject;
  +  FOwner.FSelectedObject := FDraggingObject;
   end;
   
   procedure TObjectDragProxy.Render(x, y: integer);
  
positive.code: procedure TfMain.DoStartDrag(var DragObject: TDragObject);
  begin
    case FNextDragSubject of
      TDragSubject.MapObject: DragObject := TObjectDragProxy.Create(FSelectedObject, FMouseTileX, FMouseTileY);
      TDragSubject.MapTemplate: DragObject := TTemplateDragProxy.Create(FSelectedTemplate);
    else
    inherited DoStartDrag(DragObject);
    end;
  
negative.code: 
    if (Button = TMouseButton.mbLeft) and (o_idx < FObjManager.ObjCount) then
    begin
      FNextDragSubject:=TDragSubject.MapTemplate;
      FSelectedTemplate := FObjManager.Objcts[o_idx];
      DragManager.DragStart(self, True,0); //after state change
    end;
  
  end;
  