Question: is this a bug? The only alternate behaviour I can come up with is that SetEvent(), rather than setting the NEM flag, should check it and bail out if it is not set (with a warning?). [The current behaviour is useful if you are sub-classing a control, and do not know which method a user of the control will want to use.]
Surely running both NEM and OEM code for the same event is a bug? In other words, a successful NEM call still causes the OEM logic to be run. If you happen to have an sub that matches, then you get two events being processed for a single event. See the code below for a better explanation:)
I've just tried to follow the logic in DoEvent and the if statement that checks to see if we need to run OEM seems suspect (well, in the context of a NEM/SetEvent)?
$|=1; use strict; use Win32::GUI; my $W = new Win32::GUI::Window( -name => "TestWindow", -pos => [ 0, 0], -size => [210, 200], -text => "TestWindow", ); $W->AddButton ( -name => "Start", -pos => [65,5], -text => "&Start", -tabstop => 1, #-onClick => sub {print 'clicked'}, ); #add the events to the button $W->Start->SetEvent('Click',sub {print 'clicked'}); $W->Show; Win32::GUI::Dialog(); sub Start_Click { print 'start click'; }