Am Dienstag, den 11.12.2007, 14:46 +0100 schrieb Murray Cumming: > As the attached test case shows, this problem is fixed by calling > gtk_drag_dest_set() with 0 instead of GTK_DEST_DEFAULT_ALL (0 causes the > targets array to be ignored too, but just passing NULL for the targets > doesn't change the behaviour.) The meaning of gtk_drag_dest_set's flags argument is to install default behaviors, so that you have just a few signal handlers for implementing primitive DnD support. With GTK_DEST_DEFAULT_ALL for instance you just have to connect the "drag-data-received" signal to get primitive DnD support suitable for accepting plain text. I've updated the documentation for gtk_drag_dest_set and GtkWidget:drag-motion: gtk_drag_dest_set: Sets a widget as a potential drop destination, and adds default behaviors. 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_ALL for 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_DROP causes invokations of gdk_drag_status() in the context of "drag-motion", and invokations of gtk_drag_finish() in "drag-data-received". Especially the later is dramatic, when your own "drag-motion" handler calls gtk_drag_get_data() to inspect the dragged data. widget : a GtkWidget flags : which types of default drag behavior to use targets : a pointer to an array of GtkTargetEntrys indicating the drop types that this widget will accept. Later you can access the list with gtk_drag_dest_get_target_list() and gtk_drag_dest_find_target(). n_targets : the number of entries in targets. actions : a bitmask of possible actions for a drop onto this widget. GtkWidget:drag-motion: [...] Note that you cannot not pass GTK_DEST_DEFAULT_DROP, GTK_DEST_DEFAULT_MOTION or GTK_DEST_DEFAULT_ALL to gtk_drag_dest_set() when using the drag-motion signal that way. [...] Ciao, Mathias -- Mathias Hasselmann <mathias openismus com> www.openismus.com -- Mathias Hasselmann <mathias hasselmann gmx de> http://taschenorakel.de/
Attachment:
signature.asc
Description: Dies ist ein digital signierter Nachrichtenteil