diff options
-rw-r--r-- | ChangeLog | 19 | ||||
-rw-r--r-- | ChangeLog.pre-2-0 | 19 | ||||
-rw-r--r-- | ChangeLog.pre-2-10 | 19 | ||||
-rw-r--r-- | ChangeLog.pre-2-2 | 19 | ||||
-rw-r--r-- | ChangeLog.pre-2-4 | 19 | ||||
-rw-r--r-- | ChangeLog.pre-2-6 | 19 | ||||
-rw-r--r-- | ChangeLog.pre-2-8 | 19 | ||||
-rw-r--r-- | docs/reference/gtk/tmpl/gtk-unused.sgml | 24 | ||||
-rw-r--r-- | docs/reference/gtk/tmpl/gtkmenu.sgml | 6 | ||||
-rw-r--r-- | docs/reference/gtk/tmpl/gtknotebook.sgml | 9 | ||||
-rw-r--r-- | docs/reference/gtk/tmpl/gtkwindow.sgml | 20 | ||||
-rw-r--r-- | gtk/gtktextbtree.c | 33 | ||||
-rw-r--r-- | gtk/gtktexttag.c | 1 | ||||
-rw-r--r-- | gtk/gtktextview.c | 52 | ||||
-rw-r--r-- | tests/testtext.c | 33 |
15 files changed, 249 insertions, 62 deletions
@@ -1,3 +1,20 @@ +2001-09-07 Havoc Pennington <hp@redhat.com> + + * gtk/gtktextview.c (gtk_text_view_flush_scroll): update + adjustments after validating destination yrange; fixes #53918 + (This may cause other issues, but I hope it won't) + +2001-09-05 Havoc Pennington <hp@redhat.com> + + * gtk/gtktextbtree.c (_gtk_text_btree_delete): when merging end + line into start line, update the character counts in parent nodes; + caused a bug when end and start line had different parent nodes. + +2001-08-30 Havoc Pennington <hp@redhat.com> + + * gtk/gtktexttag.c (_gtk_text_attributes_fill_from_tags): add + assertion that tag is in a table + Fri Sep 7 12:48:56 2001 Matthias Clasen <matthiasc@poet.de> * gdk/x11/gdkkeys-x11.c (get_direction): Don't call @@ -466,7 +483,7 @@ Tue Aug 21 12:43:29 2001 Owen Taylor <otaylor@redhat.com> * configure.in (all_loaders): Add tga loader, patch by Nicola Girardi. (#56067) -Tue Aug 21 02:57:13 2001 Jonathan Blandford <jrb@redhat.com>> +Tue Aug 21 02:57:13 2001 Jonathan Blandford <jrb@redhat.com> * gtk/gtktreeview.c (gtk_tree_view_button_press): Fix up selection a little. More needs to be done tomorrow. diff --git a/ChangeLog.pre-2-0 b/ChangeLog.pre-2-0 index 90fee00cbd..59fed525e1 100644 --- a/ChangeLog.pre-2-0 +++ b/ChangeLog.pre-2-0 @@ -1,3 +1,20 @@ +2001-09-07 Havoc Pennington <hp@redhat.com> + + * gtk/gtktextview.c (gtk_text_view_flush_scroll): update + adjustments after validating destination yrange; fixes #53918 + (This may cause other issues, but I hope it won't) + +2001-09-05 Havoc Pennington <hp@redhat.com> + + * gtk/gtktextbtree.c (_gtk_text_btree_delete): when merging end + line into start line, update the character counts in parent nodes; + caused a bug when end and start line had different parent nodes. + +2001-08-30 Havoc Pennington <hp@redhat.com> + + * gtk/gtktexttag.c (_gtk_text_attributes_fill_from_tags): add + assertion that tag is in a table + Fri Sep 7 12:48:56 2001 Matthias Clasen <matthiasc@poet.de> * gdk/x11/gdkkeys-x11.c (get_direction): Don't call @@ -466,7 +483,7 @@ Tue Aug 21 12:43:29 2001 Owen Taylor <otaylor@redhat.com> * configure.in (all_loaders): Add tga loader, patch by Nicola Girardi. (#56067) -Tue Aug 21 02:57:13 2001 Jonathan Blandford <jrb@redhat.com>> +Tue Aug 21 02:57:13 2001 Jonathan Blandford <jrb@redhat.com> * gtk/gtktreeview.c (gtk_tree_view_button_press): Fix up selection a little. More needs to be done tomorrow. diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 90fee00cbd..59fed525e1 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,20 @@ +2001-09-07 Havoc Pennington <hp@redhat.com> + + * gtk/gtktextview.c (gtk_text_view_flush_scroll): update + adjustments after validating destination yrange; fixes #53918 + (This may cause other issues, but I hope it won't) + +2001-09-05 Havoc Pennington <hp@redhat.com> + + * gtk/gtktextbtree.c (_gtk_text_btree_delete): when merging end + line into start line, update the character counts in parent nodes; + caused a bug when end and start line had different parent nodes. + +2001-08-30 Havoc Pennington <hp@redhat.com> + + * gtk/gtktexttag.c (_gtk_text_attributes_fill_from_tags): add + assertion that tag is in a table + Fri Sep 7 12:48:56 2001 Matthias Clasen <matthiasc@poet.de> * gdk/x11/gdkkeys-x11.c (get_direction): Don't call @@ -466,7 +483,7 @@ Tue Aug 21 12:43:29 2001 Owen Taylor <otaylor@redhat.com> * configure.in (all_loaders): Add tga loader, patch by Nicola Girardi. (#56067) -Tue Aug 21 02:57:13 2001 Jonathan Blandford <jrb@redhat.com>> +Tue Aug 21 02:57:13 2001 Jonathan Blandford <jrb@redhat.com> * gtk/gtktreeview.c (gtk_tree_view_button_press): Fix up selection a little. More needs to be done tomorrow. diff --git a/ChangeLog.pre-2-2 b/ChangeLog.pre-2-2 index 90fee00cbd..59fed525e1 100644 --- a/ChangeLog.pre-2-2 +++ b/ChangeLog.pre-2-2 @@ -1,3 +1,20 @@ +2001-09-07 Havoc Pennington <hp@redhat.com> + + * gtk/gtktextview.c (gtk_text_view_flush_scroll): update + adjustments after validating destination yrange; fixes #53918 + (This may cause other issues, but I hope it won't) + +2001-09-05 Havoc Pennington <hp@redhat.com> + + * gtk/gtktextbtree.c (_gtk_text_btree_delete): when merging end + line into start line, update the character counts in parent nodes; + caused a bug when end and start line had different parent nodes. + +2001-08-30 Havoc Pennington <hp@redhat.com> + + * gtk/gtktexttag.c (_gtk_text_attributes_fill_from_tags): add + assertion that tag is in a table + Fri Sep 7 12:48:56 2001 Matthias Clasen <matthiasc@poet.de> * gdk/x11/gdkkeys-x11.c (get_direction): Don't call @@ -466,7 +483,7 @@ Tue Aug 21 12:43:29 2001 Owen Taylor <otaylor@redhat.com> * configure.in (all_loaders): Add tga loader, patch by Nicola Girardi. (#56067) -Tue Aug 21 02:57:13 2001 Jonathan Blandford <jrb@redhat.com>> +Tue Aug 21 02:57:13 2001 Jonathan Blandford <jrb@redhat.com> * gtk/gtktreeview.c (gtk_tree_view_button_press): Fix up selection a little. More needs to be done tomorrow. diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4 index 90fee00cbd..59fed525e1 100644 --- a/ChangeLog.pre-2-4 +++ b/ChangeLog.pre-2-4 @@ -1,3 +1,20 @@ +2001-09-07 Havoc Pennington <hp@redhat.com> + + * gtk/gtktextview.c (gtk_text_view_flush_scroll): update + adjustments after validating destination yrange; fixes #53918 + (This may cause other issues, but I hope it won't) + +2001-09-05 Havoc Pennington <hp@redhat.com> + + * gtk/gtktextbtree.c (_gtk_text_btree_delete): when merging end + line into start line, update the character counts in parent nodes; + caused a bug when end and start line had different parent nodes. + +2001-08-30 Havoc Pennington <hp@redhat.com> + + * gtk/gtktexttag.c (_gtk_text_attributes_fill_from_tags): add + assertion that tag is in a table + Fri Sep 7 12:48:56 2001 Matthias Clasen <matthiasc@poet.de> * gdk/x11/gdkkeys-x11.c (get_direction): Don't call @@ -466,7 +483,7 @@ Tue Aug 21 12:43:29 2001 Owen Taylor <otaylor@redhat.com> * configure.in (all_loaders): Add tga loader, patch by Nicola Girardi. (#56067) -Tue Aug 21 02:57:13 2001 Jonathan Blandford <jrb@redhat.com>> +Tue Aug 21 02:57:13 2001 Jonathan Blandford <jrb@redhat.com> * gtk/gtktreeview.c (gtk_tree_view_button_press): Fix up selection a little. More needs to be done tomorrow. diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index 90fee00cbd..59fed525e1 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,20 @@ +2001-09-07 Havoc Pennington <hp@redhat.com> + + * gtk/gtktextview.c (gtk_text_view_flush_scroll): update + adjustments after validating destination yrange; fixes #53918 + (This may cause other issues, but I hope it won't) + +2001-09-05 Havoc Pennington <hp@redhat.com> + + * gtk/gtktextbtree.c (_gtk_text_btree_delete): when merging end + line into start line, update the character counts in parent nodes; + caused a bug when end and start line had different parent nodes. + +2001-08-30 Havoc Pennington <hp@redhat.com> + + * gtk/gtktexttag.c (_gtk_text_attributes_fill_from_tags): add + assertion that tag is in a table + Fri Sep 7 12:48:56 2001 Matthias Clasen <matthiasc@poet.de> * gdk/x11/gdkkeys-x11.c (get_direction): Don't call @@ -466,7 +483,7 @@ Tue Aug 21 12:43:29 2001 Owen Taylor <otaylor@redhat.com> * configure.in (all_loaders): Add tga loader, patch by Nicola Girardi. (#56067) -Tue Aug 21 02:57:13 2001 Jonathan Blandford <jrb@redhat.com>> +Tue Aug 21 02:57:13 2001 Jonathan Blandford <jrb@redhat.com> * gtk/gtktreeview.c (gtk_tree_view_button_press): Fix up selection a little. More needs to be done tomorrow. diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index 90fee00cbd..59fed525e1 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,20 @@ +2001-09-07 Havoc Pennington <hp@redhat.com> + + * gtk/gtktextview.c (gtk_text_view_flush_scroll): update + adjustments after validating destination yrange; fixes #53918 + (This may cause other issues, but I hope it won't) + +2001-09-05 Havoc Pennington <hp@redhat.com> + + * gtk/gtktextbtree.c (_gtk_text_btree_delete): when merging end + line into start line, update the character counts in parent nodes; + caused a bug when end and start line had different parent nodes. + +2001-08-30 Havoc Pennington <hp@redhat.com> + + * gtk/gtktexttag.c (_gtk_text_attributes_fill_from_tags): add + assertion that tag is in a table + Fri Sep 7 12:48:56 2001 Matthias Clasen <matthiasc@poet.de> * gdk/x11/gdkkeys-x11.c (get_direction): Don't call @@ -466,7 +483,7 @@ Tue Aug 21 12:43:29 2001 Owen Taylor <otaylor@redhat.com> * configure.in (all_loaders): Add tga loader, patch by Nicola Girardi. (#56067) -Tue Aug 21 02:57:13 2001 Jonathan Blandford <jrb@redhat.com>> +Tue Aug 21 02:57:13 2001 Jonathan Blandford <jrb@redhat.com> * gtk/gtktreeview.c (gtk_tree_view_button_press): Fix up selection a little. More needs to be done tomorrow. diff --git a/docs/reference/gtk/tmpl/gtk-unused.sgml b/docs/reference/gtk/tmpl/gtk-unused.sgml index 5989126bc1..9f4b6f81c5 100644 --- a/docs/reference/gtk/tmpl/gtk-unused.sgml +++ b/docs/reference/gtk/tmpl/gtk-unused.sgml @@ -1646,13 +1646,6 @@ arrow. @show_toggle_indicator: unused @show_submenu_indicator: whether to show the arrow or not -<!-- ##### MACRO gtk_notebook_set_page ##### --> -<para> -</para> - -@notebook: -@page_num: - <!-- ##### FUNCTION gtk_object_arg_get ##### --> <para> Private function to get an argument and argument info from an object. @@ -2370,14 +2363,6 @@ fundamental type. @window: @Returns: -<!-- ##### FUNCTION gtk_window_get_resizeable ##### --> -<para> - -</para> - -@window: -@Returns: - <!-- ##### FUNCTION gtk_window_set_decorations_hint ##### --> <para> @@ -2394,12 +2379,3 @@ fundamental type. @window: @functions: -<!-- ##### FUNCTION gtk_window_set_resizeable ##### --> -<para> - -</para> - -@window: -@setting: -@resizeable: - diff --git a/docs/reference/gtk/tmpl/gtkmenu.sgml b/docs/reference/gtk/tmpl/gtkmenu.sgml index 9d4e531e7a..29e75e743a 100644 --- a/docs/reference/gtk/tmpl/gtkmenu.sgml +++ b/docs/reference/gtk/tmpl/gtkmenu.sgml @@ -96,9 +96,9 @@ Creates a new #GtkMenu. Adds a new #GtkMenuItem to the end of the menu's item list. </para> +<!-- # Unused Parameters # --> @menu: a #GtkMenu. @child: The #GtkMenuItem to add. -<!-- # Unused Parameters # --> @m: @c: @@ -108,8 +108,8 @@ Adds a new #GtkMenuItem to the end of the menu's item list. Adds a new #GtkMenuItem to the beginning of the menu's item list. </para> -@menu_child: <!-- # Unused Parameters # --> +@menu_child: @m: @c: @menu: a #GtkMenu. @@ -122,10 +122,10 @@ Adds a new #GtkMenuItem to the menu's item list at the position indicated by @position. </para> +<!-- # Unused Parameters # --> @menu: a #GtkMenu. @child: The #GtkMenuItem to add. @pos: -<!-- # Unused Parameters # --> @position: The position in the item list where @child is added. Positions are numbered from 0 to n-1. diff --git a/docs/reference/gtk/tmpl/gtknotebook.sgml b/docs/reference/gtk/tmpl/gtknotebook.sgml index 5ed3d8534c..2965acfa7f 100644 --- a/docs/reference/gtk/tmpl/gtknotebook.sgml +++ b/docs/reference/gtk/tmpl/gtknotebook.sgml @@ -132,6 +132,15 @@ Deprecated compatibility macro. @Returns: +<!-- ##### MACRO gtk_notebook_set_page ##### --> +<para> +</para> + +<!-- # Unused Parameters # --> +@notebook: +@page_num: + + <!-- ##### FUNCTION gtk_notebook_next_page ##### --> <para> </para> diff --git a/docs/reference/gtk/tmpl/gtkwindow.sgml b/docs/reference/gtk/tmpl/gtkwindow.sgml index b601a6e9bd..6e38db29a0 100644 --- a/docs/reference/gtk/tmpl/gtkwindow.sgml +++ b/docs/reference/gtk/tmpl/gtkwindow.sgml @@ -128,6 +128,26 @@ the child gets a larger allocation than it requests. it's larger +<!-- ##### FUNCTION gtk_window_set_resizeable ##### --> +<para> + +</para> + +@window: +@setting: +<!-- # Unused Parameters # --> +@resizeable: + + +<!-- ##### FUNCTION gtk_window_get_resizeable ##### --> +<para> + +</para> + +@window: +@Returns: + + <!-- ##### FUNCTION gtk_window_add_accel_group ##### --> <para> diff --git a/gtk/gtktextbtree.c b/gtk/gtktextbtree.c index b3e84c1857..492bcae830 100644 --- a/gtk/gtktextbtree.c +++ b/gtk/gtktextbtree.c @@ -102,7 +102,12 @@ struct _NodeData { gint height; gint width : 24; - /* boolean indicating whether the height/width need to be recomputed */ + /* boolean indicating whether the lines below this node are in need of validation. + * However, width/height should always represent the current total width and + * max height for lines below this node; the valid flag indicates whether the + * width/height on the lines needs recomputing, not whether the totals + * need recomputing. + */ gint valid : 8; }; @@ -572,7 +577,10 @@ _gtk_text_btree_delete (GtkTextIter *start, gtk_text_iter_order (start, end); tree = _gtk_text_iter_get_btree (start); - + + if (gtk_debug_flags & GTK_DEBUG_TEXT) + _gtk_text_btree_check (tree); + { /* * The code below is ugly, but it's needed to make sure there @@ -611,7 +619,7 @@ _gtk_text_btree_delete (GtkTextIter *start, } tags = _gtk_text_btree_get_tags (end, - &array_size); + &array_size); if (tags != NULL) { @@ -701,6 +709,9 @@ _gtk_text_btree_delete (GtkTextIter *start, for (node = curnode; node != NULL; node = node->parent) { + /* Don't update node->num_chars, because + * that was done when we deleted the segments. + */ node->num_lines -= 1; } @@ -791,21 +802,32 @@ _gtk_text_btree_delete (GtkTextIter *start, { BTreeView *view; GtkTextBTreeNode *ancestor_node; - GtkTextLine *prevline; + int chars_moved; + /* last_seg was appended to start_line up at the top of this function */ + chars_moved = 0; for (seg = last_seg; seg != NULL; seg = seg->next) { + chars_moved += seg->char_count; if (seg->type->lineChangeFunc != NULL) { (*seg->type->lineChangeFunc)(seg, end_line); } } + + for (node = start_line->parent; node != NULL; + node = node->parent) + { + node->num_chars += chars_moved; + } + curnode = end_line->parent; for (node = curnode; node != NULL; node = node->parent) { + node->num_chars -= chars_moved; node->num_lines--; } curnode->num_children--; @@ -881,6 +903,9 @@ _gtk_text_btree_delete (GtkTextIter *start, view = view->next; } + /* avoid dangling pointer */ + deleted_lines = NULL; + gtk_text_btree_rebalance (tree, curnode); } diff --git a/gtk/gtktexttag.c b/gtk/gtktexttag.c index 34132238ed..93f1313db3 100644 --- a/gtk/gtktexttag.c +++ b/gtk/gtktexttag.c @@ -1945,6 +1945,7 @@ _gtk_text_attributes_fill_from_tags (GtkTextAttributes *dest, GtkTextTag *tag = tags[n]; GtkTextAttributes *vals = tag->values; + g_assert (tag->table != NULL); if (n > 0) g_assert (tags[n]->priority > tags[n-1]->priority); diff --git a/gtk/gtktextview.c b/gtk/gtktextview.c index 3c10bbbc54..3a70646c51 100644 --- a/gtk/gtktextview.c +++ b/gtk/gtktextview.c @@ -288,6 +288,7 @@ static void gtk_text_view_queue_scroll (GtkTextView *text_view, gdouble yalign); static gboolean gtk_text_view_flush_scroll (GtkTextView *text_view); +static void gtk_text_view_update_adjustments (GtkTextView *text_view); /* Container methods */ static void gtk_text_view_add (GtkContainer *container, @@ -1233,6 +1234,8 @@ gtk_text_view_get_line_at_y (GtkTextView *text_view, static gboolean set_adjustment_clamped (GtkAdjustment *adj, gdouble val) { + DV (g_print (" Setting adj to raw value %g\n", val)); + /* We don't really want to clamp to upper; we want to clamp to upper - page_size which is the highest value the scrollbar will let us reach. */ @@ -1244,6 +1247,7 @@ set_adjustment_clamped (GtkAdjustment *adj, gdouble val) if (val != adj->value) { + DV (g_print (" Setting adj to clamped value %g\n", val)); gtk_adjustment_set_value (adj, val); return TRUE; } @@ -1306,7 +1310,7 @@ gtk_text_view_scroll_to_iter (GtkTextView *text_view, if (!GTK_WIDGET_MAPPED (widget)) { - g_warning ("%s: calling this function before mapping the GtkTextView doesn't make sense, maybe try gtk_text_view_scroll_to_mark() instead", G_STRLOC); + g_warning ("gtk_text_view_scroll_to_iter(): calling this function before showing the GtkTextView doesn't make sense, maybe try gtk_text_view_scroll_to_mark() instead"); return FALSE; } @@ -1314,6 +1318,8 @@ gtk_text_view_scroll_to_iter (GtkTextView *text_view, iter, &rect); + DV (g_print (" target rect %d,%d %d x %d\n", rect.x, rect.y, rect.width, rect.height)); + current_x_scroll = text_view->xoffset; current_y_scroll = text_view->yoffset; @@ -1380,6 +1386,8 @@ gtk_text_view_scroll_to_iter (GtkTextView *text_view, { retval = set_adjustment_clamped (get_vadjustment (text_view), current_y_scroll + scroll_inc); + + DV (g_print (" vert increment %d\n", scroll_inc)); } /* Horizontal scroll */ @@ -1415,8 +1423,10 @@ gtk_text_view_scroll_to_iter (GtkTextView *text_view, { retval = set_adjustment_clamped (get_hadjustment (text_view), current_x_scroll + scroll_inc); - } + DV (g_print (" horiz increment %d\n", scroll_inc)); + } + if (retval) DV(g_print (">Actually scrolled ("G_STRLOC")\n")); else @@ -1473,9 +1483,8 @@ gtk_text_view_queue_scroll (GtkTextView *text_view, static gboolean gtk_text_view_flush_scroll (GtkTextView *text_view) { - GtkTextIter iter, start, end; + GtkTextIter iter; GtkTextPendingScroll *scroll; - gint y0, y1, height; gboolean retval; DV(g_print(G_STRLOC"\n")); @@ -1490,22 +1499,16 @@ gtk_text_view_flush_scroll (GtkTextView *text_view) gtk_text_buffer_get_iter_at_mark (get_buffer (text_view), &iter, scroll->mark); - start = iter; - end = iter; - - /* Force-validate the region around the iterator, at least the lines - * on either side, so that we can meaningfully get the iter location + /* Validate arbitrary area around the scroll destination, so the adjustment + * can meaningfully point into that area */ - gtk_text_iter_backward_line (&start); - gtk_text_iter_forward_line (&end); - - gtk_text_layout_get_line_yrange (text_view->layout, &start, &y0, NULL); - gtk_text_layout_get_line_yrange (text_view->layout, &end, &y1, &height); - DV(g_print (">Validating scroll destination ("G_STRLOC")\n")); - gtk_text_layout_validate_yrange (text_view->layout, &start, y0, y1 + height); - + gtk_text_layout_validate_yrange (text_view->layout, &iter, -300, 300); + DV(g_print (">Done validating scroll destination ("G_STRLOC")\n")); + + /* Ensure we have updated width/height */ + gtk_text_view_update_adjustments (text_view); retval = gtk_text_view_scroll_to_iter (text_view, &iter, @@ -1524,7 +1527,7 @@ gtk_text_view_set_adjustment_upper (GtkAdjustment *adj, gdouble upper) { if (upper != adj->upper) { - gdouble min = MAX (0., upper - adj->page_size); + gdouble min = MAX (0.0, upper - adj->page_size); gboolean value_changed = FALSE; adj->upper = upper; @@ -1540,7 +1543,7 @@ gtk_text_view_set_adjustment_upper (GtkAdjustment *adj, gdouble upper) if (value_changed) { - DV(g_print(">Changed adj value because upper descreased ("G_STRLOC")\n")); + DV(g_print(">Changed adj value because upper decreased ("G_STRLOC")\n")); gtk_signal_emit_by_name (GTK_OBJECT (adj), "value_changed"); } } @@ -3709,6 +3712,10 @@ cursor_blinks (GtkTextView *text_view) GtkSettings *settings = gtk_widget_get_settings (GTK_WIDGET (text_view)); gboolean blink; +#ifdef DEBUG_VALIDATION_AND_SCROLLING + return FALSE; +#endif + g_object_get (G_OBJECT (settings), "gtk-cursor-blink", &blink, NULL); return blink; } @@ -3776,10 +3783,6 @@ gtk_text_view_stop_cursor_blink (GtkTextView *text_view) static void gtk_text_view_check_cursor_blink (GtkTextView *text_view) { -#ifdef DEBUG_VALIDATION_AND_SCROLLING - return; -#endif - if (text_view->layout != NULL && text_view->cursor_visible && GTK_WIDGET_HAS_FOCUS (text_view)) @@ -4001,7 +4004,8 @@ gtk_text_view_scroll_pages (GtkTextView *text_view, } gtk_text_layout_validate_yrange (text_view->layout, &anchor, y0, y1); - + /* FIXME do we need to update the adjustment ranges here? */ + gtk_text_view_get_virtual_cursor_pos (text_view, &cursor_x_pos, &cursor_y_pos); newval = adj->value; diff --git a/tests/testtext.c b/tests/testtext.c index 8a348be36d..516128b65e 100644 --- a/tests/testtext.c +++ b/tests/testtext.c @@ -191,6 +191,9 @@ msgbox_key_press_cb (GtkWidget *widget, GdkEventKey *event, gpointer data) return FALSE; } +/* Don't copy this example, it's all crack-smoking - you can just use + * GtkMessageDialog now + */ gint msgbox_run (GtkWindow *parent, const char *message, @@ -842,6 +845,35 @@ do_example (gpointer callback_data, view_add_example_widgets (new_view); } + +static void +do_insert_and_scroll (gpointer callback_data, + guint callback_action, + GtkWidget *widget) +{ + View *view = view_from_widget (widget); + GtkTextBuffer *buffer; + GtkTextIter start, end; + GtkTextMark *mark; + + buffer = view->buffer->buffer; + + gtk_text_buffer_get_bounds (buffer, &start, &end); + mark = gtk_text_buffer_create_mark (buffer, NULL, &end, /* right grav */ FALSE); + + gtk_text_iter_backward_char (&end); + gtk_text_buffer_insert (buffer, &end, + "Hello this is multiple lines of text\n" + "Line 1\n" "Line 2\n" + "Line 3\n" "Line 4\n" + "Line 5\n", + -1); + + gtk_text_view_scroll_to_mark (GTK_TEXT_VIEW (view->text_view), mark, + 0, TRUE, 0.0, 1.0); + gtk_text_buffer_delete_mark (buffer, mark); +} + static void do_wrap_changed (gpointer callback_data, guint callback_action, @@ -1268,6 +1300,7 @@ static GtkItemFactoryEntry menu_items[] = { "/Attributes/Properties", NULL, do_properties, 0, NULL }, { "/_Test", NULL, 0, 0, "<Branch>" }, { "/Test/_Example", NULL, do_example, 0, NULL }, + { "/Test/_Insert and scroll", NULL, do_insert_and_scroll, 0, NULL }, }; static gboolean |