GtkDropTargetAsync

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.

struct GtkDropTargetAsync