From dcd4f312232db7d391b1dd969f271f9a65c540c1 Mon Sep 17 00:00:00 2001 From: Christopher James Lahey Date: Tue, 19 Dec 2000 15:58:24 +0000 Subject: Set the minimum width of newly created children. 2000-12-19 Christopher James Lahey * e-table-group-container.c (etgc_add): Set the minimum width of newly created children. (e_table_group_container_construct): Use function e_table_header_get_column_by_col_idx instead of e_table_header_get_column since we're passing in a col_idx. * e-table-header.c, e-table-header.h: New function e_table_header_get_column_by_col_idx which searches for a column in the ETableHeader with a certain model column (col_idx). * e-table-sorted-variable.c (etsv_compare), (etsv_sort), e-table-sorter.c (ets_sort): Use function e_table_header_get_column_by_col_idx instead of e_table_header_get_column since we're passing in a col_idx. svn path=/trunk/; revision=7079 --- widgets/table/e-table-group-container.c | 7 ++-- widgets/table/e-table-header.c | 23 ++++++++++++ widgets/table/e-table-header.h | 66 ++++++++++++++++++--------------- widgets/table/e-table-sorted-variable.c | 10 ++--- 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 @@ -372,6 +372,29 @@ e_table_header_get_column (ETableHeader *eth, int column) return eth->columns [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); -- cgit v1.2.3