On 24 February 2018 at 12:10, Jeff <jf...@posteo.net> wrote:
> I've almost got drag'n'drop working in Gtk3, but I'm just missing the
> final piece:
>
> To finish a drag in Gtk2, you call finish() on the context, typically like:
>
>  $context->finish(1, $delete, time);
>
> If I do this in Gtk3, I get:
>
> *** unhandled exception in callback:
> ***   Can't locate object method "finish" via package
> "Glib::Object::_Unregistered::GdkX11DragContext" at ../gtk3_iconview.pl
> line 251.
> ***  ignoring at /usr/share/perl5/Gtk3.pm line 546.
>
> I can't find any docs or examples for dnd and Gtk3 in Perl, but the C
> docs describes finish:
>
> https://developer.gnome.org/gtk3/stable/gtk3-Drag-and-Drop.html#gtk-drag-finish
>
> This python example doesn't finish the drag:
>
> https://python-gtk-3-tutorial.readthedocs.io/en/latest/drag_and_drop.html
>
> So - what is the Perl equivalent of gtk_drag_finish()?

The issue is that the GTK drag and drop API lives in the GTK
namespace, but operates on a GdkDragContext object under the GDK
namespace. This is not allowed with introspection-based bindings,
because the method cannot be reconciled with the object.

Of course, this is perfectly valid at the C level, because there are
only functions. Which means that the gtk_drag_* API has to be treated
as functions, e.g.:

  Gtk3::drag_finish($context, $delete, time);

The old Gtk2 bindings would "cheat", and move the API under the
GdkDragContext namespace, hence the change.

Ciao,
 Emmanuele.
_______________________________________________
gtk-perl-list mailing list
gtk-perl-list@gnome.org
https://mail.gnome.org/mailman/listinfo/gtk-perl-list

Reply via email to