cvsuser 02/03/12 09:01:27
Modified: P5EEx/Blue/P5EEx/Blue/Context CGI.pm
Log:
detect lightweight widgets and propagate events directly to their containers
Revision Changes Path
1.9 +14 -2 p5ee/P5EEx/Blue/P5EEx/Blue/Context/CGI.pm
Index: CGI.pm
===================================================================
RCS file: /cvs/public/p5ee/P5EEx/Blue/P5EEx/Blue/Context/CGI.pm,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -w -r1.8 -r1.9
--- CGI.pm 6 Mar 2002 23:02:37 -0000 1.8
+++ CGI.pm 12 Mar 2002 17:01:27 -0000 1.9
@@ -1,6 +1,6 @@
#############################################################################
-## $Id: CGI.pm,v 1.8 2002/03/06 23:02:37 spadkins Exp $
+## $Id: CGI.pm,v 1.9 2002/03/12 17:01:27 spadkins Exp $
#############################################################################
package P5EEx::Blue::Context::CGI;
@@ -461,7 +461,19 @@
#$self->add_message("Event (input): name=[$name]
event=[$event] args=[@args]\n");
$self->dbgprint(ref($self), "->process_request(button):
$name->$event(@args)")
if ($P5EEx::Blue::DEBUG && $self->dbg(1));
+ if ($self->widget_exists($name)) {
$self->widget($name)->handle_event($name, $event, @args);
+ }
+ else {
+ my ($parent_name);
+ $parent_name = $name;
+ while ($parent_name =~ s/\.[^\.]+$//) {
+ if ($self->widget_exists($parent_name)) {
+
$self->widget($parent_name)->handle_event($name, $event, @args);
+ last;
+ }
+ }
+ }
}
}
elsif ($key eq "p5ee.event") {