diff options
author | Owen Taylor <otaylor@redhat.com> | 1998-08-25 22:22:12 +0000 |
---|---|---|
committer | Owen Taylor <otaylor@src.gnome.org> | 1998-08-25 22:22:12 +0000 |
commit | 1dafcb2a24bea9b0fc4de0e66ac90a3a5667ade7 (patch) | |
tree | d5f957bd1f15697f1ed56891a2087412151fccef /gtk/gtktext.c | |
parent | 155da3a8c540f316dc1dac3b152d9c4bda1fba7e (diff) | |
download | gtk+-1dafcb2a24bea9b0fc4de0e66ac90a3a5667ade7.tar.gz |
Make sure the mark we pass to line start is the beginning of a real line,
Tue Aug 25 16:52:47 1998 Owen Taylor <otaylor@redhat.com>
* gtk/gtktext.c (recompute_geometry): Make sure the
mark we pass to line start is the beginning of a
real line, not a wrapped one.
Diffstat (limited to 'gtk/gtktext.c')
-rw-r--r-- | gtk/gtktext.c | 31 |
1 files changed, 23 insertions, 8 deletions
diff --git a/gtk/gtktext.c b/gtk/gtktext.c index ba0c1e697d..aa67e407ea 100644 --- a/gtk/gtktext.c +++ b/gtk/gtktext.c @@ -5087,21 +5087,36 @@ gtk_text_update_text (GtkEditable *editable, static void recompute_geometry (GtkText* text) { - GtkPropertyMark start_mark; + GtkPropertyMark mark, start_mark; + GList *new_lines; gint height; gint width; free_cache (text); - start_mark = set_vertical_scroll (text); - + mark = start_mark = set_vertical_scroll (text); + + /* We need a real start of a line when calling fetch_lines(). + * not the start of a wrapped line. + */ + while (mark.index > 0 && + GTK_TEXT_INDEX (text, mark.index - 1) != LINE_DELIM) + decrement_mark (&mark); + gdk_window_get_size (text->text_area, &width, &height); - text->line_start_cache = fetch_lines (text, - &start_mark, - NULL, - FetchLinesPixels, - height + text->first_cut_pixels); + new_lines = fetch_lines (text, + &mark, + NULL, + FetchLinesPixels, + height + text->first_cut_pixels); + + /* Now work forward to the actual first onscreen line */ + + while (CACHE_DATA (new_lines).start.index < start_mark.index) + new_lines = new_lines->next; + + text->line_start_cache = new_lines; find_cursor (text, TRUE); } |