mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-25 18:55:30 -06:00
re-sort the list of visible items when the appropriate entries
change. git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@7001 57a11ea4-9604-0410-9ed3-97b8803252fd
This commit is contained in:
@@ -60,6 +60,7 @@ struct _book_info {
|
||||
static void add_or_rem_object (GncBillTerm *term, gboolean add);
|
||||
static void addObj (GncBillTerm *term);
|
||||
static void remObj (GncBillTerm *term);
|
||||
static void maybe_resort_list (GncBillTerm *term);
|
||||
|
||||
G_INLINE_FUNC void mark_term (GncBillTerm *term);
|
||||
G_INLINE_FUNC void
|
||||
@@ -115,6 +116,7 @@ void gncBillTermSetName (GncBillTerm *term, const char *name)
|
||||
if (!term || !name) return;
|
||||
SET_STR (term->name, name);
|
||||
mark_term (term);
|
||||
maybe_resort_list (term);
|
||||
}
|
||||
|
||||
void gncBillTermSetDescription (GncBillTerm *term, const char *desc)
|
||||
@@ -122,6 +124,7 @@ void gncBillTermSetDescription (GncBillTerm *term, const char *desc)
|
||||
if (!term || !desc) return;
|
||||
SET_STR (term->desc, desc);
|
||||
mark_term (term);
|
||||
maybe_resort_list (term);
|
||||
}
|
||||
|
||||
void gncBillTermSetType (GncBillTerm *term, GncBillTermType type)
|
||||
@@ -360,7 +363,7 @@ int gncBillTermCompare (GncBillTerm *a, GncBillTerm *b)
|
||||
if (!b) return 1;
|
||||
|
||||
ret = safe_strcmp (a->name, b->name);
|
||||
if (!ret) return ret;
|
||||
if (ret) return ret;
|
||||
|
||||
return safe_strcmp (a->desc, b->desc);
|
||||
}
|
||||
@@ -451,6 +454,15 @@ gncBillTermComputeDiscountDate (GncBillTerm *term, Timespec post_date)
|
||||
|
||||
/* Package-Private functions */
|
||||
|
||||
static void maybe_resort_list (GncBillTerm *term)
|
||||
{
|
||||
struct _book_info *bi;
|
||||
|
||||
if (term->parent || term->invisible) return;
|
||||
bi = gnc_book_get_data (term->book, _GNC_MOD_NAME);
|
||||
bi->terms = g_list_sort (bi->terms, (GCompareFunc)gncBillTermCompare);
|
||||
}
|
||||
|
||||
static void add_or_rem_object (GncBillTerm *term, gboolean add)
|
||||
{
|
||||
struct _book_info *bi;
|
||||
|
||||
@@ -63,6 +63,7 @@ struct _book_info {
|
||||
static void add_or_rem_object (GncTaxTable *table, gboolean add);
|
||||
static void addObj (GncTaxTable *table);
|
||||
static void remObj (GncTaxTable *table);
|
||||
static void maybe_resort_list (GncTaxTable *table);
|
||||
|
||||
G_INLINE_FUNC void mark_table (GncTaxTable *table);
|
||||
G_INLINE_FUNC void
|
||||
@@ -142,6 +143,7 @@ void gncTaxTableSetName (GncTaxTable *table, const char *name)
|
||||
if (!table || !name) return;
|
||||
SET_STR (table->name, name);
|
||||
mark_table (table);
|
||||
maybe_resort_list (table);
|
||||
}
|
||||
|
||||
void gncTaxTableSetParent (GncTaxTable *table, GncTaxTable *parent)
|
||||
@@ -497,6 +499,15 @@ void gncAccountValueDestroy (GList *list)
|
||||
|
||||
/* Package-Private functions */
|
||||
|
||||
static void maybe_resort_list (GncTaxTable *table)
|
||||
{
|
||||
struct _book_info *bi;
|
||||
|
||||
if (table->parent || table->invisible) return;
|
||||
bi = gnc_book_get_data (table->book, _GNC_MOD_NAME);
|
||||
bi->tables = g_list_sort (bi->tables, (GCompareFunc)gncTaxTableCompare);
|
||||
}
|
||||
|
||||
static void add_or_rem_object (GncTaxTable *table, gboolean add)
|
||||
{
|
||||
struct _book_info *bi;
|
||||
|
||||
Reference in New Issue
Block a user