[Gtk-sharp-list] Drag & Drop between two TreeViews

Yves Kurz ml_yves@magnific.ch
Mon, 20 Oct 2003 22:32:10 +0200


I'm learning to use gtk# and came to a point where I need help from
someone else.
To learn more about the TreeView widget I created an application which
locks pretty similar to gftp. Now I would like to be able to drag files
one TreeView to an other one. 
How is that done in gtk#. The only documentation I could find is the gtk
tutorial but it's not 1:1 portable from c to gtk#.

This is what I did.. It's not working. 
TargetEntry te = new TargetEntry ();
te.flags = (int)TargetFlags.Widget;
te.target = "STRING"; 
Gtk.Drag.SourceSet (treeView, Gdk.ModifierType.Button1Mask, te, 1,
Gtk.Drag.DestSetTargetList (treeView, TargetList.New (te, 1));
treeView.DragDataGet += new DragDataGetHandler (ddgh);
treeView.DragDataReceived += new DragDataReceivedHandler (ddrh);

void ddgh (object sender, DragDataGetArgs args) {
	Console.WriteLine ("DragDataGet..");
	args.SelectionData.Text = "text";
void ddrh (object sender, DragDataReceivedArgs args){
	Console.WriteLine("DragDataReceived... info: "+
	args.Info+" X: "+args.X+" Y: "+args.Y+" selection Data: "+ 
	args.SelectionData.Data + " text: " +

By running the program i get:
Gtk-WARNING **: can't set a target list on a widget until you've called
gtk_drag_dest_set() to make the widget into a drag destination

Then I made a grep trough the gtk# source files to find a class where
gtk_drag_dest_set is used but I haven't found anything.

Any help is highly welcome.. Thank you very much