aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--widgets/e-table/ChangeLog5
-rw-r--r--widgets/e-table/e-table-sorted-variable.c3
-rw-r--r--widgets/table/e-table-sorted-variable.c3
3 files changed, 11 insertions, 0 deletions
diff --git a/widgets/e-table/ChangeLog b/widgets/e-table/ChangeLog
index 2239817da5..42f01d3863 100644
--- a/widgets/e-table/ChangeLog
+++ b/widgets/e-table/ChangeLog
@@ -1,5 +1,10 @@
2000-03-06 Christopher James Lahey <clahey@helixcode.com>
+ * e-table-sorted-variable.c: Have identical values get sorted by
+ their actual row.
+
+2000-03-06 Christopher James Lahey <clahey@helixcode.com>
+
* e-cell-text.c: Draw selected row.
2000-03-06 Christopher James Lahey <clahey@helixcode.com>
diff --git a/widgets/e-table/e-table-sorted-variable.c b/widgets/e-table/e-table-sorted-variable.c
index 478038fdb7..907ec1cc4d 100644
--- a/widgets/e-table/e-table-sorted-variable.c
+++ b/widgets/e-table/e-table-sorted-variable.c
@@ -78,6 +78,9 @@ etsv_add (ETableSubsetVariable *etssv,
int comp_val = (*comp)(val, e_table_model_value_at(etss->source, col, etss->map_table[i]));
if ( (ascending && comp_val < 0) || ((!ascending) && comp_val > 0) )
break;
+ if ( comp_val == 0 )
+ if ( (ascending && row < etss->map_table[i]) || ((!ascending) && row > etss->map_table[i]) )
+ break;
}
if ( etss->n_map + 1 > etssv->n_vals_allocated ) {
etss->map_table = g_realloc(etss->map_table, (etssv->n_vals_allocated + INCREMENT_AMOUNT) * sizeof(int));
diff --git a/widgets/table/e-table-sorted-variable.c b/widgets/table/e-table-sorted-variable.c
index 478038fdb7..907ec1cc4d 100644
--- a/widgets/table/e-table-sorted-variable.c
+++ b/widgets/table/e-table-sorted-variable.c
@@ -78,6 +78,9 @@ etsv_add (ETableSubsetVariable *etssv,
int comp_val = (*comp)(val, e_table_model_value_at(etss->source, col, etss->map_table[i]));
if ( (ascending && comp_val < 0) || ((!ascending) && comp_val > 0) )
break;
+ if ( comp_val == 0 )
+ if ( (ascending && row < etss->map_table[i]) || ((!ascending) && row > etss->map_table[i]) )
+ break;
}
if ( etss->n_map + 1 > etssv->n_vals_allocated ) {
etss->map_table = g_realloc(etss->map_table, (etssv->n_vals_allocated + INCREMENT_AMOUNT) * sizeof(int));