X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fgui%2Fpsppire-data-sheet.c;h=dbc92159777723e87b9a97c0cf67c97fea241b8e;hb=8d2d55361082c9cb688c4ce8d565aa3b2ffaf849;hp=1b7b66a057783a1da071cf47ca1f9402c62a4639;hpb=e2da62d735c597afeef2e0e9b36e5a4a83d7da94;p=pspp diff --git a/src/ui/gui/psppire-data-sheet.c b/src/ui/gui/psppire-data-sheet.c index 1b7b66a057..dbc9215977 100644 --- a/src/ui/gui/psppire-data-sheet.c +++ b/src/ui/gui/psppire-data-sheet.c @@ -291,8 +291,9 @@ get_string_width (PsppSheetView *treeview, GtkCellRenderer *renderer, { gint width; g_object_set (G_OBJECT (renderer), "text", string, (void *) NULL); - gtk_cell_renderer_get_size (renderer, GTK_WIDGET (treeview), - NULL, NULL, NULL, &width, NULL); + gtk_cell_renderer_get_preferred_width (renderer, GTK_WIDGET (treeview), + NULL, &width); + return width; } @@ -420,7 +421,7 @@ on_data_column_edited (GtkCellRendererText *cell, { gtk_widget_queue_resize (GTK_WIDGET (data_sheet)); data_sheet->scroll_to_bottom_signal = - g_signal_connect (data_sheet, "size-request", + g_signal_connect (data_sheet, "size-allocate", G_CALLBACK (scroll_to_bottom), NULL); } else @@ -675,7 +676,7 @@ add_data_column_cell_renderer (PsppireDataSheet *data_sheet, var = g_object_get_data (G_OBJECT (column), "variable"); g_return_if_fail (var != NULL); - if (var_has_value_labels (var)) + if (data_sheet->show_value_labels && var_has_value_labels (var)) { cell = gtk_cell_renderer_combo_new (); g_object_set (G_OBJECT (cell), @@ -944,10 +945,11 @@ psppire_data_sheet_set_value_labels (PsppireDataSheet *ds, { ds->show_value_labels = show_value_labels; g_object_notify (G_OBJECT (ds), "value-labels"); - gtk_widget_queue_draw (GTK_WIDGET (ds)); - /* Make the cell being edited refresh too. */ - pspp_sheet_view_stop_editing (PSPP_SHEET_VIEW (ds), TRUE); + /* Pretend the model changed, to force the columns to be rebuilt. + Otherwise cell renderers won't get changed from combo boxes to text + entries or vice versa. */ + g_object_notify (G_OBJECT (ds), "model"); } }