gtkDragDestSet {RGtk2} | R Documentation |
Sets a widget as a potential drop destination, and adds default behaviors.
gtkDragDestSet(object, flags, targets, actions)
|
|
|
which types of default drag behavior to use |
|
a pointer to a list of |
|
a bitmask of possible actions for a drop onto this |
The default behaviors listed in flags
have an effect similar
to installing default handlers for the widget's drag-and-drop signals
(
"drag-motion",
"drag-drop", ...). They all exist for convenience. When passing
GTK_DEST_DEFAULT_ALLfor instance it is sufficient to connect to the widget's
"drag-data-received"signal to get primitive, but consistent drag-and-drop support. Things become more complicated when you try to preview the dragged data, as described in the documentation for
"drag-motion". The default behaviors described by
flags
make some assumptions, that can conflict
with your own signal handlers. For instance GTK_DEST_DEFAULT_DROPcauses invokations of
gdkDragStatus
in the context of "drag-motion", and invokations of
gtkDragFinish
in "drag-data-received". Especially the later is dramatic, when your own
"drag-motion"handler calls
gtkDragGetData
to inspect the dragged data.
There's no way to set a default action here, you can use the
"drag-motion"callback for that. Here's an example which selects the action to use depending on whether the control key is pressed or not:
static void drag_motion (GtkWidget *widget, GdkDragContext *context, gint x, gint y, guint time) { GdkModifierType mask; gdk_window_get_pointer (gtk_widget_get_window (widget), NULL, NULL, &mask); if (mask & GDK_CONTROL_MASK) gdk_drag_status (context, GDK_ACTION_COPY, time); else gdk_drag_status (context, GDK_ACTION_MOVE, time); }
Derived by RGtkGen from GTK+ documentation