On 15.05.2018 11:26, Jeff wrote:
> Thanks for this. Very helpful. Where should I have looked to know that
> the Perl method names were simply capitalised versions of the C methods?

It's been like this in Gtk2, but it wasn't written down anywhere for the
introspection-based bindings.  I added a few words now:
<https://git.gnome.org/browse/perl-Glib-Object-Introspection/commit/?id=2046d7494833aeff538fdbe578ecba0c4788eec9>.
 Would this have helped?

> I don't understand what is going on in the signal version, though. If
> the callback for the open signal is:
> 
> sub _open {
>     my ($app, $files, $nfiles, $arg3) = @_;
>     print "files: $files, $nfiles, $arg3\n";
>     use Data::Dumper;
>     print Dumper($files, $nfiles, $arg3);
> }
> 
> I get output like:
> 
> files: 94684537255296, 1,
> $VAR1 = '94684537255296';
> $VAR2 = 1;
> $VAR3 = '';
> 
> What is going on?

Well, the answer should have been that you need to use the following to
get the signal properly marshalled:

  Glib::Object::Introspection->setup(
    basename => 'Gio',
    version => '2.0',
    package => 'Glib::IO',
    use_generic_signal_marshaller_for => [
      ['Glib::IO::Application', 'open']
    ]);

(Or to get Glib::IO to do it for you.)

Unfortunately, there are two bugs that prevent this from working.  One
is on our side and is quick to fix:
<https://git.gnome.org/browse/perl-Glib-Object-Introspection/commit/?id=2162a9b16a08fbbc9fd7ef2cc85e482ff149c373>.
 The other is on gio's side and needs to go through their patch approval
process before it can go in:
<https://bugzilla.gnome.org/show_bug.cgi?id=796272>.  Once this has been
accepted, it also needs to be merged into gobject-introspection to be
effective.
_______________________________________________
gtk-perl-list mailing list
gtk-perl-list@gnome.org
https://mail.gnome.org/mailman/listinfo/gtk-perl-list

Reply via email to