anchor.diff:      procedure SetCurrentPlayer(APlayer: TPlayer);
     protected
       procedure UpdateActions; override;
  +    procedure DoStartDrag(var DragObject: TDragObject); override;
  +    procedure DragCanceled; override;
     end;
   
   var
  
positive.code:   SetMapViewMouse(x,y);
  
    FDragging.Drop;
    FreeAndNil(FDragging);
    InvalidateMapContent;
  end;
  
  
negative.code: 
  procedure TfMain.MapViewMouseDown(Sender: TObject; Button: TMouseButton;
    Shift: TShiftState; X, Y: Integer);
  var
    q: TMapObjectQueue;
    o: TMapObject;
    DragStarted: Boolean;
  
     procedure PerformStartDrag();
     begin
       if not DragStarted then
       begin
         if Assigned(FSelectedObject)
           and (FSelectedObject.CoversTile(FMap.CurrentLevel,FMouseTileX,FMouseTileY)) then
         begin
           DragManager.DragStart(self,False, TILE_SIZE div 2);
           FNextDragSubject:=TDragSubject.MapObject;
  
           DragStarted := true;
         end;
       end;
     end;
  begin
    SetMapViewMouse(x,y);
    if FTerrainBrushMode=TBrushMode.none then
    begin
  
      DragStarted:=False;
  
      PerformStartDrag();
  
      q := TMapObjectQueue.Create;
      try
        FMap.SelectObjectsOnTile(FMap.CurrentLevel,FMouseTileX,FMouseTileY,q);
  
        if Assigned(FSelectedObject)
          and (FSelectedObject.CoversTile(FMap.CurrentLevel,FMouseTileX,FMouseTileY))
          then
        begin
          //select next object
          o := nil;
          while not q.IsEmpty do
          begin
            o := q.Top;
            q.Pop;
  
            if (q.IsEmpty) or (q.Top = FSelectedObject) then
            begin
              break;
            end;
  
          end;
          FSelectedObject := o;
        end
        else
        begin
          if not q.IsEmpty then
             FSelectedObject := q.Top;
        end;
        PerformStartDrag();
      finally
        q.Free;
      end;
    end;
  
    //todo: editor mode
    if Button = TMouseButton.mbLeft then
    begin
      FMouseDown := True;
    end;
  end;
  
  