http://www.perlmonks.org?node_id=1129322


in reply to Re^2: Different behavior for Moo and Moose with Wx?
in thread Different behavior for Moo and Moose with Wx?

Thanks for the feedback, unfortunately fixing the extended class name does not solve the problem :(

Well, not surprising, fixing thinkos rarely fixes "bugs" :)

Well, it might be considered a bug that Moo isn't as helpful as Moose, Moose actually checks the class is blessed into the right, Moo doesn't

Quick workaround is

sub MenuBar::Item::BUILD { my $self = shift; bless $self, __PACKAGE__ ; $self->Append( $self->item_quit ); return $self; }

Now why doesn't Wx::Menu obey the common rules of subclassing/inheritance, well not all things in wxPerl are mean to be subclasses, and indeed menu/menubar are indeed odd candidates for that ... some of this is explained in Re: wxperl-users scalar reference objects?

As you can see a Wx::Menu isn't a hashref, its a scalar ref

#!/usr/bin/perl -- use Wx qw[ :allclasses ]; { package MMenu; use base qw/ Wx::Menu /; 1; } { package MFrame; use base qw/ Wx::Frame /; 1; } package main; print join "\n", MMenu->new, MFrame->new, ;;;;; __END__ Wx::Menu=SCALAR(0x3f9afc) MFrame=HASH(0x99b30c)

FWIW, not everything needs to be subclasses, ex wxperl_usage

Replies are listed 'Best First'.
Re^4: Different behavior for Moo and Moose with Wx?
by stefbv (Curate) on Jun 07, 2015 at 14:31 UTC

    Thank you, for the explanations. I'm following the "not everything needs to be subclasses" path.

    P.S.: I didn't really think that changing 'Wx::Menu' to 'Wx::MenuItem' will fix the problem :)