anchor.diff:  
           // The mouse up must still be handled even if we had a double click event.
           HandleLMouseUp(msg.Params.mouse.x, msg.Params.mouse.y, msg.Params.mouse.shiftstate);
  +
  +        uMouseDownSourceWidget := nil;
         end;
   
       MOUSE_RIGHT:
  
positive.code:       Exit;
    end;
  
    if (msg.Params.mouse.Buttons and MOUSE_LEFT) = MOUSE_LEFT then
    begin
      if not FDragActive and (FDragStartPos.ManhattanLength(fpgPoint(msg.Params.mouse.x, msg.Params.mouse.y)) > fpgApplication.StartDragDistance) then
      begin
  
negative.code:   case msg.Params.mouse.Buttons of
      MOUSE_LEFT:
        begin
          uMouseDownSourceWidget := self;
          FDragStartPos.SetPoint(msg.Params.mouse.x, msg.Params.mouse.y);
          mb := mbLeft;
          HandleLMouseDown(msg.Params.mouse.x, msg.Params.mouse.y, msg.Params.mouse.shiftstate);
  