[gtksourceview/wip/iter-fix-bug: 3/3] iter: fix a bug in get_leading_spaces_end_boundary()



commit 435bd74989e0a3b5cc33875fa9cfbffa2f2ef0f5
Author: Sébastien Wilmet <swilmet gnome org>
Date:   Fri Apr 21 12:59:17 2017 +0200

    iter: fix a bug in get_leading_spaces_end_boundary()
    
    _gtk_source_iter_get_leading_spaces_end_boundary() moved to the
    following lines if the line at iter doesn't contain text, because
    g_unichar_isspace() returns TRUE for \n and \r too.

 gtksourceview/gtksourceiter.c |    2 +-
 testsuite/test-iter.c         |   27 +++++++++++++++++++++++++++
 2 files changed, 28 insertions(+), 1 deletions(-)
---
diff --git a/gtksourceview/gtksourceiter.c b/gtksourceview/gtksourceiter.c
index 7ca7516..504e6f2 100644
--- a/gtksourceview/gtksourceiter.c
+++ b/gtksourceview/gtksourceiter.c
@@ -653,7 +653,7 @@ _gtk_source_iter_get_leading_spaces_end_boundary (const GtkTextIter *iter,
        *leading_end = *iter;
        gtk_text_iter_set_line_offset (leading_end, 0);
 
-       while (!gtk_text_iter_is_end (leading_end))
+       while (!gtk_text_iter_ends_line (leading_end))
        {
                gunichar ch = gtk_text_iter_get_char (leading_end);
 
diff --git a/testsuite/test-iter.c b/testsuite/test-iter.c
index ae4f887..3a9399f 100644
--- a/testsuite/test-iter.c
+++ b/testsuite/test-iter.c
@@ -394,6 +394,31 @@ test_backward_word_start (void)
        check_word_boundaries_movement (FALSE, "--__--", 2, 0, TRUE);
 }
 
+static void
+check_get_leading_spaces_end_boundary (const gchar *text,
+                                      gint         iter_offset,
+                                      gint         expected_leading_end_offset)
+{
+       GtkTextBuffer *buffer;
+       GtkTextIter iter;
+       GtkTextIter leading_end;
+
+       buffer = gtk_text_buffer_new (NULL);
+       gtk_text_buffer_set_text (buffer, text, -1);
+
+       gtk_text_buffer_get_iter_at_offset (buffer, &iter, iter_offset);
+       _gtk_source_iter_get_leading_spaces_end_boundary (&iter, &leading_end);
+       g_assert_cmpint (gtk_text_iter_get_offset (&leading_end), ==, expected_leading_end_offset);
+
+       g_object_unref (buffer);
+}
+
+static void
+test_get_leading_spaces_end_boundary (void)
+{
+       check_get_leading_spaces_end_boundary (" \n", 0, 1);
+}
+
 int
 main (int argc, char **argv)
 {
@@ -413,5 +438,7 @@ main (int argc, char **argv)
        g_test_add_func ("/Iter/custom-word/forward", test_forward_word_end);
        g_test_add_func ("/Iter/custom-word/backward", test_backward_word_start);
 
+       g_test_add_func ("/Iter/get_leading_spaces_end_boundary", test_get_leading_spaces_end_boundary);
+
        return g_test_run ();
 }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]