$rctx->dispatch($render_tree, $new_args);
};
+ implements '_method_for_fragment_name' => as {
+ my ($self, $fragment_name) = @_;
+ return $self->can("_fragment_${fragment_name}");
+ };
+
implements '_render_dispatch_order' => as {
my ($self, $fragment_name, $args, $new_args) = @_;
my @render_stack = (my $render_deep = (my $render_curr = []));
my @layout_order = $self->layout_set->widget_order_for($fragment_name);
- if (my $f_meth = $self->can("_fragment_${fragment_name}")) {
+ if (my $f_meth = $self->_method_for_fragment_name($fragment_name)) {
my @wclass_stack;
my $do_render = sub {
my $package = shift;
my ($self, $do_render, $args, $new_args) = @_;
my $vp = $args->{'_'};
my ($widget, $merge_args) = $self->view->render_viewport_args($vp);
+ delete @{$new_args}{keys %$new_args}; # fresh start
@{$new_args}{keys %$merge_args} = values %$merge_args;
$do_render->(Widget, $widget, 'widget');
};
implements '_fragment_widget' => as {
my ($self, $do_render, $args, $new_args) = @_;
my $merge = $self->basic_layout_args;
+#warn "Merge: ".join(', ', keys %$merge)." into: ".join(', ', keys %$new_args);
delete @{$merge}{keys %$new_args}; # nuke 'self' and 'viewport'
@{$new_args}{keys %$merge} = values %$merge;
};