From 475a5d499cb4953967ebbdc0cb29ee42b62a4c43 Mon Sep 17 00:00:00 2001 From: Christopher James Lahey Date: Sun, 20 Aug 2000 23:18:45 +0000 Subject: Added e_table_selection_model_selected_count. 2000-08-20 Christopher James Lahey * e-table-selection-model.c: Added e_table_selection_model_selected_count. svn path=/trunk/; revision=4893 --- widgets/e-table/e-table-selection-model.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) (limited to 'widgets/e-table/e-table-selection-model.c') diff --git a/widgets/e-table/e-table-selection-model.c b/widgets/e-table/e-table-selection-model.c index 09b1d6bf93..9079ce8623 100644 --- a/widgets/e-table/e-table-selection-model.c +++ b/widgets/e-table/e-table-selection-model.c @@ -472,3 +472,29 @@ e_table_selection_model_clear(ETableSelectionModel *selection) gtk_signal_emit(GTK_OBJECT(selection), e_table_selection_model_signals [SELECTION_CHANGED]); } + +#define PART(x,n) (((x) & (0x01010101 << n)) >> n) +#define SECTION(x, n) (((x) >> (n * 8)) & 0xff) + +gint +e_table_selection_model_selected_count (ETableSelectionModel *selection) +{ + gint count; + int i; + int last; + + count = 0; + + last = BOX(selection->row_count - 1); + + for (i = 0; i <= last; i++) { + int j; + guint32 thiscount = 0; + for (j = 0; j < 8; j++) + thiscount += PART(selection->selection[i], j); + for (j = 0; j < 4; j++) + count += SECTION(thiscount, j); + } + + return count; +} -- cgit v1.2.3