anchor.diff:            { XDND protocol - XdndLeave }
             else if Assigned(w) and (ev.xclient.message_type = XdndLeave) then
             begin
  +            {$IFDEF DNDDEBUG}
  +            writeln('ClientMessage.XdndLeave event received');
  +            {$ENDIF}
               HandleDNDleave(w, ev.xclient.data.l[0]);
             end
             { XDND protocol - XdndDrop }
             else if Assigned(w) and (ev.xclient.message_type = XdndDrop) then
             begin
  +            {$IFDEF DNDDEBUG}
  +            writeln('ClientMessage.XdndDrop event received');
  +            writeln('    ClassName = ', w.ClassName);
  +            writeln('    Name = ', w.Name);
  +            {$ENDIF}
               HandleDNDdrop(w, ev.xclient.data.l[0], ev.xclient.data.l[2]);
             end
             { XDND protocol - XdndFinished }
             else if Assigned(w) and (ev.xclient.message_type = XdndFinished) then
             begin
               {$IFDEF DNDDEBUG}
  -            writeln('XdndFinished event received!');
  +            writeln('ClientMessage.XdndFinished event received');
               {$ENDIF}
               if Assigned(Drag) then
               begin
  +              {$IFDEF DNDDEBUG}
                 writeln('Freeing Drag Object');
  +              {$ENDIF}
                 FreeAndNil(FDrag);
               end;
             end;
  
positive.code:   wg: TfpgWidget;
  begin
    {$IFDEF DNDDEBUG}
    writeln('XdndLeave event received!');
    {$ENDIF}
    if FLastDropTarget <> 0 then { 0 would be first time in, so there is no last window }
    begin
  
negative.code:   Msg: TXEvent;
  begin
    {$IFDEF DNDDEBUG}
    writeln('TfpgX11Application.HandleDNDdrop');
    {$ENDIF}
    { TODO: Must XConvertSelection always be called? }
    XConvertSelection(FDisplay, XdndSelection, FDNDDataType, XdndSelection, ATopLevelWindow.FWinHandle, ATimestamp);
  