diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/account.h | 9 | ||||
-rw-r--r-- | src/output.cc | 16 |
2 files changed, 11 insertions, 14 deletions
diff --git a/src/account.h b/src/account.h index 494c25a2..dfa6eba5 100644 --- a/src/account.h +++ b/src/account.h @@ -118,11 +118,10 @@ class account_t : public scope_t struct xdata_t : public supports_flags<> { -#define ACCOUNT_EXT_TO_DISPLAY 0x01 -#define ACCOUNT_EXT_DISPLAYED 0x02 -#define ACCOUNT_EXT_SORT_CALC 0x04 -#define ACCOUNT_EXT_HAS_NON_VIRTUALS 0x08 -#define ACCOUNT_EXT_HAS_UNB_VIRTUALS 0x10 +#define ACCOUNT_EXT_DISPLAYED 0x01 +#define ACCOUNT_EXT_SORT_CALC 0x02 +#define ACCOUNT_EXT_HAS_NON_VIRTUALS 0x04 +#define ACCOUNT_EXT_HAS_UNB_VIRTUALS 0x08 value_t value; value_t total; diff --git a/src/output.cc b/src/output.cc index b9af9a27..cd28e58c 100644 --- a/src/output.cc +++ b/src/output.cc @@ -242,14 +242,11 @@ void format_accounts::flush() void format_accounts::operator()(account_t& account) { - if (display_account(account)) { - if (! account.parent) { - account.xdata().add_flags(ACCOUNT_EXT_TO_DISPLAY); - } else { - bind_scope_t bound_scope(report, account); - format.format(report.output_stream, bound_scope); - account.xdata().add_flags(ACCOUNT_EXT_DISPLAYED); - } + // Never display the top-most account (the "root", or master, account) + if (account.parent && display_account(account)) { + bind_scope_t bound_scope(report, account); + format.format(report.output_stream, bound_scope); + account.xdata().add_flags(ACCOUNT_EXT_DISPLAYED); } } @@ -265,6 +262,8 @@ bool format_accounts::disp_subaccounts_p(account_t& account, to_show = NULL; + bind_scope_t account_scope(report, account); + foreach (accounts_map::value_type pair, account.accounts) { if (! should_display(*pair.second)) continue; @@ -273,7 +272,6 @@ bool format_accounts::disp_subaccounts_p(account_t& account, call_scope_t args(bound_scope); result = report.fn_total_expr(args); if (! computed) { - bind_scope_t account_scope(report, account); call_scope_t args(account_scope); acct_total = report.fn_total_expr(args); computed = true; |