diff --git a/src/gnome/window-reconcile.c b/src/gnome/window-reconcile.c index e38d8bac8d..71cc187b9d 100644 --- a/src/gnome/window-reconcile.c +++ b/src/gnome/window-reconcile.c @@ -65,6 +65,9 @@ struct _RecnWindow time_t statement_date; /* The statement date */ gboolean use_shares; /* Use share balances */ + sort_type_t debit_sort; /* Sorting style of the debit list */ + sort_type_t credit_sort; /* Sorting style of the credit list */ + GtkWidget *window; /* The reconcile window */ GtkWidget *toolbar; /* Toolbar widget */ @@ -813,11 +816,21 @@ gnc_reconcile_sort(RecnWindow *recnData, GNCReconcileListType list_type, sort_type_t sort_code) { GNCReconcileList *list; + sort_type_t *old_type_p; if (list_type == RECLIST_DEBIT) + { list = GNC_RECONCILE_LIST(recnData->debit); + old_type_p = &recnData->debit_sort; + } else + { list = GNC_RECONCILE_LIST(recnData->credit); + old_type_p = &recnData->credit_sort; + } + + if (sort_code == *old_type_p) + return; switch(sort_code) { @@ -836,6 +849,8 @@ gnc_reconcile_sort(RecnWindow *recnData, GNCReconcileListType list_type, break; } + *old_type_p = sort_code; + gnc_reconcile_list_refresh(GNC_RECONCILE_LIST(recnData->debit)); gnc_reconcile_list_refresh(GNC_RECONCILE_LIST(recnData->credit)); } @@ -1275,6 +1290,8 @@ recnWindow(GtkWidget *parent, Account *account) recnData->statement_date = statement_date; recnData->window = gtk_window_new(GTK_WINDOW_TOPLEVEL); recnData->delete_refresh = FALSE; + recnData->debit_sort = BY_STANDARD; + recnData->credit_sort = BY_STANDARD; gnc_recn_set_window_name(recnData); diff --git a/src/gnome/window-register.c b/src/gnome/window-register.c index 58df0ae7b2..20c0e35d43 100644 --- a/src/gnome/window-register.c +++ b/src/gnome/window-register.c @@ -90,6 +90,8 @@ struct _RegWindow GnucashRegister *reg; + sort_type_t sort_type; + RegDateWindow *date_window; /* Do we close the ledger when the window closes? */ @@ -265,6 +267,9 @@ gnc_register_change_style(RegWindow *regData, SplitRegisterStyle style) { SplitRegister *reg = regData->ledger->ledger; + if (style == reg->style) + return; + xaccConfigSplitRegister(reg, reg->type, style); regData->ledger->dirty = 1; @@ -317,6 +322,9 @@ gnc_register_sort(RegWindow *regData, sort_type_t sort_code) { Query *query = regData->ledger->query; + if (regData->sort_type == sort_code) + return; + switch(sort_code) { case BY_STANDARD: @@ -348,6 +356,8 @@ gnc_register_sort(RegWindow *regData, sort_type_t sort_code) assert(0); /* we should never be here */ } + regData->sort_type = sort_code; + regData->ledger->dirty = 1; xaccLedgerDisplayRefresh(regData->ledger); } @@ -1551,7 +1561,7 @@ regWindowLedger(xaccLedgerDisplay *ledger) GtkWidget *table_frame; GtkWidget *statusbar; - regData = (RegWindow *) (ledger->gui_hook); + regData = ledger->gui_hook; if (regData != NULL) return regData; @@ -1574,6 +1584,7 @@ regWindowLedger(xaccLedgerDisplay *ledger) regData->ledger = ledger; regData->close_ledger = GNC_T; regData->window = register_window; + regData->sort_type = BY_STANDARD; gnc_reg_set_window_name(regData);