psppire-data-sheet: Set cursor on row in psppire_data_sheet_show_variable().
authorBen Pfaff <blp@cs.stanford.edu>
Fri, 9 Nov 2012 06:51:08 +0000 (22:51 -0800)
committerBen Pfaff <blp@cs.stanford.edu>
Fri, 9 Nov 2012 06:51:08 +0000 (22:51 -0800)
psppire_data_sheet_show_variable() only ensured that the variable in
question was visible in the data sheet.  This commit makes it also put
the cursor on the variable's column.  This affects the function's two
callers: the Find Dialog now selects a cell instead of an entire row,
and double-clicking a row number in the variable sheet now does likewise.

This solves a problem reported by John Darrington, who reported that
double-clicking on a row number in the variable sheet did not change
the selected cell but only switched to the data sheet.

src/ui/gui/psppire-data-sheet.c

index 6714bfb90ef1b29998dc2dafb8aeeb9b3fcf159e..4960a838364c008167a8158bb3306c32c4702e7a 100644 (file)
@@ -1056,8 +1056,17 @@ psppire_data_sheet_show_variable (PsppireDataSheet *data_sheet,
   column = psppire_data_sheet_find_column_for_variable (data_sheet,
                                                         dict_index);
   if (column != NULL)
-    pspp_sheet_view_scroll_to_cell (sheet_view, NULL, column,
-                                    FALSE, 0.0, 0.0);
+    {
+      GtkTreePath *path;
+
+      gint row = psppire_data_sheet_get_current_case (data_sheet);
+      path = gtk_tree_path_new_from_indices (row >= 0 ? row : 0, -1);
+
+      pspp_sheet_view_scroll_to_cell (sheet_view, path, column,
+                                      FALSE, 0.0, 0.0);
+      pspp_sheet_view_set_cursor (sheet_view, path, column, FALSE);
+      gtk_tree_path_free (path);
+    }
 }
 
 struct variable *