DropTargetRef

public struct DropTargetRef : DropTargetProtocol, GWeakCapturing

GtkDropTarget is an event controller to receive Drag-and-Drop operations.

The most basic way to use a GtkDropTarget to receive drops on a widget is to create it via [ctorGtk.DropTarget.new], passing in the GType of the data you want to receive and connect to the [signalGtk.DropTarget::drop] signal to receive the data:

static gboolean
on_drop (GtkDropTarget *target,
         const GValue  *value,
         double         x,
         double         y,
         gpointer       data)
{
  MyWidget *self = data;

  // Call the appropriate setter depending on the type of data
  // that we received
  if (G_VALUE_HOLDS (value, G_TYPE_FILE))
    my_widget_set_file (self, g_value_get_object (value));
  else if (G_VALUE_HOLDS (value, GDK_TYPE_PIXBUF))
    my_widget_set_pixbuf (self, g_value_get_object (value));
  else
    return FALSE;

  return TRUE;
}

static void
my_widget_init (MyWidget *self)
{
  GtkDropTarget *target =
    gtk_drop_target_new (G_TYPE_INVALID, GDK_ACTION_COPY);

  // This widget accepts two types of drop types: GFile objects
  // and GdkPixbuf objects
  gtk_drop_target_set_gtypes (target, (GTypes [2]) {
    G_TYPE_FILE,
    GDK_TYPE_PIXBUF,
  }, 2);

  gtk_widget_add_controller (GTK_WIDGET (self), GTK_EVENT_CONTROLLER (target));
}

GtkDropTarget supports more options, such as:

  • rejecting potential drops via the [signalGtk.DropTarget::accept] signal and the [methodGtk.DropTarget.reject] function to let other drop targets handle the drop
  • tracking an ongoing drag operation before the drop via the [signalGtk.DropTarget::enter], [signalGtk.DropTarget::motion] and [signalGtk.DropTarget::leave] signals
  • configuring how to receive data by setting the [propertyGtk.DropTarget:preload] property and listening for its availability via the [propertyGtk.DropTarget:value] property

However, GtkDropTarget is ultimately modeled in a synchronous way and only supports data transferred via GType. If you want full control over an ongoing drop, the [classGtk.DropTargetAsync] object gives you this ability.

While a pointer is dragged over the drop target’s widget and the drop has not been rejected, that widget will receive the GTK_STATE_FLAG_DROP_ACTIVE state, which can be used to style the widget.

If you are not interested in receiving the drop, but just want to update UI state during a Drag-and-Drop operation (e.g. switching tabs), you can use [classGtk.DropControllerMotion].

The DropTargetRef type acts as a lightweight Swift reference to an underlying GtkDropTarget instance. It exposes methods that can operate on this data type through DropTargetProtocol conformance. Use DropTargetRef only as an unowned reference to an existing GtkDropTarget instance.

  • ptr
    Untyped pointer to the underlying `GtkDropTarget` instance.
    

    For type-safe access, use the generated, typed pointer drop_target_ptr property instead.

    Declaration

    Swift

    public let ptr: UnsafeMutableRawPointer!

DropTarget Class

  • Designated initialiser from the underlying C data type

    Declaration

    Swift

    @inlinable
    init(_ p: UnsafeMutablePointer<GtkDropTarget>)
  • Designated initialiser from a constant pointer to the underlying C data type

    Declaration

    Swift

    @inlinable
    init(_ p: UnsafePointer<GtkDropTarget>)
  • Conditional initialiser from an optional pointer to the underlying C data type

    Declaration

    Swift

    @inlinable
    init!(_ maybePointer: UnsafeMutablePointer<GtkDropTarget>?)
  • Conditional initialiser from an optional, non-mutable pointer to the underlying C data type

    Declaration

    Swift

    @inlinable
    init!(_ maybePointer: UnsafePointer<GtkDropTarget>?)
  • Conditional initialiser from an optional gpointer

    Declaration

    Swift

    @inlinable
    init!(gpointer g: gpointer?)
  • Conditional initialiser from an optional, non-mutable gconstpointer

    Declaration

    Swift

    @inlinable
    init!(gconstpointer g: gconstpointer?)
  • Reference intialiser for a related type that implements DropTargetProtocol

    Declaration

    Swift

    @inlinable
    init<T>(_ other: T) where T : DropTargetProtocol
  • This factory is syntactic sugar for setting weak pointers wrapped in GWeak<T>

    Declaration

    Swift

    @inlinable
    static func unowned<T>(_ other: T) -> DropTargetRef where T : DropTargetProtocol
  • Unsafe typed initialiser. Do not use unless you know the underlying data type the pointer points to conforms to DropTargetProtocol.

    Declaration

    Swift

    @inlinable
    init<T>(cPointer: UnsafeMutablePointer<T>)
  • Unsafe typed initialiser. Do not use unless you know the underlying data type the pointer points to conforms to DropTargetProtocol.

    Declaration

    Swift

    @inlinable
    init<T>(constPointer: UnsafePointer<T>)
  • Unsafe untyped initialiser. Do not use unless you know the underlying data type the pointer points to conforms to DropTargetProtocol.

    Declaration

    Swift

    @inlinable
    init(mutating raw: UnsafeRawPointer)
  • Unsafe untyped initialiser. Do not use unless you know the underlying data type the pointer points to conforms to DropTargetProtocol.

    Declaration

    Swift

    @inlinable
    init(raw: UnsafeMutableRawPointer)
  • Unsafe untyped initialiser. Do not use unless you know the underlying data type the pointer points to conforms to DropTargetProtocol.

    Declaration

    Swift

    @inlinable
    init(opaquePointer: OpaquePointer)
  • Creates a new `GtkDropTarget` object.
    

    If the drop target should support more than 1 type, pass G_TYPE_INVALID for type and then call [methodGtk.DropTarget.set_gtypes].

    Declaration

    Swift

    @inlinable
    init(type: GType, actions: Gdk.DragAction)