anchor.diff:  
   { TfpgX11Drag }
   
  +procedure TfpgX11Drag.InitializeMimeTypesToAtoms;
  +var
  +  sl: TStringList;
  +  i: integer;
  +  a: TAtom;
  +  s: PChar;
  +begin
  +  { free old array }
  +  SetLength(FMimeTypesArray, 0);
  +  { set size of new array }
  +  SetLength(FMimeTypesArray, FMimedata.FormatCount);
  +
  +  sl := FMimeData.Formats as TStringList;
  +  try
  +    for i := 0 to FMimeData.FormatCount-1 do
  +    begin
  +      s := PChar(sl[i]);
  +      a := XInternAtom(xapplication.Display, s, TBool(False));
  +      FMimeTypesArray[i] := a;
  +    end;
  +  finally
  +    sl.Free;
  +  end;
  +end;
  +
   procedure TfpgX11Drag.Dragging(ev: TXEvent);
   var
     dx, dy: cint;
  
positive.code:     FDropAccepted: Boolean;
      FProposedAction: TAtom;
      FAcceptedAction: TAtom;
      FMimeTypesArray: TAtomArray;
      xia_plain_text: TAtom;
      procedure Dragging(ev: TXEvent);
      function  IsDNDAware(win: TWindow): boolean;
      procedure SendDNDLeave(ATarget: TWindow);
  
negative.code:     i := 0;
    xev.xclient.data.l[1] := i or (FUseVersion shl 24);
  
    InitializeMimeTypesToAtoms;
    { TODO: currently we limit ourselves to 3 mime types max. Fix this later }
    for i := 0 to 2 do
    begin
      if i < n then
        xev.xclient.data.l[2+i] := FMimeTypesArray[i]
      else
        xev.xclient.data.l[2+i] := x.None;
    end;
  
    XSendEvent(xapplication.Display, ATarget, False, NoEventMask, @xev);
  end;
  