On 01/12/2018 00:36, Emmanuele Bassi wrote:
On Fri, 30 Nov 2018 at 19:09, Jeff via gtk-perl-list <gtk-perl-list gnome org <mailto:gtk-perl-list gnome org>> wrote: Whilst working up a smallest working example for another bug, I've discovered that I cannot get subclassing working when the main package is in the same file as the module. Below is the Gtk2 subclassing example from Muppet which I have trivially converted to Gtk3. Your GTK 3 port is wrong.
Grrr. Thanks for the feedback. The example I originally had was that below, which I replaced with the one from the previous email to eliminate the GooCanvas2 dependency. As the error seemed to have the same source, I thought it would be simpler. Sorry for wasting your time. The code below is cut down from that in gscan2pdf, where in a separate file, the subclass, and thus the add_events() call works fine. Here, I get: Can't locate object method "add_events" via package "My::Canvas" at gtk3-subclass2.pl line 15. I still can't work out why and would appreciate some insight. Regards Jeff #!/usr/bin/perl -w use strict; package My::Canvas; use strict; use warnings; use GooCanvas2; use Glib::Object::Subclass GooCanvas2::Canvas::; sub INIT_INSTANCE { my $self = shift; $self->add_events( Glib::Object::Introspection->convert_sv_to_flags( 'Gtk3::Gdk::EventMask', 'exposure-mask' ) | Glib::Object::Introspection->convert_sv_to_flags( 'Gtk3::Gdk::EventMask', 'button-press-mask' ) | Glib::Object::Introspection->convert_sv_to_flags( 'Gtk3::Gdk::EventMask', 'button-release-mask' ) | Glib::Object::Introspection->convert_sv_to_flags( 'Gtk3::Gdk::EventMask', 'pointer-motion-mask' ) | Glib::Object::Introspection->convert_sv_to_flags( 'Gtk3::Gdk::EventMask', 'scroll-mask' ) ); return $self; } package main; use strict; use warnings; use Gtk3 -init; use GooCanvas2; my $window = Gtk3::Window->new(); $window->set_default_size(640, 600); $window->signal_connect('destroy' => sub {Gtk3->main_quit()}); my $canvas = My::Canvas->new(); $window->add($canvas); $window->show_all; Gtk3->main();
Attachment:
signature.asc
Description: OpenPGP digital signature