Bug 797903 - Transaction window: The 'blue line' is always...

(erroneously) topmost when t. sorting order is inverted.

Same problem for the 'red line'. Make register code aware of sort
order and flip the logic when reverse sorting.
This commit is contained in:
John Ralls 2023-02-27 10:11:06 -08:00
parent f483d7588e
commit de9c0eb540
2 changed files with 14 additions and 5 deletions

View File

@ -2148,6 +2148,8 @@ gnc_split_reg_set_sort_reversed(GNCSplitReg *gsr, gboolean rev, gboolean refresh
Query *query = gnc_ledger_display_get_query( gsr->ledger );
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 );
}

View File

@ -25,7 +25,11 @@
#include <config.h>
#include <glib/gi18n.h>
#include <stdbool.h>
#include <stdio.h>
#include "Account.h"
#include "Transaction.h"
#include "account-quickfill.h"
#include "combocell.h"
#include "gnc-component-manager.h"
@ -373,6 +377,7 @@ 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;
@ -605,7 +610,8 @@ gnc_split_register_load (SplitRegister* reg, GList* slist,
use_autoreadonly &&
!found_divider_upper)
{
if (xaccTransGetDate (trans) >= autoreadonly_time)
if (((reverse_sort && xaccTransGetDate(trans) < autoreadonly_time) ||
(!reverse_sort && xaccTransGetDate (trans) >= autoreadonly_time)))
{
table->model->dividing_row_upper = vcell_loc.virt_row;
found_divider_upper = TRUE;
@ -616,9 +622,9 @@ gnc_split_register_load (SplitRegister* reg, GList* slist,
}
}
if (info->show_present_divider &&
!found_divider &&
(xaccTransGetDate (trans) > present))
if (info->show_present_divider && !found_divider &&
((reverse_sort && xaccTransGetDate(trans) < present) ||
(!reverse_sort && xaccTransGetDate (trans) > present)))
{
table->model->dividing_row = vcell_loc.virt_row;
found_divider = TRUE;
@ -649,7 +655,6 @@ gnc_split_register_load (SplitRegister* reg, GList* slist,
&vcell_loc);
table->model->dividing_row_lower = vcell_loc.virt_row;
if (!multi_line)
start_primary_color = !start_primary_color;
@ -731,7 +736,9 @@ gnc_split_register_load (SplitRegister* reg, GList* slist,
&vcell_loc);
if (future_after_blank)
{
table->model->dividing_row_lower = vcell_loc.virt_row;
}
}
/* go to blank on first pass */