+static void
+on_row_activate (GtkTreeView *overview,
+ GtkTreePath *path,
+ GtkTreeViewColumn *column,
+ PsppireOutputWindow *window)
+{
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+ GtkAdjustment *vadj;
+ GValue value = {0};
+ double y, min, max;
+
+ model = gtk_tree_view_get_model (overview);
+ if (!gtk_tree_model_get_iter (model, &iter, path))
+ return;
+
+ gtk_tree_model_get_value (model, &iter, COL_Y, &value);
+ y = g_value_get_long (&value);
+ g_value_unset (&value);
+
+ vadj = gtk_layout_get_vadjustment (window->output);
+ min = gtk_adjustment_get_lower (vadj);
+ max = gtk_adjustment_get_upper (vadj) - gtk_adjustment_get_page_size (vadj);
+ if (y < min)
+ y = min;
+ else if (y > max)
+ y = max;
+ gtk_adjustment_set_value (vadj, y);
+}