anchor.diff:      function    StartComposing(const Event: TXEvent): TKeySym;
       procedure   XdndInit;
       procedure   ResetDNDVariables;
  -    procedure   HandleDNDposition(ATopLevelWindow: TfpgX11Window; ASource: TWindow; x_root: integer; y_root: integer; AAction: TAtom; ATimestamp: x.TTime);
  +    procedure   HandleDNDenter(ATopLevelWindow: TfpgX11Window; const ASource: TWindow; const ev: TXEvent);
  +    procedure   HandleDNDleave(ATopLevelWindow: TfpgX11Window; const ASource: TWindow);
  +    procedure   HandleDNDposition(ATopLevelWindow: TfpgX11Window; const ASource: TWindow; const x_root: integer; const y_root: integer; const AAction: TAtom; const ATimestamp: x.TTime);
  +    procedure   HandleDNDdrop(ATopLevelWindow: TfpgX11Window; const ASource: TWindow; const ATimestamp: x.TTime);
     protected
       FDisplay: PXDisplay;
       DisplayDepth: integer;
  
positive.code:   Msg.xclient.data.l[1] := 0;
    if (FDNDDataType <> None) and (FActionType = XdndActionCopy) and (lAccept = 1) then  // we only accept copy action for now
      Msg.xclient.data.l[1] := 1; // 0 xor (1 shl 0); // 0-bit set so we accept drop
  
    Msg.xclient.data.l[2] := 0; // (Left shl 16) or Top;  // x & y co-ordinates
    Msg.xclient.data.l[3] := 0; // (Width shl 16) or Height; // w & h co-ordinates
    Msg.xclient.data.l[4] := FActionType; // this should be the action we accept
  
    XSendEvent(FDisplay, FSrcWinHandle, False, NoEventMask, @Msg);
  end;
  
  function TfpgX11Application.DoGetFontFaceList: TStringList;
  
negative.code:               if not blockmsg then
                  fpgPostMessage(nil, FindWindowByHandle(ev.xclient.window), FPGM_CLOSE);
               end;
            end
            { XDND protocol - XdndEnter }
            else if Assigned(w) and (ev.xclient.message_type = XdndEnter) then
            begin
              HandleDNDenter(w, ev.xclient.data.l[0], ev);
            end
            { XDND protocol - XdndPosition }
            else if Assigned(w) and (ev.xclient.message_type = XdndPosition) then
            begin
              HandleDNDposition(w,                            // top level window
                  ev.xclient.data.l[0],                       // Source window
                  (ev.xclient.data.l[2] shr 16) and $FFFF,    // x_root
                  ev.xclient.data.l[2] and $FFFF,             // y_root
                  ev.xclient.data.l[4],                       // action
                  ev.xclient.data.l[3]);                      // timestamp
            end
            { XDND protocol - XdndStatus }
            else if Assigned(w) and (ev.xclient.message_type = XdndStatus) then
            begin
              {$IFDEF DNDDEBUG}
              writeln('XdndStatus event received!');
              {$ENDIF}
            end
            { XDND protocol - XdndLeave }
            else if Assigned(w) and (ev.xclient.message_type = XdndLeave) then
            begin
              HandleDNDleave(w, ev.xclient.data.l[0]);
            end
            { XDND protocol - XdndDrop }
            else if Assigned(w) and (ev.xclient.message_type = XdndDrop) then
            begin
              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!');
              {$ENDIF}
            end;
          end;
  
      X.ConfigureNotify:
  