Class

GtkDropTarget

Description [src]

final class Gtk.DropTarget : Gtk.EventController {
  /* No available fields */
}

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 gtk_drop_target_new(), passing in the GType of the data you want to receive and connect to the GtkDropTarget::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:

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 GtkDropTargetAsync 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 GtkDropControllerMotion.

Hierarchy

hierarchy this GtkDropTarget ancestor_0 GtkEventController ancestor_0--this ancestor_1 GObject ancestor_1--ancestor_0

Constructors

gtk_drop_target_new

Creates a new GtkDropTarget object.

Instance methods

gtk_drop_target_get_actions

Gets the actions that this drop target supports.

gtk_drop_target_get_current_drop

Gets the currently handled drop operation.

Available since: 4.4

gtk_drop_target_get_drop

Gets the currently handled drop operation.

Deprecated since: 4.4

gtk_drop_target_get_formats

Gets the data formats that this drop target accepts.

gtk_drop_target_get_gtypes

Gets the list of supported GTypes that can be dropped on the target.

gtk_drop_target_get_preload

Gets whether data should be preloaded on hover.

gtk_drop_target_get_value

Gets the current drop data, as a GValue.

gtk_drop_target_reject

Rejects the ongoing drop operation.

gtk_drop_target_set_actions

Sets the actions that this drop target supports.

gtk_drop_target_set_gtypes

Sets the supported GTypes for this drop target.

gtk_drop_target_set_preload

Sets whether data should be preloaded on hover.

Methods inherited from GtkEventController (12)
gtk_event_controller_get_current_event

Returns the event that is currently being handled by the controller.

gtk_event_controller_get_current_event_device

Returns the device of the event that is currently being handled by the controller.

gtk_event_controller_get_current_event_state

Returns the modifier state of the event that is currently being handled by the controller.

gtk_event_controller_get_current_event_time

Returns the timestamp of the event that is currently being handled by the controller.

gtk_event_controller_get_name

Gets the name of controller.

gtk_event_controller_get_propagation_limit

Gets the propagation limit of the event controller.

gtk_event_controller_get_propagation_phase

Gets the propagation phase at which controller handles events.

gtk_event_controller_get_widget

Returns the GtkWidget this controller relates to.

gtk_event_controller_reset

Resets the controller to a clean state.

gtk_event_controller_set_name

Sets a name on the controller that can be used for debugging.

gtk_event_controller_set_propagation_limit

Sets the event propagation limit on the event controller.

gtk_event_controller_set_propagation_phase

Sets the propagation phase at which a controller handles events.

Methods inherited from GObject (42)

Properties

Gtk.DropTarget:actions

The GdkDragActions that this drop target supports.

Gtk.DropTarget:current-drop

The GdkDrop that is currently being performed.

Available since: 4.4

Gtk.DropTarget:drop

The GdkDrop that is currently being performed.

Deprecated since: 4.4

Gtk.DropTarget:formats

The GdkContentFormats that determine the supported data formats.

Gtk.DropTarget:preload

Whether the drop data should be preloaded when the pointer is only hovering over the widget but has not been released.

Gtk.DropTarget:value

The value for this drop operation.

Properties inherited from GtkEventController (4)
Gtk.EventController:name

The name for this controller, typically used for debugging purposes.

Gtk.EventController:propagation-limit

The limit for which events this controller will handle.

Gtk.EventController:propagation-phase

The propagation phase at which this controller will handle events.

Gtk.EventController:widget

The widget receiving the GdkEvents that the controller will handle.

Signals

Gtk.DropTarget::accept

Emitted on the drop site when a drop operation is about to begin.

Gtk.DropTarget::drop

Emitted on the drop site when the user drops the data onto the widget.

Gtk.DropTarget::enter

Emitted on the drop site when the pointer enters the widget.

Gtk.DropTarget::leave

Emitted on the drop site when the pointer leaves the widget.

Gtk.DropTarget::motion

Emitted while the pointer is moving over the drop target.

Signals inherited from GObject (1)

Class structure

struct GtkDropTargetClass {
  /* no available fields */
}