X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FReaction%2FUI%2FWidget.pm;h=3a9bc5c9ed2a5ba14501090560eb327c8df56378;hb=8909345a99d2a873345a3e873b07f3bff8e42c7e;hp=2c7e00c2192ab2e825e66f8cc765de8694436dbf;hpb=1c41e332e495bee30ba8c31d44023fddb7e2602b;p=catagits%2FReaction.git diff --git a/lib/Reaction/UI/Widget.pm b/lib/Reaction/UI/Widget.pm index 2c7e00c..3a9bc5c 100644 --- a/lib/Reaction/UI/Widget.pm +++ b/lib/Reaction/UI/Widget.pm @@ -7,6 +7,9 @@ use aliased 'Reaction::UI::LayoutSet'; class Widget which { + sub DEBUG_FRAGMENTS () { $ENV{REACTION_UI_WIDGET_DEBUG_FRAGMENTS} } + sub DEBUG_LAYOUTS () { $ENV{REACTION_UI_WIDGET_DEBUG_LAYOUTS} } + has 'view' => (isa => View, is => 'ro', required => 1); has 'layout_set' => (isa => LayoutSet, is => 'ro', required => 1); has 'fragment_names' => (is => 'ro', lazy_build => 1); @@ -25,7 +28,13 @@ class Widget which { implements 'render' => as { my ($self, $fragment_name, $rctx, $passed_args) = @_; confess "\$passed_args not hashref" unless ref($passed_args) eq 'HASH'; -#warn "Render: ${fragment_name} for ${self}"; + if (DEBUG_FRAGMENTS) { + my $vp = $passed_args->{viewport}; + $self->view->app->log->debug( + "Rendering fragment ${fragment_name} for ".ref($self) + ." for VP ${vp} at ".$vp->location + ); + } my $args = { self => $self, %$passed_args }; my $new_args = { %$args }; my $render_tree = $self->_render_dispatch_order( @@ -54,6 +63,11 @@ class Widget which { || $layout_order[0][0]->isa($package)) { my $new_curr = []; my @l = @{shift(@layout_order)}; + if (DEBUG_LAYOUTS) { + $self->view->app->log->debug( + "Layout ${fragment_name} in ${\$l[1]->name} from ${\$l[1]->source_file}" + ); + } push(@$render_curr, [ -layout, $l[1], $fragment_name, $new_curr ]); push(@render_stack, $new_curr); push(@wclass_stack, $l[0]); @@ -75,6 +89,11 @@ class Widget which { # if we had no fragment method or if we still have layouts left if (@layout_order) { while (my $l = shift(@layout_order)) { + if (DEBUG_LAYOUTS) { + $self->view->app->log->debug( + "Layout ${fragment_name} in ${\$l->[1]->name} from ${\$l->[1]->source_file}" + ); + } push(@$render_deep, [ -layout => $l->[1], $fragment_name, ($render_deep = []) ]); @@ -98,6 +117,7 @@ class Widget which { my ($self, $do_render, $args, $new_args) = @_; my $vp = $args->{'_'}; my ($widget, $merge_args) = $self->view->render_viewport_args($vp); + $merge_args->{outer} = { %$new_args }; delete @{$new_args}{keys %$new_args}; # fresh start @{$new_args}{keys %$merge_args} = values %$merge_args; $do_render->(Widget, $widget, 'widget');