anchor.diff:    FMouseCursorIsDirty := False;
   end;
   
  +procedure TfpgX11Window.DoEnableDrops(const AValue: boolean);
  +begin
  +  // notify XDND protocol that we can handle DND
  +  if AValue then
  +  begin
  +    if HasHandle then
  +      XChangeProperty(xapplication.Display, WinHandle, xapplication.XdndAware, XA_ATOM, 32, PropModeReplace, @FPG_XDND_VERSION, 1)
  +    else
  +      QueueEnabledDrops := True; // we need to do this once we have a winhandle
  +  end
  +  else
  +    XDeleteProperty(xapplication.Display, WinHandle, xapplication.XdndAware);
  +end;
  +
   procedure TfpgX11Window.DoSetWindowTitle(const ATitle: string);
   var
     tp: TXTextProperty;
  
positive.code:   procedure ReportLostWindow(const event: TXEvent);
    begin
      {$IFDEF DEBUG}
      writeln('fpGFX/X11: ', GetXEventName(event._type), ' can''t find <',
          IntToHex(event.xany.window, 9), '>');
      {$ENDIF}
    end;
  
negative.code:         Length(FComposeBuffer), @Result, @FComposeStatus);
  end;
  
  procedure TfpgX11Application.XdndInit;
  begin
    XdndAware         := XInternAtom(FDisplay, 'XdndAware',         False);
    XdndTypeList      := XInternAtom(FDisplay, 'XdndTypeList',      False);
    XdndSelection     := XInternAtom(FDisplay, 'XdndSelection',     False);
  
    // client messages
    XdndEnter         := XInternAtom(FDisplay, 'XdndEnter',         False);
    XdndPosition      := XInternAtom(FDisplay, 'XdndPosition',      False);
    XdndStatus        := XInternAtom(FDisplay, 'XdndStatus',        False);
    XdndLeave         := XInternAtom(FDisplay, 'XdndLeave',         False);
    XdndDrop          := XInternAtom(FDisplay, 'XdndDrop',          False);
    XdndFinished      := XInternAtom(FDisplay, 'XdndFinished',      False);
  
    // actions
    XdndActionCopy    := XInternAtom(FDisplay, 'XdndActionCopy',    False);
    XdndActionMove    := XInternAtom(FDisplay, 'XdndActionMove',    False);
    XdndActionLink    := XInternAtom(FDisplay, 'XdndActionLink',    False);
    XdndActionAsk     := XInternAtom(FDisplay, 'XdndActionAsk',     False);
    XdndActionPrivate := XInternAtom(FDisplay, 'XdndActionPrivate', False);
  end;
  
  function TfpgX11Application.DoGetFontFaceList: TStringList;
  var
    pfs: PFcFontSet;
  