]> Pileus Git - ~andy/gtk/commitdiff
Don't scroll to cursor position if we already have pending scrolls.
authorMatthias Clasen <mclasen@redhat.com>
Tue, 20 Apr 2004 13:56:45 +0000 (13:56 +0000)
committerMatthias Clasen <matthiasc@src.gnome.org>
Tue, 20 Apr 2004 13:56:45 +0000 (13:56 +0000)
2004-04-20  Matthias Clasen  <mclasen@redhat.com>

* gtk/gtktextview.c (gtk_text_view_scroll_pages):
(gtk_text_view_scroll_hpages): Don't scroll to cursor position
if we already have pending scrolls. Bandaid fix for #78513.

ChangeLog
ChangeLog.pre-2-10
ChangeLog.pre-2-4
ChangeLog.pre-2-6
ChangeLog.pre-2-8
gtk/gtktextview.c

index 87a17afa852ba91e21d93a865333c11c63125b1e..e14b21d80f6f8edc9bf6704832ff1e3cb195aad7 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -3,6 +3,9 @@
        * gtk/gtktextview.c (gtk_text_view_allocate_children): Make
        sure anchored children get size allocated, even if the layout
        is valid.  (#122323, Andrew E. Makeev)
+       (gtk_text_view_scroll_pages): 
+       (gtk_text_view_scroll_hpages): Don't scroll to cursor position
+       if we already have pending scrolls. Bandaid fix for #78513.
 
 Mon Apr 19 17:59:17 2004  Owen Taylor  <otaylor@redhat.com>
 
index 87a17afa852ba91e21d93a865333c11c63125b1e..e14b21d80f6f8edc9bf6704832ff1e3cb195aad7 100644 (file)
@@ -3,6 +3,9 @@
        * gtk/gtktextview.c (gtk_text_view_allocate_children): Make
        sure anchored children get size allocated, even if the layout
        is valid.  (#122323, Andrew E. Makeev)
+       (gtk_text_view_scroll_pages): 
+       (gtk_text_view_scroll_hpages): Don't scroll to cursor position
+       if we already have pending scrolls. Bandaid fix for #78513.
 
 Mon Apr 19 17:59:17 2004  Owen Taylor  <otaylor@redhat.com>
 
index 87a17afa852ba91e21d93a865333c11c63125b1e..e14b21d80f6f8edc9bf6704832ff1e3cb195aad7 100644 (file)
@@ -3,6 +3,9 @@
        * gtk/gtktextview.c (gtk_text_view_allocate_children): Make
        sure anchored children get size allocated, even if the layout
        is valid.  (#122323, Andrew E. Makeev)
+       (gtk_text_view_scroll_pages): 
+       (gtk_text_view_scroll_hpages): Don't scroll to cursor position
+       if we already have pending scrolls. Bandaid fix for #78513.
 
 Mon Apr 19 17:59:17 2004  Owen Taylor  <otaylor@redhat.com>
 
index 87a17afa852ba91e21d93a865333c11c63125b1e..e14b21d80f6f8edc9bf6704832ff1e3cb195aad7 100644 (file)
@@ -3,6 +3,9 @@
        * gtk/gtktextview.c (gtk_text_view_allocate_children): Make
        sure anchored children get size allocated, even if the layout
        is valid.  (#122323, Andrew E. Makeev)
+       (gtk_text_view_scroll_pages): 
+       (gtk_text_view_scroll_hpages): Don't scroll to cursor position
+       if we already have pending scrolls. Bandaid fix for #78513.
 
 Mon Apr 19 17:59:17 2004  Owen Taylor  <otaylor@redhat.com>
 
index 87a17afa852ba91e21d93a865333c11c63125b1e..e14b21d80f6f8edc9bf6704832ff1e3cb195aad7 100644 (file)
@@ -3,6 +3,9 @@
        * gtk/gtktextview.c (gtk_text_view_allocate_children): Make
        sure anchored children get size allocated, even if the layout
        is valid.  (#122323, Andrew E. Makeev)
+       (gtk_text_view_scroll_pages): 
+       (gtk_text_view_scroll_hpages): Don't scroll to cursor position
+       if we already have pending scrolls. Bandaid fix for #78513.
 
 Mon Apr 19 17:59:17 2004  Owen Taylor  <otaylor@redhat.com>
 
index 50efb41bdb4989514a7128532b75cac743662eb4..4abf72627d0945aac30deabad65b356d8bd9ec92 100644 (file)
@@ -4813,17 +4813,19 @@ gtk_text_view_scroll_pages (GtkTextView *text_view,
   gint y0, y1;
 
   g_return_if_fail (text_view->vadjustment != NULL);
-
-  cancel_pending_scroll (text_view);
   
   adj = text_view->vadjustment;
 
   /* Make sure we start from the current cursor position, even
-   * if it was offscreen.
+   * if it was offscreen, but don't queue more scrolls if we're
+   * already behind.
    */
-  gtk_text_view_scroll_mark_onscreen (text_view,
-                                     gtk_text_buffer_get_mark (get_buffer (text_view),
-                                                               "insert"));
+  if (text_view->pending_scroll)
+    cancel_pending_scroll (text_view);
+  else
+    gtk_text_view_scroll_mark_onscreen (text_view,
+                                       gtk_text_buffer_get_mark (get_buffer (text_view),
+                                                                 "insert"));
   
 /* Validate the region that will be brought into view by the cursor motion
    */
@@ -4897,16 +4899,18 @@ gtk_text_view_scroll_hpages (GtkTextView *text_view,
   
   g_return_if_fail (text_view->hadjustment != NULL);
 
-  cancel_pending_scroll (text_view);
-  
   adj = text_view->hadjustment;
 
   /* Make sure we start from the current cursor position, even
-   * if it was offscreen.
+   * if it was offscreen, but don't queue more scrolls if we're
+   * already behind.
    */
-  gtk_text_view_scroll_mark_onscreen (text_view,
-                                     gtk_text_buffer_get_mark (get_buffer (text_view),
-                                                               "insert"));
+  if (text_view->pending_scroll)
+    cancel_pending_scroll (text_view);
+  else
+    gtk_text_view_scroll_mark_onscreen (text_view,
+                                       gtk_text_buffer_get_mark (get_buffer (text_view),
+                                                                 "insert"));
   
   /* Validate the line that we're moving within.
    */