summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/account.h9
-rw-r--r--src/output.cc16
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;