diff options
author | Christopher James Lahey <clahey@ximian.com> | 2002-03-16 04:36:07 +0800 |
---|---|---|
committer | Chris Lahey <clahey@src.gnome.org> | 2002-03-16 04:36:07 +0800 |
commit | a17d29d26cad4dec987f3db39da19e36a545bb01 (patch) | |
tree | 9a5af41dee6bf73960523731b5dfedb1cbb5b9d8 /widgets/table | |
parent | cbbaa07125fafaa8c0546d5ba087c25eb39480c7 (diff) | |
download | gsoc2013-evolution-a17d29d26cad4dec987f3db39da19e36a545bb01.tar.gz gsoc2013-evolution-a17d29d26cad4dec987f3db39da19e36a545bb01.tar.zst gsoc2013-evolution-a17d29d26cad4dec987f3db39da19e36a545bb01.zip |
New function that returns the total minimum width of all the columns.
2002-03-15 Christopher James Lahey <clahey@ximian.com>
* e-table-header.c, e-table-header.h (e_table_header_min_width):
New function that returns the total minimum width of all the
columns.
* e-table.c, e-table.h (set_header_width): Call
e_table_header_min_width here instead of total_width.
(et_size_request): Override the size_request method instead of
doing set_usize.
svn path=/trunk/; revision=16175
Diffstat (limited to 'widgets/table')
-rw-r--r-- | widgets/table/e-table-header.c | 21 | ||||
-rw-r--r-- | widgets/table/e-table-header.h | 1 | ||||
-rw-r--r-- | widgets/table/e-table.c | 19 | ||||
-rw-r--r-- | widgets/table/e-table.h | 2 |
4 files changed, 39 insertions, 4 deletions
diff --git a/widgets/table/e-table-header.c b/widgets/table/e-table-header.c index d983ab36e7..e5eda9fd42 100644 --- a/widgets/table/e-table-header.c +++ b/widgets/table/e-table-header.c @@ -570,6 +570,27 @@ e_table_header_total_width (ETableHeader *eth) } /** + * e_table_header_min_width: + * @eth: The ETableHeader to query + * + * Returns: the minimum number of pixels required by the @eth object. + **/ +int +e_table_header_min_width (ETableHeader *eth) +{ + int total, i; + + g_return_val_if_fail (eth != NULL, 0); + g_return_val_if_fail (E_IS_TABLE_HEADER (eth), 0); + + total = 0; + for (i = 0; i < eth->col_count; i++) + total += eth->columns [i]->min_width; + + return total; +} + +/** * e_table_header_move: * @eth: The ETableHeader to operate on. * @source_index: the source column to move. diff --git a/widgets/table/e-table-header.h b/widgets/table/e-table-header.h index 355618b5a6..b30bca47cd 100644 --- a/widgets/table/e-table-header.h +++ b/widgets/table/e-table-header.h @@ -90,6 +90,7 @@ ETableCol **e_table_header_get_columns (ETableHeader *eth); int e_table_header_get_selected (ETableHeader *eth); int e_table_header_total_width (ETableHeader *eth); +int e_table_header_min_width (ETableHeader *eth); void e_table_header_move (ETableHeader *eth, int source_index, int target_index); diff --git a/widgets/table/e-table.c b/widgets/table/e-table.c index 7e101b2363..9116f03356 100644 --- a/widgets/table/e-table.c +++ b/widgets/table/e-table.c @@ -195,13 +195,21 @@ e_table_state_change (ETable *et) #define CHECK_HORIZONTAL(et) if ((et)->horizontal_scrolling || (et)->horizontal_resize) e_table_header_update_horizontal (et->header); static void +et_size_request (GtkWidget *widget, GtkRequisition *request) +{ + ETable *et = E_TABLE (widget); + if (GTK_WIDGET_CLASS (parent_class)->size_request) + GTK_WIDGET_CLASS (parent_class)->size_request (widget, request); + if (et->horizontal_resize) + request->width = MAX (request->width, et->header_width); +} + +static void set_header_width (ETable *et) { if (et->horizontal_resize) { - int width = e_table_header_total_width (et->header); - gtk_widget_set_usize (GTK_WIDGET (et->table_canvas), width, - -2); - gtk_widget_queue_resize (GTK_WIDGET (et->table_canvas)); + et->header_width = e_table_header_min_width (et->header); + gtk_widget_queue_resize (GTK_WIDGET (et)); } } @@ -463,6 +471,8 @@ e_table_init (GtkObject *object) e_table->current_search = NULL; e_table->current_search_col = -1; + + e_table->header_width = 0; } /* Grab_focus handler for the ETable */ @@ -2898,6 +2908,7 @@ e_table_class_init (ETableClass *class) widget_class->grab_focus = et_grab_focus; widget_class->unrealize = et_unrealize; + widget_class->size_request = et_size_request; container_class->focus = et_focus; diff --git a/widgets/table/e-table.h b/widgets/table/e-table.h index e3c7623d9d..067b3ab872 100644 --- a/widgets/table/e-table.h +++ b/widgets/table/e-table.h @@ -152,6 +152,8 @@ typedef struct { int drag_row; int drag_col; ETableDragSourceSite *site; + + int header_width; } ETable; typedef struct { |