From 77dc57e96019d5badb9292e03edead804bc6d8ec Mon Sep 17 00:00:00 2001 From: Havoc Pennington Date: Wed, 3 Oct 2001 20:49:10 +0000 Subject: [PATCH] allow testing the end position 2001-10-03 Havoc Pennington * gtk/gtktextiter.c (test_log_attrs): allow testing the end position * gtk/gtktextbuffer.c (compute_log_attrs): update for pango changes * tests/testtextbuffer.c (logical_motion_tests): updates --- ChangeLog | 10 ++++++++++ ChangeLog.pre-2-0 | 10 ++++++++++ ChangeLog.pre-2-10 | 10 ++++++++++ ChangeLog.pre-2-2 | 10 ++++++++++ ChangeLog.pre-2-4 | 10 ++++++++++ ChangeLog.pre-2-6 | 10 ++++++++++ ChangeLog.pre-2-8 | 10 ++++++++++ gtk/gtktextbuffer.c | 10 +++++++--- gtk/gtktextiter.c | 7 +++++-- tests/testtextbuffer.c | 13 +++++++++++++ 10 files changed, 95 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index ce42f2c37a..4e48578c54 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2001-10-03 Havoc Pennington + + * gtk/gtktextiter.c (test_log_attrs): allow testing the end + position + + * gtk/gtktextbuffer.c (compute_log_attrs): update for pango + changes + + * tests/testtextbuffer.c (logical_motion_tests): updates + 2001-10-03 jacob berkman * gtk/gtkwidget.c (gtk_widget_style_get_property): diff --git a/ChangeLog.pre-2-0 b/ChangeLog.pre-2-0 index ce42f2c37a..4e48578c54 100644 --- a/ChangeLog.pre-2-0 +++ b/ChangeLog.pre-2-0 @@ -1,3 +1,13 @@ +2001-10-03 Havoc Pennington + + * gtk/gtktextiter.c (test_log_attrs): allow testing the end + position + + * gtk/gtktextbuffer.c (compute_log_attrs): update for pango + changes + + * tests/testtextbuffer.c (logical_motion_tests): updates + 2001-10-03 jacob berkman * gtk/gtkwidget.c (gtk_widget_style_get_property): diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index ce42f2c37a..4e48578c54 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,13 @@ +2001-10-03 Havoc Pennington + + * gtk/gtktextiter.c (test_log_attrs): allow testing the end + position + + * gtk/gtktextbuffer.c (compute_log_attrs): update for pango + changes + + * tests/testtextbuffer.c (logical_motion_tests): updates + 2001-10-03 jacob berkman * gtk/gtkwidget.c (gtk_widget_style_get_property): diff --git a/ChangeLog.pre-2-2 b/ChangeLog.pre-2-2 index ce42f2c37a..4e48578c54 100644 --- a/ChangeLog.pre-2-2 +++ b/ChangeLog.pre-2-2 @@ -1,3 +1,13 @@ +2001-10-03 Havoc Pennington + + * gtk/gtktextiter.c (test_log_attrs): allow testing the end + position + + * gtk/gtktextbuffer.c (compute_log_attrs): update for pango + changes + + * tests/testtextbuffer.c (logical_motion_tests): updates + 2001-10-03 jacob berkman * gtk/gtkwidget.c (gtk_widget_style_get_property): diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4 index ce42f2c37a..4e48578c54 100644 --- a/ChangeLog.pre-2-4 +++ b/ChangeLog.pre-2-4 @@ -1,3 +1,13 @@ +2001-10-03 Havoc Pennington + + * gtk/gtktextiter.c (test_log_attrs): allow testing the end + position + + * gtk/gtktextbuffer.c (compute_log_attrs): update for pango + changes + + * tests/testtextbuffer.c (logical_motion_tests): updates + 2001-10-03 jacob berkman * gtk/gtkwidget.c (gtk_widget_style_get_property): diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index ce42f2c37a..4e48578c54 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,13 @@ +2001-10-03 Havoc Pennington + + * gtk/gtktextiter.c (test_log_attrs): allow testing the end + position + + * gtk/gtktextbuffer.c (compute_log_attrs): update for pango + changes + + * tests/testtextbuffer.c (logical_motion_tests): updates + 2001-10-03 jacob berkman * gtk/gtkwidget.c (gtk_widget_style_get_property): diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index ce42f2c37a..4e48578c54 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,13 @@ +2001-10-03 Havoc Pennington + + * gtk/gtktextiter.c (test_log_attrs): allow testing the end + position + + * gtk/gtktextbuffer.c (compute_log_attrs): update for pango + changes + + * tests/testtextbuffer.c (logical_motion_tests): updates + 2001-10-03 jacob berkman * gtk/gtkwidget.c (gtk_widget_style_get_property): diff --git a/gtk/gtktextbuffer.c b/gtk/gtktextbuffer.c index 12d8eeb270..ec2ded7e49 100644 --- a/gtk/gtktextbuffer.c +++ b/gtk/gtktextbuffer.c @@ -3419,11 +3419,15 @@ compute_log_attrs (const GtkTextIter *iter, if (char_lenp) *char_lenp = char_len; - attrs = g_new (PangoLogAttr, char_len); - + attrs = g_new (PangoLogAttr, char_len + 1); + + /* FIXME we need to follow PangoLayout and allow different language + * tags within the paragraph + */ pango_get_log_attrs (paragraph, byte_len, -1, gtk_text_iter_get_language (&start), - attrs); + attrs, + char_len + 1); g_free (paragraph); diff --git a/gtk/gtktextiter.c b/gtk/gtktextiter.c index a3245437c9..62cbde55b5 100644 --- a/gtk/gtktextiter.c +++ b/gtk/gtktextiter.c @@ -2852,10 +2852,13 @@ test_log_attrs (const GtkTextIter *iter, offset = gtk_text_iter_get_line_offset (iter); /* char_len may be 0 and attrs will be NULL if so, if - * iter is the end iter and the last line is empty + * iter is the end iter and the last line is empty. + * + * offset may be equal to char_len, since attrs contains an entry + * for one past the end */ - if (offset < char_len) + if (offset <= char_len) result = (* func) (attrs, offset, 0, char_len); return result; diff --git a/tests/testtextbuffer.c b/tests/testtextbuffer.c index 3c6e6f3db6..175deb9857 100644 --- a/tests/testtextbuffer.c +++ b/tests/testtextbuffer.c @@ -957,6 +957,9 @@ logical_motion_tests (void) if (!gtk_text_iter_is_end (&iter)) g_error ("Expected to stop at the end iterator\n"); + + if (!gtk_text_iter_is_cursor_position (&iter)) + g_error ("Should be a cursor position before the end iterator"); if (i != expected_steps) g_error ("Expected %d steps, there were actually %d\n", expected_steps, i); @@ -1016,6 +1019,11 @@ logical_motion_tests (void) pos, expected[i]); } + if (i != 0 && + !gtk_text_iter_is_end (&iter) && + !gtk_text_iter_ends_sentence (&iter)) + g_error ("Iterator at %d should end a sentence", pos); + ++i; } while (gtk_text_iter_forward_sentence_end (&iter)); @@ -1054,6 +1062,11 @@ logical_motion_tests (void) pos, expected[i]); } + if (pos != 0 && + !gtk_text_iter_is_end (&iter) && + !gtk_text_iter_starts_sentence (&iter)) + g_error ("Iterator at %d should start a sentence", pos); + ++i; } while (gtk_text_iter_backward_sentence_start (&iter));