X-Git-Url: http://git.vpit.fr/?p=perl%2Fmodules%2FLaTeX-TikZ.git;a=blobdiff_plain;f=lib%2FLaTeX%2FTikZ%2FSet.pm;h=655eb2fc2470f56605a271cfb8e49caa7e700614;hp=e719643a3a7fea5d64c81efd4cd873da5ee2fd4e;hb=32fbc7c8acf36e81b3c3436152e664e79c74dc87;hpb=9e8367c3ac993eb5733ab8a1b517d037f8d9b8f4 diff --git a/lib/LaTeX/TikZ/Set.pm b/lib/LaTeX/TikZ/Set.pm index e719643..655eb2f 100644 --- a/lib/LaTeX/TikZ/Set.pm +++ b/lib/LaTeX/TikZ/Set.pm @@ -58,23 +58,29 @@ sub mod { sub mods_unique { my ($set) = @_; - my (@mods, $has_layer); + my (@mods, $last_layer); MOD: for my $mod ($set->mods) { - $has_layer = 1 if $ltml_tc->check($mod); + my $is_layer = $ltml_tc->check($mod); + $last_layer = $mod if $is_layer; my $tag = $mod->tag; my $old = $mods{$tag} || []; for (@$old) { next MOD if $_->[0]->cover($mod); } - push @{$mods{$tag}}, [ $mod, $last_mod++ ]; + push @{$mods{$tag}}, [ $mod, $last_mod++, $is_layer ]; push @mods, $mod; } - if ($has_layer) { + if ($last_layer) { # Clips and mods don't propagate through layers. Hence if a layer is set, # force their reuse. - @mods = map $_->[0], sort { $a->[1] <=> $b->[1] } map @$_, values %mods; + @mods = $last_layer; + push @mods, map $_->[0], + sort { $a->[1] <=> $b->[1] } + grep !$_->[2], + map @$_, + values %mods; } return @mods;