]> Pileus Git - ~andy/gtk/commitdiff
keep the cursor visible when the size changes. Fixes bug #344874.
authorMichael Natterer <mitch@imendio.com>
Thu, 22 Jun 2006 14:37:53 +0000 (14:37 +0000)
committerMichael Natterer <mitch@src.gnome.org>
Thu, 22 Jun 2006 14:37:53 +0000 (14:37 +0000)
2006-06-22  Michael Natterer  <mitch@imendio.com>

* gtk/gtktextview.c (gtk_text_view_size_allocate): keep the cursor
visible when the size changes. Fixes bug #344874.

ChangeLog
ChangeLog.pre-2-10
gtk/gtktextview.c

index 91419c107ff9966f83afbf53e2a962c42f4d48e6..16717eb5ad1729273867804f55a2837c01f58d60 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2006-06-22  Michael Natterer  <mitch@imendio.com>
+
+       * gtk/gtktextview.c (gtk_text_view_size_allocate): keep the cursor
+       visible when the size changes. Fixes bug #344874.
+
 2006-06-22  Matthias Clasen  <mclasen@redhat.com>
 
        * gtk/gtkpintjob.h: Add a note about updating the registration.
index 91419c107ff9966f83afbf53e2a962c42f4d48e6..16717eb5ad1729273867804f55a2837c01f58d60 100644 (file)
@@ -1,3 +1,8 @@
+2006-06-22  Michael Natterer  <mitch@imendio.com>
+
+       * gtk/gtktextview.c (gtk_text_view_size_allocate): keep the cursor
+       visible when the size changes. Fixes bug #344874.
+
 2006-06-22  Matthias Clasen  <mclasen@redhat.com>
 
        * gtk/gtkpintjob.h: Add a note about updating the registration.
index 45c250ccab1d95c4eade386dbf0edc534ec5cdc5..ae55bc8e852c0d388a3dac14238a87de8e14d351 100644 (file)
@@ -3127,11 +3127,21 @@ gtk_text_view_size_allocate (GtkWidget *widget,
    */
   gtk_text_view_flush_first_validate (text_view);
 
-  /* widget->window doesn't get auto-redrawn as the layout is computed, so has to
-   * be invalidated
-   */
   if (size_changed && GTK_WIDGET_REALIZED (widget))
-    gdk_window_invalidate_rect (widget->window, NULL, FALSE);
+    {
+      GtkTextBuffer *buffer;
+
+      /* widget->window doesn't get auto-redrawn as the layout is
+       * computed, so has to be invalidated
+       */
+      gdk_window_invalidate_rect (widget->window, NULL, FALSE);
+
+      /* keep cursor visible */
+      buffer = get_buffer (text_view);
+      gtk_text_view_scroll_to_mark (text_view,
+                                    gtk_text_buffer_get_mark (buffer, "insert"),
+                                    0.0, FALSE, 0.0, 0.0);
+    }
 }
 
 static void