Index: gail/gailtextview.c
===================================================================
--- gail/gailtextview.c	(revision 1277)
+++ gail/gailtextview.c	(working copy)
@@ -555,6 +555,7 @@
   GtkWidget *widget;
   GtkTextBuffer *buffer;
   GtkTextIter pos_itr;
+  GdkRectangle visible_rect, location;
 
   widget = GTK_ACCESSIBLE (text)->widget;
   if (widget == NULL)
@@ -566,6 +567,12 @@
 
   gtk_text_buffer_get_iter_at_offset (buffer,  &pos_itr, offset);
   gtk_text_buffer_place_cursor (buffer, &pos_itr);
+  gtk_text_view_get_visible_rect (view, &visible_rect);
+  gtk_text_view_get_iter_location (view, &pos_itr, &location);
+  if (visible_rect.y + visible_rect.height < location.y + location.height) {
+    printf("It's not visible. Scroll to it.\n");
+    gtk_text_view_scroll_to_iter (view, &pos_itr, 0.0, TRUE, 0.0, 0.5);
+  }
   return TRUE;
 }
 
