On Mon, 2007-10-29 at 11:29 +0000, Dave Howorth wrote: > Firstly, my tree has more than one column and as soon as I change the > call to MyTreeStore->new to have more than one column, I get the error > again e.g.: > > my $tree_store = MyTreeStore->new(qw/Glib::String Glib::Int/); > > type MyTreeStore does not support property 'Glib::String' > > At least I now know that the error is caused by multiple args. Any idea > on how to make the constructor work for trees with multiple columns? > I'll keep experimenting.
Ah. This happens because you get Glib::Object::new by default for custom subclasses. This would be fixable by using Gtk2::TreeStore::set_column_types in a custom new(), but see below. > I don't think my code is where I need it to be overridden. I don't have > any plans to call drag_data_received. It's called automatically by gtk+ > as part of the treeview drag'n'drop mechanism. What I do want to do is > influence what it does. From what you say, I suspect I can't to this. I see. Unfortunately, it doesn't seem to be possible to override just one interface method of some class (like row-drop-possible). You have to implement the whole interface, and that means implementing a completely custom tree model. But I think you can achieve what you want by using Gtk2::Widget's d'n'd stuff. For example: $view->signal_connect(drag_data_received => sub { my ($view, $context, $x, $y, $data, $info, $time) = @_; my ($model, $src) = $data->get_row_drag_data; my ($dest, $pos) = $view->get_drag_dest_row; return unless defined $dest; # If src and dest aren't on the same level or the user tries to move a # child into another ... if ($src->get_depth != $dest->get_depth || ($pos ne 'after' && $pos ne 'before')) { # ... inhibit the drop by giving the context an empty status, ... $context->status ([], $time); # ... and tell the tree view to not draw drop thingies. $view->set_drag_dest_row (undef, 'before'); return; } }); (Complete program attached.) -- Bye, -Torsten
inhibit-dnd.pl
Description: Perl program
_______________________________________________ gtk-perl-list mailing list gtk-perl-list@gnome.org http://mail.gnome.org/mailman/listinfo/gtk-perl-list