diff --git a/ui-lib.pl b/ui-lib.pl index 3628890da..8e44f152f 100644 --- a/ui-lib.pl +++ b/ui-lib.pl @@ -9,6 +9,12 @@ sub ui_table_start { return &theme_ui_table_start(@_) if (defined(&theme_ui_table_start)); local ($heading, $tabletags, $cols, $tds) = @_; +if (defined($main::ui_table_cols)) { + # Push on stack, for nested call + push(@main::ui_table_cols_stack, $main::ui_table_cols); + push(@main::ui_table_pos_stack, $main::ui_table_pos); + push(@main::ui_table_default_tds_stack, $main::ui_table_default_tds); + } local $rv; $rv .= "\n"; $rv .= "\n" if (defined($heading)); @@ -29,7 +35,16 @@ if ($main::ui_table_cols == 4 && $main::ui_table_pos) { # Add an empty block to balance the table $rv .= &ui_table_row(" ", " "); } -$main::ui_table_default_tds = undef; +if (@main::ui_table_cols_stack) { + $main::ui_table_cols = pop(@main::ui_table_cols_stack); + $main::ui_table_pos = pop(@main::ui_table_pos_stack); + $main::ui_table_default_tds = pop(@main::ui_table_default_tds_stack); + } +else { + $main::ui_table_cols = undef; + $main::ui_table_pos = undef; + $main::ui_table_default_tds = undef; + } $rv .= "
$heading
\n"; return $rv; }