Skip to content
  • LRN's avatar
    W32: Massive W32 DnD fix · 8caba953
    LRN authored
    Massive changes to OLE2 DnD protocol, which was completely broken before:
    * Keep GdkDragContext and OLE2 objects separate (don't ref/unref them
      together, don't necessarily create them together).
    * Keep IDataObject formats in the object itself, not in a global variable.
    * Fix getdata() to look up the request target in its format list, not in the
      global hash table
    * Create target GdkDragContext on each drag_enter, destroy it on drag_leave,
      whereas IDropTarget is created when a window becomes a drag destination
      and is re-used indefinitely.
    * Query the source IDataObject for its supported types, cache them in the
      target (!) context. This is how GTK+ works, honestly.
    * Remember current_src_object when we initiate a drag, to be able
      to detect later on that the data object is ours and use a
      shortcut when querying targets
    * Make sure GDK_DRAG_MOTION is only sent when something changes
    * Support GTK drag cursors
    * Ensure that exotic GTK clipboard formats are registered
      (but...
    8caba953