diff options
Diffstat (limited to 'widgets/table')
-rw-r--r-- | widgets/table/e-table-group-container.c | 7 | ||||
-rw-r--r-- | widgets/table/e-table-header.c | 23 | ||||
-rw-r--r-- | widgets/table/e-table-header.h | 66 | ||||
-rw-r--r-- | widgets/table/e-table-sorted-variable.c | 10 | ||||
-rw-r--r-- | widgets/table/e-table-sorter.c | 5 |
5 files changed, 69 insertions, 42 deletions
diff --git a/widgets/table/e-table-group-container.c b/widgets/table/e-table-group-container.c index 5e2b86c800..194e744f8c 100644 --- a/widgets/table/e-table-group-container.c +++ b/widgets/table/e-table-group-container.c @@ -118,10 +118,9 @@ e_table_group_container_construct (GnomeCanvasGroup *parent, ETableGroupContaine ETableCol *col; ETableSortColumn column = e_table_sort_info_grouping_get_nth(sort_info, n); - if (column.column > e_table_header_count (full_header)) + col = e_table_header_get_column_by_col_idx(full_header, column.column); + if (col == NULL) col = e_table_header_get_column (full_header, e_table_header_count (full_header) - 1); - else - col = e_table_header_get_column (full_header, column.column); e_table_group_construct (parent, E_TABLE_GROUP (etgc), full_header, header, model); etgc->ecol = col; @@ -401,7 +400,9 @@ etgc_add (ETableGroup *etg, gint row) "cursor_mode", etgc->cursor_mode, "table_selection_model", etgc->table_selection_model, "length_threshold", etgc->length_threshold, + "minimum_width", etgc->minimum_width - GROUP_INDENT, NULL); + gtk_signal_connect (GTK_OBJECT (child), "cursor_change", GTK_SIGNAL_FUNC (child_cursor_change), etgc); gtk_signal_connect (GTK_OBJECT (child), "double_click", diff --git a/widgets/table/e-table-header.c b/widgets/table/e-table-header.c index 6c1431863a..3f2a363c94 100644 --- a/widgets/table/e-table-header.c +++ b/widgets/table/e-table-header.c @@ -373,6 +373,29 @@ e_table_header_get_column (ETableHeader *eth, int column) } /** + * e_table_header_get_column_by_col_id: + * @eth: the ETableHeader to query + * @col_id: the col_id to search for. + * + * Returns: The ETableCol with col_idx = @col_idx in the @eth object + */ +ETableCol * +e_table_header_get_column_by_col_idx (ETableHeader *eth, int col_idx) +{ + int i; + g_return_val_if_fail (eth != NULL, NULL); + g_return_val_if_fail (E_IS_TABLE_HEADER (eth), NULL); + + for (i = 0; i < eth->col_count; i++) { + if (eth->columns[i]->col_idx == col_idx) { + return eth->columns [i]; + } + } + + return NULL; +} + +/** * e_table_header_count: * @eth: the ETableHeader to query * diff --git a/widgets/table/e-table-header.h b/widgets/table/e-table-header.h index 34d79e6b11..6476c25d47 100644 --- a/widgets/table/e-table-header.h +++ b/widgets/table/e-table-header.h @@ -43,36 +43,42 @@ typedef struct { int (*request_width) (ETableHeader *eth, int col); } ETableHeaderClass; -GtkType e_table_header_get_type (void); -ETableHeader *e_table_header_new (void); - -void e_table_header_add_column (ETableHeader *eth, - ETableCol *tc, int pos); -ETableCol * e_table_header_get_column (ETableHeader *eth, - int column); -int e_table_header_count (ETableHeader *eth); -int e_table_header_index (ETableHeader *eth, - int col); -int e_table_header_get_index_at (ETableHeader *eth, - int x_offset); -ETableCol **e_table_header_get_columns (ETableHeader *eth); - -int e_table_header_get_selected (ETableHeader *eth); -int e_table_header_total_width (ETableHeader *eth); -void e_table_header_move (ETableHeader *eth, - int source_index, - int target_index); -void e_table_header_remove (ETableHeader *eth, int idx); -void e_table_header_set_size (ETableHeader *eth, int idx, int size); -void e_table_header_set_selection (ETableHeader *eth, - gboolean allow_selection); - -int e_table_header_col_diff (ETableHeader *eth, - int start_col, int end_col); - -void e_table_header_calc_widths (ETableHeader *eth); - -GList *e_table_header_get_selected_indexes (ETableHeader *eth); +GtkType e_table_header_get_type (void); +ETableHeader *e_table_header_new (void); + +void e_table_header_add_column (ETableHeader *eth, + ETableCol *tc, + int pos); +ETableCol *e_table_header_get_column (ETableHeader *eth, + int column); +ETableCol *e_table_header_get_column_by_col_idx (ETableHeader *eth, + int col_idx); +int e_table_header_count (ETableHeader *eth); +int e_table_header_index (ETableHeader *eth, + int col); +int e_table_header_get_index_at (ETableHeader *eth, + int x_offset); +ETableCol **e_table_header_get_columns (ETableHeader *eth); +int e_table_header_get_selected (ETableHeader *eth); + +int e_table_header_total_width (ETableHeader *eth); +void e_table_header_move (ETableHeader *eth, + int source_index, + int target_index); +void e_table_header_remove (ETableHeader *eth, + int idx); +void e_table_header_set_size (ETableHeader *eth, + int idx, + int size); +void e_table_header_set_selection (ETableHeader *eth, + gboolean allow_selection); +int e_table_header_col_diff (ETableHeader *eth, + int start_col, + int end_col); + +void e_table_header_calc_widths (ETableHeader *eth); +GList *e_table_header_get_selected_indexes (ETableHeader *eth); + #endif /* _E_TABLE_HEADER_H_ */ diff --git a/widgets/table/e-table-sorted-variable.c b/widgets/table/e-table-sorted-variable.c index 5fd747eaff..216bc8dd4d 100644 --- a/widgets/table/e-table-sorted-variable.c +++ b/widgets/table/e-table-sorted-variable.c @@ -133,10 +133,9 @@ etsv_compare(ETableSortedVariable *etsv, int row1, int row2) for (j = 0; j < sort_count; j++) { ETableSortColumn column = e_table_sort_info_sorting_get_nth(etsv->sort_info, j); ETableCol *col; - if (column.column > e_table_header_count (etsv->full_header)) + col = e_table_header_get_column_by_col_idx(etsv->full_header, column.column); + if (col == NULL) col = e_table_header_get_column (etsv->full_header, e_table_header_count (etsv->full_header) - 1); - else - col = e_table_header_get_column (etsv->full_header, column.column); comp_val = (*col->compare)(e_table_model_value_at (etss->source, col->col_idx, row1), e_table_model_value_at (etss->source, col->col_idx, row2)); ascending = column.ascending; @@ -640,10 +639,9 @@ etsv_sort(ETableSortedVariable *etsv) for (j = 0; j < cols; j++) { ETableSortColumn column = e_table_sort_info_sorting_get_nth(etsv->sort_info, j); ETableCol *col; - if (column.column > e_table_header_count (etsv->full_header)) + col = e_table_header_get_column_by_col_idx(etsv->full_header, column.column); + if (col == NULL) col = e_table_header_get_column (etsv->full_header, e_table_header_count (etsv->full_header) - 1); - else - col = e_table_header_get_column (etsv->full_header, column.column); for (i = 0; i < rows; i++) { #if 0 if( !(i & 0xff) ) { diff --git a/widgets/table/e-table-sorter.c b/widgets/table/e-table-sorter.c index 2f6db12622..cf878c56ca 100644 --- a/widgets/table/e-table-sorter.c +++ b/widgets/table/e-table-sorter.c @@ -463,10 +463,9 @@ ets_sort(ETableSorter *ets) else column = e_table_sort_info_sorting_get_nth(ets->sort_info, j - group_cols); - if (column.column > e_table_header_count (ets->full_header)) + col = e_table_header_get_column_by_col_idx(ets->full_header, column.column); + if (col == NULL) col = e_table_header_get_column (ets->full_header, e_table_header_count (ets->full_header) - 1); - else - col = e_table_header_get_column (ets->full_header, column.column); for (i = 0; i < rows; i++) { vals_closure[i * cols + j] = e_table_model_value_at (ets->source, col->col_idx, i); |