anchor.diff:    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);
  
positive.code: 
          // 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);
        end;
  
      MOUSE_RIGHT:
  
negative.code:       Exit;
    end;
  
    if ((msg.Params.mouse.Buttons and MOUSE_LEFT) = MOUSE_LEFT) and (self = uMouseDownSourceWidget) then
    begin
      if not FDragActive and (FDragStartPos.ManhattanLength(fpgPoint(msg.Params.mouse.x, msg.Params.mouse.y)) > fpgApplication.StartDragDistance) then
      begin
  