Means Dialog: Replace deprecated widgets
[pspp] / src / ui / gui / psppire-data-sheet.c
index 1b7b66a057783a1da071cf47ca1f9402c62a4639..dbc92159777723e87b9a97c0cf67c97fea241b8e 100644 (file)
@@ -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");
     }
 }