diff -u -r ORIG/gtk3_moose_with_builder.pl NEW/gtk3_moose_with_builder.pl --- ORIG/gtk3_moose_with_builder.pl 2014-05-13 09:33:48.941813572 +0300 +++ NEW/gtk3_moose_with_builder.pl 2014-05-13 09:38:19.203687439 +0300 @@ -38,9 +38,19 @@ ); has 'builder' => ( is => 'rw', - isa => 'Gtk3::Builder', + lazy => 1, + # isa => 'Gtk3::Builder', default => sub { - return Gtk3::Builder->new; + my ( $self ) = @_; + my $ret = Gtk3::Builder->new; + + if (!defined($ret)) { + die "Cannot init Gtk3::Builder"; + } + $ret->add_from_file($self->ui_file); + $ret->connect_signals(undef); + + return $ret; }, trigger => sub { my ( $self ) = @_; @@ -53,7 +63,7 @@ #-------------------- # I believe this is causing the problem. #-------------------- - isa => 'GObject', + # isa => 'GObject', #isa => 'Gtk3::Object', lazy_build => 1, trigger => sub { @@ -63,10 +73,17 @@ ); sub _build_root_window { my ( $self ) = @_; + #-------------------- # I believe this is causing the problem. #-------------------- - return $self->builder->get_object('toplevel'); + my $ret = $self->builder->get_object('toplevel'); + + if (!defined($ret)) { + die "Could not get toplevel object."; + } + + return $ret; } sub quit_app { Gtk3->main_quit; Only in NEW/: gtk3_moose_with_builder.pl~