From 672cfddd6930f63aef530faf3573f75ac1417572 Mon Sep 17 00:00:00 2001 From: Robert Fewell <14uBobIT@gmail.com> Date: Fri, 3 Mar 2023 13:20:54 +0000 Subject: [PATCH] Modify commit de9c0eb to not use xaccAccountSetSortReversed Account sort order / sort by and filter by are all stored in the register with the account functions in the process of being depreciated so instead get the sort order from a new value added to SplitRegister. Also in the general ledger, there is no default account and so was causing an error in the trace file. --- gnucash/gnome/gnc-split-reg.c | 7 +++++-- gnucash/register/ledger-core/split-register-load.c | 9 ++++----- gnucash/register/ledger-core/split-register.c | 7 +++++++ gnucash/register/ledger-core/split-register.h | 9 +++++++++ gnucash/register/register-core/table-model.c | 8 ++++++++ gnucash/register/register-core/table-model.h | 7 +++++++ 6 files changed, 40 insertions(+), 7 deletions(-) diff --git a/gnucash/gnome/gnc-split-reg.c b/gnucash/gnome/gnc-split-reg.c index 3545767863d..ba26f38e7cc 100644 --- a/gnucash/gnome/gnc-split-reg.c +++ b/gnucash/gnome/gnc-split-reg.c @@ -2152,11 +2152,14 @@ gnc_split_reg_set_sort_reversed(GNCSplitReg *gsr, gboolean rev, gboolean refresh * In other words, qof_query_set_sort_increasing should * always use the inverse of rev. */ + SplitRegister *reg = gnc_ledger_display_get_split_register (gsr->ledger); Query *query = gnc_ledger_display_get_query( gsr->ledger ); + + gnc_split_register_set_reverse_sort (reg, rev); + qof_query_set_sort_increasing (query, !rev, !rev, !rev); gsr->sort_rev = rev; - Account *acct = gnc_ledger_display_leader (gsr->ledger); - xaccAccountSetSortReversed(acct, rev); + if (refresh) gnc_ledger_display_refresh( gsr->ledger ); } diff --git a/gnucash/register/ledger-core/split-register-load.c b/gnucash/register/ledger-core/split-register-load.c index 99d8df6bd8f..7448cca548e 100644 --- a/gnucash/register/ledger-core/split-register-load.c +++ b/gnucash/register/ledger-core/split-register-load.c @@ -377,7 +377,6 @@ gnc_split_register_load (SplitRegister* reg, GList* slist, gboolean need_divider_upper = FALSE; gboolean found_divider_upper = FALSE; gboolean found_divider = FALSE; - bool reverse_sort = xaccAccountGetSortReversed(default_account); gboolean has_last_num = FALSE; gboolean multi_line; gboolean dynamic; @@ -610,8 +609,8 @@ gnc_split_register_load (SplitRegister* reg, GList* slist, use_autoreadonly && !found_divider_upper) { - if (((reverse_sort && xaccTransGetDate(trans) < autoreadonly_time) || - (!reverse_sort && xaccTransGetDate (trans) >= autoreadonly_time))) + if (((table->model->reverse_sort && xaccTransGetDate(trans) < autoreadonly_time) || + (!table->model->reverse_sort && xaccTransGetDate (trans) >= autoreadonly_time))) { table->model->dividing_row_upper = vcell_loc.virt_row; found_divider_upper = TRUE; @@ -623,8 +622,8 @@ gnc_split_register_load (SplitRegister* reg, GList* slist, } if (info->show_present_divider && !found_divider && - ((reverse_sort && xaccTransGetDate(trans) < present) || - (!reverse_sort && xaccTransGetDate (trans) > present))) + ((table->model->reverse_sort && xaccTransGetDate (trans) < present) || + (!table->model->reverse_sort && xaccTransGetDate (trans) > present))) { table->model->dividing_row = vcell_loc.virt_row; found_divider = TRUE; diff --git a/gnucash/register/ledger-core/split-register.c b/gnucash/register/ledger-core/split-register.c index 6c0bfa4a118..0d6a2f867db 100644 --- a/gnucash/register/ledger-core/split-register.c +++ b/gnucash/register/ledger-core/split-register.c @@ -2942,6 +2942,13 @@ gnc_split_register_config (SplitRegister* reg, gnc_table_realize_gui (reg->table); } +void +gnc_split_register_set_reverse_sort (SplitRegister* reg, gboolean reverse_sort) +{ + g_return_if_fail (reg); + gnc_table_model_set_reverse_sort (reg->table->model, reverse_sort); +} + void gnc_split_register_set_auto_complete (SplitRegister* reg, gboolean do_auto_complete) diff --git a/gnucash/register/ledger-core/split-register.h b/gnucash/register/ledger-core/split-register.h index 4bcfe8e062a..5274c6aaec9 100644 --- a/gnucash/register/ledger-core/split-register.h +++ b/gnucash/register/ledger-core/split-register.h @@ -323,6 +323,15 @@ void gnc_split_register_config (SplitRegister* reg, SplitRegisterStyle style, gboolean use_double_line); +/** Sets a split register's reverse sort order based on register + * + * @param reg a ::SplitRegister + * + * @param reverse_sort @c TRUE reverse sort order, @c FALSE default + */ +void gnc_split_register_set_reverse_sort (SplitRegister* reg, + gboolean reverse_sort); + /** Sets whether a register uses auto-completion. * * @param reg a ::SplitRegister diff --git a/gnucash/register/register-core/table-model.c b/gnucash/register/register-core/table-model.c index b2952634e5f..627a2e59ab7 100644 --- a/gnucash/register/register-core/table-model.c +++ b/gnucash/register/register-core/table-model.c @@ -199,6 +199,14 @@ gnc_table_model_read_only (TableModel *model) return model->read_only; } +void +gnc_table_model_set_reverse_sort (TableModel *model, + gboolean reverse_sort) +{ + g_return_if_fail (model); + model->reverse_sort = reverse_sort; +} + void gnc_table_model_set_entry_handler (TableModel *model, TableGetEntryHandler entry_handler, diff --git a/gnucash/register/register-core/table-model.h b/gnucash/register/register-core/table-model.h index 55aee0b3880..94abd507467 100644 --- a/gnucash/register/register-core/table-model.h +++ b/gnucash/register/register-core/table-model.h @@ -122,6 +122,10 @@ typedef struct * and edits should not be allowed. */ gboolean read_only; + /* If true, denotes that this table is being displayed + * in the reverse direction. */ + gboolean reverse_sort; + /* If positive, denotes a row that marks a boundary that should * be visually distinguished. */ int dividing_row; @@ -145,6 +149,9 @@ void gnc_table_model_set_read_only (TableModel *model, gboolean read_only); gboolean gnc_table_model_read_only (TableModel *model); +void gnc_table_model_set_reverse_sort (TableModel *model, + gboolean read_only); + void gnc_table_model_set_entry_handler (TableModel *model, TableGetEntryHandler entry_handler,