It is the more complete but also more complex method of handling drop
operations compared to gtk.drop_target.DropTarget, and you should only use
it if gtk.drop_target.DropTarget doesn't provide all the features you need.
During a drag operation, the first signal that a gtk.drop_target_async.DropTargetAsync
emits is gtk.drop_target_async.DropTargetAsync.accept, which is meant to determine
whether the target is a possible drop site for the ongoing drop. The
default handler for the ::accept signal accepts the drop if it finds
a compatible data format and an action that is supported on both sides.
If it is, and the widget becomes a target, you will receive a
signal@Gtk.DropTargetAsync::drag-enter signal, followed by
signal@Gtk.DropTargetAsync::drag-motion signals as the pointer moves,
optionally a gtk.drop_target_async.DropTargetAsync.drop signal when a drop happens,
and finally a signal@Gtk.DropTargetAsync::drag-leave signal when the
pointer moves off the widget.
The ::drag-enter and ::drag-motion handler return a gdk.types.DragAction
to update the status of the ongoing operation. The ::drop handler
should decide if it ultimately accepts the drop and if it does, it
should initiate the data transfer and finish the operation by calling
gdk.drop.Drop.finish.
Between the ::drag-enter and ::drag-leave signals the widget is a
current drop target, and will receive the gtk.types.StateFlags.DropActive
state, which can be used by themes to style the widget as a drop target.
gtk.drop_target_async.DropTargetAsync is an event controller to receive Drag-and-Drop operations, asynchronously.
It is the more complete but also more complex method of handling drop operations compared to gtk.drop_target.DropTarget, and you should only use it if gtk.drop_target.DropTarget doesn't provide all the features you need.
To use a gtk.drop_target_async.DropTargetAsync to receive drops on a widget, you create a gtk.drop_target_async.DropTargetAsync object, configure which data formats and actions you support, connect to its signals, and then attach it to the widget with gtk.widget.Widget.addController.
During a drag operation, the first signal that a gtk.drop_target_async.DropTargetAsync emits is gtk.drop_target_async.DropTargetAsync.accept, which is meant to determine whether the target is a possible drop site for the ongoing drop. The default handler for the ::accept signal accepts the drop if it finds a compatible data format and an action that is supported on both sides.
If it is, and the widget becomes a target, you will receive a signal@Gtk.DropTargetAsync::drag-enter signal, followed by signal@Gtk.DropTargetAsync::drag-motion signals as the pointer moves, optionally a gtk.drop_target_async.DropTargetAsync.drop signal when a drop happens, and finally a signal@Gtk.DropTargetAsync::drag-leave signal when the pointer moves off the widget.
The ::drag-enter and ::drag-motion handler return a gdk.types.DragAction to update the status of the ongoing operation. The ::drop handler should decide if it ultimately accepts the drop and if it does, it should initiate the data transfer and finish the operation by calling gdk.drop.Drop.finish.
Between the ::drag-enter and ::drag-leave signals the widget is a current drop target, and will receive the gtk.types.StateFlags.DropActive state, which can be used by themes to style the widget as a drop target.