diff --git a/gtk/a11y/gtktextviewaccessible.c b/gtk/a11y/gtktextviewaccessible.c index b620c9cca5..97db302364 100644 --- a/gtk/a11y/gtktextviewaccessible.c +++ b/gtk/a11y/gtktextviewaccessible.c @@ -280,6 +280,7 @@ gtk_text_view_accessible_get_text_before_offset (AtkText *text, gtk_text_view_backward_display_line_start (view, &start); end = start; gtk_text_view_backward_display_line (view, &start); + gtk_text_view_backward_display_line_start (view, &start); } else if (boundary_type == ATK_TEXT_BOUNDARY_LINE_END) { @@ -288,12 +289,14 @@ gtk_text_view_accessible_get_text_before_offset (AtkText *text, { gtk_text_view_backward_display_line (view, &start); end = start; + gtk_text_view_forward_display_line_end (view, &end); if (!gtk_text_iter_is_start (&start)) { - gtk_text_view_backward_display_line (view, &start); - gtk_text_view_forward_display_line_end (view, &start); + if (gtk_text_view_backward_display_line (view, &start)) + gtk_text_view_forward_display_line_end (view, &start); + else + gtk_text_iter_set_offset (&start, 0); } - gtk_text_view_forward_display_line_end (view, &end); } else end = start; diff --git a/gtk/gtkpango.c b/gtk/gtkpango.c index 2181b7b40b..6f72eeffaa 100644 --- a/gtk/gtkpango.c +++ b/gtk/gtkpango.c @@ -1143,7 +1143,7 @@ _gtk_pango_get_text_after (PangoLayout *layout, if (end < n_attrs - 1) { end = _gtk_pango_move_words (layout, end, 1); - while (!attrs[end].is_word_end && end < n_attrs - 1) + while (!attrs[end].is_word_start && end < n_attrs - 1) end = _gtk_pango_move_chars (layout, end, 1); } break; @@ -1158,7 +1158,7 @@ _gtk_pango_get_text_after (PangoLayout *layout, case ATK_TEXT_BOUNDARY_SENTENCE_START: if (_gtk_pango_is_inside_sentence (layout, end)) end = _gtk_pango_move_sentences (layout, end, 1); - while (!attrs[end].is_sentence_end && end < n_attrs - 1) + while (!attrs[end].is_sentence_start && end < n_attrs - 1) end = _gtk_pango_move_chars (layout, end, 1); start = end; if (end < n_attrs - 1) @@ -1245,7 +1245,7 @@ _gtk_pango_get_text_at (PangoLayout *layout, if (_gtk_pango_is_inside_word (layout, end)) end = _gtk_pango_move_words (layout, end, 1); while (!attrs[end].is_word_start && end < n_attrs - 1) - end = _gtk_pango_move_chars (layout, end, -1); + end = _gtk_pango_move_chars (layout, end, 1); break; case ATK_TEXT_BOUNDARY_WORD_END: @@ -1262,7 +1262,7 @@ _gtk_pango_get_text_at (PangoLayout *layout, start = _gtk_pango_move_sentences (layout, start, -1); if (_gtk_pango_is_inside_sentence (layout, end)) end = _gtk_pango_move_sentences (layout, end, 1); - while (!attrs[end].is_word_end && end < n_attrs - 1) + while (!attrs[end].is_sentence_start && end < n_attrs - 1) end = _gtk_pango_move_chars (layout, end, 1); break; diff --git a/tests/a11y/text.c b/tests/a11y/text.c index 80b8b77fcb..254df16091 100644 --- a/tests/a11y/text.c +++ b/tests/a11y/text.c @@ -335,69 +335,69 @@ test_words (GtkWidget *widget) AtkText *atk_text; const gchar *text = "abc! def\nghi jkl\nmno"; Word expected[] = { - { -1, 0, ATK_TEXT_BOUNDARY_CHAR, 0, 0, "" }, - { -1, 1, ATK_TEXT_BOUNDARY_CHAR, 0, 1, "a" }, - { -1, 2, ATK_TEXT_BOUNDARY_CHAR, 1, 2, "b" }, - { -1, 3, ATK_TEXT_BOUNDARY_CHAR, 2, 3, "c" }, - { -1, 4, ATK_TEXT_BOUNDARY_CHAR, 3, 4, "!" }, - { -1, 5, ATK_TEXT_BOUNDARY_CHAR, 4, 5, " " }, - { -1, 6, ATK_TEXT_BOUNDARY_CHAR, 5, 6, "d" }, - { -1, 7, ATK_TEXT_BOUNDARY_CHAR, 6, 7, "e" }, - { -1, 8, ATK_TEXT_BOUNDARY_CHAR, 7, 8, "f" }, - { -1, 9, ATK_TEXT_BOUNDARY_CHAR, 8, 9, "\n" }, - { -1, 10, ATK_TEXT_BOUNDARY_CHAR, 9, 10, "g" }, - { -1, 11, ATK_TEXT_BOUNDARY_CHAR, 10, 11, "h" }, - { -1, 12, ATK_TEXT_BOUNDARY_CHAR, 11, 12, "i" }, - { -1, 13, ATK_TEXT_BOUNDARY_CHAR, 12, 13, " " }, - { -1, 14, ATK_TEXT_BOUNDARY_CHAR, 13, 14, "j" }, - { -1, 15, ATK_TEXT_BOUNDARY_CHAR, 14, 15, "k" }, - { -1, 16, ATK_TEXT_BOUNDARY_CHAR, 15, 16, "l" }, - { -1, 17, ATK_TEXT_BOUNDARY_CHAR, 16, 17, "\n" }, - { -1, 18, ATK_TEXT_BOUNDARY_CHAR, 17, 18, "m" }, - { -1, 19, ATK_TEXT_BOUNDARY_CHAR, 18, 19, "n" }, - { -1, 20, ATK_TEXT_BOUNDARY_CHAR, 19, 20, "o" }, - { -1, 0, ATK_TEXT_BOUNDARY_WORD_START, 0, 0, "" }, - { -1, 1, ATK_TEXT_BOUNDARY_WORD_START, 0, 0, "" }, - { -1, 2, ATK_TEXT_BOUNDARY_WORD_START, 0, 0, "" }, - { -1, 3, ATK_TEXT_BOUNDARY_WORD_START, 0, 0, "" }, - { -1, 4, ATK_TEXT_BOUNDARY_WORD_START, 0, 0, "" }, - { -1, 5, ATK_TEXT_BOUNDARY_WORD_START, 0, 5, "abc! " }, - { -1, 6, ATK_TEXT_BOUNDARY_WORD_START, 0, 5, "abc! " }, - { -1, 7, ATK_TEXT_BOUNDARY_WORD_START, 0, 5, "abc! " }, - { -1, 8, ATK_TEXT_BOUNDARY_WORD_START, 0, 5, "abc! " }, - { -1, 9, ATK_TEXT_BOUNDARY_WORD_START, 5, 9, "def\n" }, - { -1, 10, ATK_TEXT_BOUNDARY_WORD_START, 5, 9, "def\n" }, - { -1, 11, ATK_TEXT_BOUNDARY_WORD_START, 5, 9, "def\n" }, - { -1, 12, ATK_TEXT_BOUNDARY_WORD_START, 5, 9, "def\n" }, - { -1, 13, ATK_TEXT_BOUNDARY_WORD_START, 9, 13, "ghi " }, - { -1, 14, ATK_TEXT_BOUNDARY_WORD_START, 9, 13, "ghi " }, - { -1, 15, ATK_TEXT_BOUNDARY_WORD_START, 9, 13, "ghi " }, - { -1, 16, ATK_TEXT_BOUNDARY_WORD_START, 9, 13, "ghi " }, - { -1, 17, ATK_TEXT_BOUNDARY_WORD_START, 13, 17, "jkl\n" }, - { -1, 18, ATK_TEXT_BOUNDARY_WORD_START, 13, 17, "jkl\n" }, - { -1, 19, ATK_TEXT_BOUNDARY_WORD_START, 13, 17, "jkl\n" }, - { -1, 20, ATK_TEXT_BOUNDARY_WORD_START, 13, 17, "jkl\n" }, - { -1, 0, ATK_TEXT_BOUNDARY_WORD_END, 0, 0, "" }, - { -1, 1, ATK_TEXT_BOUNDARY_WORD_END, 0, 0, "" }, - { -1, 2, ATK_TEXT_BOUNDARY_WORD_END, 0, 0, "" }, - { -1, 3, ATK_TEXT_BOUNDARY_WORD_END, 0, 3, "abc" }, - { -1, 4, ATK_TEXT_BOUNDARY_WORD_END, 0, 3, "abc" }, - { -1, 5, ATK_TEXT_BOUNDARY_WORD_END, 0, 3, "abc" }, - { -1, 6, ATK_TEXT_BOUNDARY_WORD_END, 0, 3, "abc" }, - { -1, 7, ATK_TEXT_BOUNDARY_WORD_END, 0, 3, "abc" }, - { -1, 8, ATK_TEXT_BOUNDARY_WORD_END, 3, 8, "! def" }, - { -1, 9, ATK_TEXT_BOUNDARY_WORD_END, 3, 8, "! def" }, - { -1, 10, ATK_TEXT_BOUNDARY_WORD_END, 3, 8, "! def" }, - { -1, 11, ATK_TEXT_BOUNDARY_WORD_END, 3, 8, "! def" }, - { -1, 12, ATK_TEXT_BOUNDARY_WORD_END, 8, 12, "\nghi" }, - { -1, 13, ATK_TEXT_BOUNDARY_WORD_END, 8, 12, "\nghi" }, - { -1, 14, ATK_TEXT_BOUNDARY_WORD_END, 8, 12, "\nghi" }, - { -1, 15, ATK_TEXT_BOUNDARY_WORD_END, 8, 12, "\nghi" }, - { -1, 16, ATK_TEXT_BOUNDARY_WORD_END, 12, 16, " jkl" }, - { -1, 17, ATK_TEXT_BOUNDARY_WORD_END, 12, 16, " jkl" }, - { -1, 18, ATK_TEXT_BOUNDARY_WORD_END, 12, 16, " jkl" }, - { -1, 19, ATK_TEXT_BOUNDARY_WORD_END, 12, 16, " jkl" }, - { -1, 20, ATK_TEXT_BOUNDARY_WORD_END, 16, 20, "\nmno" }, + { -1, 0, ATK_TEXT_BOUNDARY_CHAR, 0, 0, "" }, + { -1, 1, ATK_TEXT_BOUNDARY_CHAR, 0, 1, "a" }, + { -1, 2, ATK_TEXT_BOUNDARY_CHAR, 1, 2, "b" }, + { -1, 3, ATK_TEXT_BOUNDARY_CHAR, 2, 3, "c" }, + { -1, 4, ATK_TEXT_BOUNDARY_CHAR, 3, 4, "!" }, + { -1, 5, ATK_TEXT_BOUNDARY_CHAR, 4, 5, " " }, + { -1, 6, ATK_TEXT_BOUNDARY_CHAR, 5, 6, "d" }, + { -1, 7, ATK_TEXT_BOUNDARY_CHAR, 6, 7, "e" }, + { -1, 8, ATK_TEXT_BOUNDARY_CHAR, 7, 8, "f" }, + { -1, 9, ATK_TEXT_BOUNDARY_CHAR, 8, 9, "\n" }, + { -1, 10, ATK_TEXT_BOUNDARY_CHAR, 9, 10, "g" }, + { -1, 11, ATK_TEXT_BOUNDARY_CHAR, 10, 11, "h" }, + { -1, 12, ATK_TEXT_BOUNDARY_CHAR, 11, 12, "i" }, + { -1, 13, ATK_TEXT_BOUNDARY_CHAR, 12, 13, " " }, + { -1, 14, ATK_TEXT_BOUNDARY_CHAR, 13, 14, "j" }, + { -1, 15, ATK_TEXT_BOUNDARY_CHAR, 14, 15, "k" }, + { -1, 16, ATK_TEXT_BOUNDARY_CHAR, 15, 16, "l" }, + { -1, 17, ATK_TEXT_BOUNDARY_CHAR, 16, 17, "\n" }, + { -1, 18, ATK_TEXT_BOUNDARY_CHAR, 17, 18, "m" }, + { -1, 19, ATK_TEXT_BOUNDARY_CHAR, 18, 19, "n" }, + { -1, 20, ATK_TEXT_BOUNDARY_CHAR, 19, 20, "o" }, + { -1, 0, ATK_TEXT_BOUNDARY_WORD_START, 0, 0, "" }, + { -1, 1, ATK_TEXT_BOUNDARY_WORD_START, 0, 0, "" }, + { -1, 2, ATK_TEXT_BOUNDARY_WORD_START, 0, 0, "" }, + { -1, 3, ATK_TEXT_BOUNDARY_WORD_START, 0, 0, "" }, + { -1, 4, ATK_TEXT_BOUNDARY_WORD_START, 0, 0, "" }, + { -1, 5, ATK_TEXT_BOUNDARY_WORD_START, 0, 5, "abc! " }, + { -1, 6, ATK_TEXT_BOUNDARY_WORD_START, 0, 5, "abc! " }, + { -1, 7, ATK_TEXT_BOUNDARY_WORD_START, 0, 5, "abc! " }, + { -1, 8, ATK_TEXT_BOUNDARY_WORD_START, 0, 5, "abc! " }, + { -1, 9, ATK_TEXT_BOUNDARY_WORD_START, 5, 9, "def\n" }, + { -1, 10, ATK_TEXT_BOUNDARY_WORD_START, 5, 9, "def\n" }, + { -1, 11, ATK_TEXT_BOUNDARY_WORD_START, 5, 9, "def\n" }, + { -1, 12, ATK_TEXT_BOUNDARY_WORD_START, 5, 9, "def\n" }, + { -1, 13, ATK_TEXT_BOUNDARY_WORD_START, 9, 13, "ghi " }, + { -1, 14, ATK_TEXT_BOUNDARY_WORD_START, 9, 13, "ghi " }, + { -1, 15, ATK_TEXT_BOUNDARY_WORD_START, 9, 13, "ghi " }, + { -1, 16, ATK_TEXT_BOUNDARY_WORD_START, 9, 13, "ghi " }, + { -1, 17, ATK_TEXT_BOUNDARY_WORD_START, 13, 17, "jkl\n" }, + { -1, 18, ATK_TEXT_BOUNDARY_WORD_START, 13, 17, "jkl\n" }, + { -1, 19, ATK_TEXT_BOUNDARY_WORD_START, 13, 17, "jkl\n" }, + { -1, 20, ATK_TEXT_BOUNDARY_WORD_START, 13, 17, "jkl\n" }, + { -1, 0, ATK_TEXT_BOUNDARY_WORD_END, 0, 0, "" }, + { -1, 1, ATK_TEXT_BOUNDARY_WORD_END, 0, 0, "" }, + { -1, 2, ATK_TEXT_BOUNDARY_WORD_END, 0, 0, "" }, + { -1, 3, ATK_TEXT_BOUNDARY_WORD_END, 0, 3, "abc" }, + { -1, 4, ATK_TEXT_BOUNDARY_WORD_END, 0, 3, "abc" }, + { -1, 5, ATK_TEXT_BOUNDARY_WORD_END, 0, 3, "abc" }, + { -1, 6, ATK_TEXT_BOUNDARY_WORD_END, 0, 3, "abc" }, + { -1, 7, ATK_TEXT_BOUNDARY_WORD_END, 0, 3, "abc" }, + { -1, 8, ATK_TEXT_BOUNDARY_WORD_END, 3, 8, "! def" }, + { -1, 9, ATK_TEXT_BOUNDARY_WORD_END, 3, 8, "! def" }, + { -1, 10, ATK_TEXT_BOUNDARY_WORD_END, 3, 8, "! def" }, + { -1, 11, ATK_TEXT_BOUNDARY_WORD_END, 3, 8, "! def" }, + { -1, 12, ATK_TEXT_BOUNDARY_WORD_END, 8, 12, "\nghi" }, + { -1, 13, ATK_TEXT_BOUNDARY_WORD_END, 8, 12, "\nghi" }, + { -1, 14, ATK_TEXT_BOUNDARY_WORD_END, 8, 12, "\nghi" }, + { -1, 15, ATK_TEXT_BOUNDARY_WORD_END, 8, 12, "\nghi" }, + { -1, 16, ATK_TEXT_BOUNDARY_WORD_END, 12, 16, " jkl" }, + { -1, 17, ATK_TEXT_BOUNDARY_WORD_END, 12, 16, " jkl" }, + { -1, 18, ATK_TEXT_BOUNDARY_WORD_END, 12, 16, " jkl" }, + { -1, 19, ATK_TEXT_BOUNDARY_WORD_END, 12, 16, " jkl" }, + { -1, 20, ATK_TEXT_BOUNDARY_WORD_END, 16, 20, "\nmno" }, { -1, 0, ATK_TEXT_BOUNDARY_SENTENCE_START, 0, 0, "" }, { -1, 1, ATK_TEXT_BOUNDARY_SENTENCE_START, 0, 0, "" }, { -1, 2, ATK_TEXT_BOUNDARY_SENTENCE_START, 0, 0, "" }, @@ -419,69 +419,363 @@ test_words (GtkWidget *widget) { -1, 18, ATK_TEXT_BOUNDARY_SENTENCE_START, 9, 17, "ghi jkl\n" }, { -1, 19, ATK_TEXT_BOUNDARY_SENTENCE_START, 9, 17, "ghi jkl\n" }, { -1, 20, ATK_TEXT_BOUNDARY_SENTENCE_START, 9, 17, "ghi jkl\n" }, - { -1, 0, ATK_TEXT_BOUNDARY_SENTENCE_END, 0, 0, "" }, - { -1, 1, ATK_TEXT_BOUNDARY_SENTENCE_END, 0, 0, "" }, - { -1, 2, ATK_TEXT_BOUNDARY_SENTENCE_END, 0, 0, "" }, - { -1, 3, ATK_TEXT_BOUNDARY_SENTENCE_END, 0, 0, "" }, - { -1, 4, ATK_TEXT_BOUNDARY_SENTENCE_END, 0, 4, "abc!" }, - { -1, 5, ATK_TEXT_BOUNDARY_SENTENCE_END, 0, 4, "abc!" }, - { -1, 6, ATK_TEXT_BOUNDARY_SENTENCE_END, 0, 4, "abc!" }, - { -1, 7, ATK_TEXT_BOUNDARY_SENTENCE_END, 0, 4, "abc!" }, - { -1, 8, ATK_TEXT_BOUNDARY_SENTENCE_END, 4, 8, " def" }, - { -1, 9, ATK_TEXT_BOUNDARY_SENTENCE_END, 4, 8, " def" }, - { -1, 10, ATK_TEXT_BOUNDARY_SENTENCE_END, 4, 8, " def" }, - { -1, 11, ATK_TEXT_BOUNDARY_SENTENCE_END, 4, 8, " def" }, - { -1, 12, ATK_TEXT_BOUNDARY_SENTENCE_END, 4, 8, " def" }, - { -1, 13, ATK_TEXT_BOUNDARY_SENTENCE_END, 4, 8, " def" }, - { -1, 14, ATK_TEXT_BOUNDARY_SENTENCE_END, 4, 8, " def" }, - { -1, 15, ATK_TEXT_BOUNDARY_SENTENCE_END, 4, 8, " def" }, - { -1, 16, ATK_TEXT_BOUNDARY_SENTENCE_END, 8, 16, "\nghi jkl" }, - { -1, 17, ATK_TEXT_BOUNDARY_SENTENCE_END, 8, 16, "\nghi jkl" }, - { -1, 18, ATK_TEXT_BOUNDARY_SENTENCE_END, 8, 16, "\nghi jkl" }, - { -1, 19, ATK_TEXT_BOUNDARY_SENTENCE_END, 8, 16, "\nghi jkl" }, - { -1, 20, ATK_TEXT_BOUNDARY_SENTENCE_END, 16, 20, "\nmno" }, - { -1, 0, ATK_TEXT_BOUNDARY_LINE_START, 0, 0, "" }, - { -1, 1, ATK_TEXT_BOUNDARY_LINE_START, 0, 0, "" }, - { -1, 2, ATK_TEXT_BOUNDARY_LINE_START, 0, 0, "" }, - { -1, 3, ATK_TEXT_BOUNDARY_LINE_START, 0, 0, "" }, - { -1, 4, ATK_TEXT_BOUNDARY_LINE_START, 0, 0, "" }, - { -1, 5, ATK_TEXT_BOUNDARY_LINE_START, 0, 0, "" }, - { -1, 6, ATK_TEXT_BOUNDARY_LINE_START, 0, 0, "" }, - { -1, 7, ATK_TEXT_BOUNDARY_LINE_START, 0, 0, "" }, - { -1, 8, ATK_TEXT_BOUNDARY_LINE_START, 0, 0, "" }, - { -1, 9, ATK_TEXT_BOUNDARY_LINE_START, 0, 9, "abc! def\n" }, - { -1, 10, ATK_TEXT_BOUNDARY_LINE_START, 0, 9, "abc! def\n" }, - { -1, 11, ATK_TEXT_BOUNDARY_LINE_START, 0, 9, "abc! def\n" }, - { -1, 12, ATK_TEXT_BOUNDARY_LINE_START, 0, 9, "abc! def\n" }, - { -1, 13, ATK_TEXT_BOUNDARY_LINE_START, 0, 9, "abc! def\n" }, - { -1, 14, ATK_TEXT_BOUNDARY_LINE_START, 0, 9, "abc! def\n" }, - { -1, 15, ATK_TEXT_BOUNDARY_LINE_START, 0, 9, "abc! def\n" }, - { -1, 16, ATK_TEXT_BOUNDARY_LINE_START, 0, 9, "abc! def\n" }, - { -1, 17, ATK_TEXT_BOUNDARY_LINE_START, 9, 17, "ghi jkl\n" }, - { -1, 18, ATK_TEXT_BOUNDARY_LINE_START, 9, 17, "ghi jkl\n" }, - { -1, 19, ATK_TEXT_BOUNDARY_LINE_START, 9, 17, "ghi jkl\n" }, - { -1, 20, ATK_TEXT_BOUNDARY_LINE_START, 9, 17, "ghi jkl\n" }, - { -1, 0, ATK_TEXT_BOUNDARY_LINE_END, 0, 0, "" }, - { -1, 1, ATK_TEXT_BOUNDARY_LINE_END, 0, 0, "" }, - { -1, 2, ATK_TEXT_BOUNDARY_LINE_END, 0, 0, "" }, - { -1, 3, ATK_TEXT_BOUNDARY_LINE_END, 0, 0, "" }, - { -1, 4, ATK_TEXT_BOUNDARY_LINE_END, 0, 0, "" }, - { -1, 5, ATK_TEXT_BOUNDARY_LINE_END, 0, 0, "" }, - { -1, 6, ATK_TEXT_BOUNDARY_LINE_END, 0, 0, "" }, - { -1, 7, ATK_TEXT_BOUNDARY_LINE_END, 0, 0, "" }, - { -1, 8, ATK_TEXT_BOUNDARY_LINE_END, 0, 0, "" }, - { -1, 9, ATK_TEXT_BOUNDARY_LINE_END, 0, 8, "abc! def" }, - { -1, 10, ATK_TEXT_BOUNDARY_LINE_END, 0, 8, "abc! def" }, - { -1, 11, ATK_TEXT_BOUNDARY_LINE_END, 0, 8, "abc! def" }, - { -1, 12, ATK_TEXT_BOUNDARY_LINE_END, 0, 8, "abc! def" }, - { -1, 13, ATK_TEXT_BOUNDARY_LINE_END, 0, 8, "abc! def" }, - { -1, 14, ATK_TEXT_BOUNDARY_LINE_END, 0, 8, "abc! def" }, - { -1, 15, ATK_TEXT_BOUNDARY_LINE_END, 0, 8, "abc! def" }, - { -1, 16, ATK_TEXT_BOUNDARY_LINE_END, 0, 8, "abc! def" }, - { -1, 17, ATK_TEXT_BOUNDARY_LINE_END, 8, 16, "\nghi jkl" }, - { -1, 18, ATK_TEXT_BOUNDARY_LINE_END, 8, 16, "\nghi jkl" }, - { -1, 19, ATK_TEXT_BOUNDARY_LINE_END, 8, 16, "\nghi jkl" }, - { -1, 20, ATK_TEXT_BOUNDARY_LINE_END, 8, 16, "\nghi jkl" }, + { -1, 0, ATK_TEXT_BOUNDARY_SENTENCE_END, 0, 0, "" }, + { -1, 1, ATK_TEXT_BOUNDARY_SENTENCE_END, 0, 0, "" }, + { -1, 2, ATK_TEXT_BOUNDARY_SENTENCE_END, 0, 0, "" }, + { -1, 3, ATK_TEXT_BOUNDARY_SENTENCE_END, 0, 0, "" }, + { -1, 4, ATK_TEXT_BOUNDARY_SENTENCE_END, 0, 4, "abc!" }, + { -1, 5, ATK_TEXT_BOUNDARY_SENTENCE_END, 0, 4, "abc!" }, + { -1, 6, ATK_TEXT_BOUNDARY_SENTENCE_END, 0, 4, "abc!" }, + { -1, 7, ATK_TEXT_BOUNDARY_SENTENCE_END, 0, 4, "abc!" }, + { -1, 8, ATK_TEXT_BOUNDARY_SENTENCE_END, 4, 8, " def" }, + { -1, 9, ATK_TEXT_BOUNDARY_SENTENCE_END, 4, 8, " def" }, + { -1, 10, ATK_TEXT_BOUNDARY_SENTENCE_END, 4, 8, " def" }, + { -1, 11, ATK_TEXT_BOUNDARY_SENTENCE_END, 4, 8, " def" }, + { -1, 12, ATK_TEXT_BOUNDARY_SENTENCE_END, 4, 8, " def" }, + { -1, 13, ATK_TEXT_BOUNDARY_SENTENCE_END, 4, 8, " def" }, + { -1, 14, ATK_TEXT_BOUNDARY_SENTENCE_END, 4, 8, " def" }, + { -1, 15, ATK_TEXT_BOUNDARY_SENTENCE_END, 4, 8, " def" }, + { -1, 16, ATK_TEXT_BOUNDARY_SENTENCE_END, 8, 16, "\nghi jkl" }, + { -1, 17, ATK_TEXT_BOUNDARY_SENTENCE_END, 8, 16, "\nghi jkl" }, + { -1, 18, ATK_TEXT_BOUNDARY_SENTENCE_END, 8, 16, "\nghi jkl" }, + { -1, 19, ATK_TEXT_BOUNDARY_SENTENCE_END, 8, 16, "\nghi jkl" }, + { -1, 20, ATK_TEXT_BOUNDARY_SENTENCE_END, 16, 20, "\nmno" }, + { -1, 0, ATK_TEXT_BOUNDARY_LINE_START, 0, 0, "" }, + { -1, 1, ATK_TEXT_BOUNDARY_LINE_START, 0, 0, "" }, + { -1, 2, ATK_TEXT_BOUNDARY_LINE_START, 0, 0, "" }, + { -1, 3, ATK_TEXT_BOUNDARY_LINE_START, 0, 0, "" }, + { -1, 4, ATK_TEXT_BOUNDARY_LINE_START, 0, 0, "" }, + { -1, 5, ATK_TEXT_BOUNDARY_LINE_START, 0, 0, "" }, + { -1, 6, ATK_TEXT_BOUNDARY_LINE_START, 0, 0, "" }, + { -1, 7, ATK_TEXT_BOUNDARY_LINE_START, 0, 0, "" }, + { -1, 8, ATK_TEXT_BOUNDARY_LINE_START, 0, 0, "" }, + { -1, 9, ATK_TEXT_BOUNDARY_LINE_START, 0, 9, "abc! def\n" }, + { -1, 10, ATK_TEXT_BOUNDARY_LINE_START, 0, 9, "abc! def\n" }, + { -1, 11, ATK_TEXT_BOUNDARY_LINE_START, 0, 9, "abc! def\n" }, + { -1, 12, ATK_TEXT_BOUNDARY_LINE_START, 0, 9, "abc! def\n" }, + { -1, 13, ATK_TEXT_BOUNDARY_LINE_START, 0, 9, "abc! def\n" }, + { -1, 14, ATK_TEXT_BOUNDARY_LINE_START, 0, 9, "abc! def\n" }, + { -1, 15, ATK_TEXT_BOUNDARY_LINE_START, 0, 9, "abc! def\n" }, + { -1, 16, ATK_TEXT_BOUNDARY_LINE_START, 0, 9, "abc! def\n" }, + { -1, 17, ATK_TEXT_BOUNDARY_LINE_START, 9, 17, "ghi jkl\n" }, + { -1, 18, ATK_TEXT_BOUNDARY_LINE_START, 9, 17, "ghi jkl\n" }, + { -1, 19, ATK_TEXT_BOUNDARY_LINE_START, 9, 17, "ghi jkl\n" }, + { -1, 20, ATK_TEXT_BOUNDARY_LINE_START, 9, 17, "ghi jkl\n" }, + { -1, 0, ATK_TEXT_BOUNDARY_LINE_END, 0, 0, "" }, + { -1, 1, ATK_TEXT_BOUNDARY_LINE_END, 0, 0, "" }, + { -1, 2, ATK_TEXT_BOUNDARY_LINE_END, 0, 0, "" }, + { -1, 3, ATK_TEXT_BOUNDARY_LINE_END, 0, 0, "" }, + { -1, 4, ATK_TEXT_BOUNDARY_LINE_END, 0, 0, "" }, + { -1, 5, ATK_TEXT_BOUNDARY_LINE_END, 0, 0, "" }, + { -1, 6, ATK_TEXT_BOUNDARY_LINE_END, 0, 0, "" }, + { -1, 7, ATK_TEXT_BOUNDARY_LINE_END, 0, 0, "" }, + { -1, 8, ATK_TEXT_BOUNDARY_LINE_END, 0, 0, "" }, + { -1, 9, ATK_TEXT_BOUNDARY_LINE_END, 0, 8, "abc! def" }, + { -1, 10, ATK_TEXT_BOUNDARY_LINE_END, 0, 8, "abc! def" }, + { -1, 11, ATK_TEXT_BOUNDARY_LINE_END, 0, 8, "abc! def" }, + { -1, 12, ATK_TEXT_BOUNDARY_LINE_END, 0, 8, "abc! def" }, + { -1, 13, ATK_TEXT_BOUNDARY_LINE_END, 0, 8, "abc! def" }, + { -1, 14, ATK_TEXT_BOUNDARY_LINE_END, 0, 8, "abc! def" }, + { -1, 15, ATK_TEXT_BOUNDARY_LINE_END, 0, 8, "abc! def" }, + { -1, 16, ATK_TEXT_BOUNDARY_LINE_END, 0, 8, "abc! def" }, + { -1, 17, ATK_TEXT_BOUNDARY_LINE_END, 8, 16, "\nghi jkl" }, + { -1, 18, ATK_TEXT_BOUNDARY_LINE_END, 8, 16, "\nghi jkl" }, + { -1, 19, ATK_TEXT_BOUNDARY_LINE_END, 8, 16, "\nghi jkl" }, + { -1, 20, ATK_TEXT_BOUNDARY_LINE_END, 8, 16, "\nghi jkl" }, + { 0, 0, ATK_TEXT_BOUNDARY_CHAR, 0, 1, "a" }, + { 0, 1, ATK_TEXT_BOUNDARY_CHAR, 1, 2, "b" }, + { 0, 2, ATK_TEXT_BOUNDARY_CHAR, 2, 3, "c" }, + { 0, 3, ATK_TEXT_BOUNDARY_CHAR, 3, 4, "!" }, + { 0, 4, ATK_TEXT_BOUNDARY_CHAR, 4, 5, " " }, + { 0, 5, ATK_TEXT_BOUNDARY_CHAR, 5, 6, "d" }, + { 0, 6, ATK_TEXT_BOUNDARY_CHAR, 6, 7, "e" }, + { 0, 7, ATK_TEXT_BOUNDARY_CHAR, 7, 8, "f" }, + { 0, 8, ATK_TEXT_BOUNDARY_CHAR, 8, 9, "\n" }, + { 0, 9, ATK_TEXT_BOUNDARY_CHAR, 9, 10, "g" }, + { 0, 10, ATK_TEXT_BOUNDARY_CHAR, 10, 11, "h" }, + { 0, 11, ATK_TEXT_BOUNDARY_CHAR, 11, 12, "i" }, + { 0, 12, ATK_TEXT_BOUNDARY_CHAR, 12, 13, " " }, + { 0, 13, ATK_TEXT_BOUNDARY_CHAR, 13, 14, "j" }, + { 0, 14, ATK_TEXT_BOUNDARY_CHAR, 14, 15, "k" }, + { 0, 15, ATK_TEXT_BOUNDARY_CHAR, 15, 16, "l" }, + { 0, 16, ATK_TEXT_BOUNDARY_CHAR, 16, 17, "\n" }, + { 0, 17, ATK_TEXT_BOUNDARY_CHAR, 17, 18, "m" }, + { 0, 18, ATK_TEXT_BOUNDARY_CHAR, 18, 19, "n" }, + { 0, 19, ATK_TEXT_BOUNDARY_CHAR, 19, 20, "o" }, + { 0, 20, ATK_TEXT_BOUNDARY_CHAR, 20, 20, "" }, + { 0, 0, ATK_TEXT_BOUNDARY_WORD_START, 0, 5, "abc! " }, + { 0, 1, ATK_TEXT_BOUNDARY_WORD_START, 0, 5, "abc! " }, + { 0, 2, ATK_TEXT_BOUNDARY_WORD_START, 0, 5, "abc! " }, + { 0, 3, ATK_TEXT_BOUNDARY_WORD_START, 0, 5, "abc! " }, + { 0, 4, ATK_TEXT_BOUNDARY_WORD_START, 0, 5, "abc! " }, + { 0, 5, ATK_TEXT_BOUNDARY_WORD_START, 5, 9, "def\n" }, + { 0, 6, ATK_TEXT_BOUNDARY_WORD_START, 5, 9, "def\n" }, + { 0, 7, ATK_TEXT_BOUNDARY_WORD_START, 5, 9, "def\n" }, + { 0, 8, ATK_TEXT_BOUNDARY_WORD_START, 5, 9, "def\n" }, + { 0, 9, ATK_TEXT_BOUNDARY_WORD_START, 9, 13, "ghi " }, + { 0, 10, ATK_TEXT_BOUNDARY_WORD_START, 9, 13, "ghi " }, + { 0, 11, ATK_TEXT_BOUNDARY_WORD_START, 9, 13, "ghi " }, + { 0, 12, ATK_TEXT_BOUNDARY_WORD_START, 9, 13, "ghi " }, + { 0, 13, ATK_TEXT_BOUNDARY_WORD_START, 13, 17, "jkl\n" }, + { 0, 14, ATK_TEXT_BOUNDARY_WORD_START, 13, 17, "jkl\n" }, + { 0, 15, ATK_TEXT_BOUNDARY_WORD_START, 13, 17, "jkl\n" }, + { 0, 16, ATK_TEXT_BOUNDARY_WORD_START, 13, 17, "jkl\n" }, + { 0, 17, ATK_TEXT_BOUNDARY_WORD_START, 17, 20, "mno" }, + { 0, 18, ATK_TEXT_BOUNDARY_WORD_START, 17, 20, "mno" }, + { 0, 19, ATK_TEXT_BOUNDARY_WORD_START, 17, 20, "mno" }, + { 0, 20, ATK_TEXT_BOUNDARY_WORD_START, 17, 20, "mno" }, + { 0, 0, ATK_TEXT_BOUNDARY_WORD_END, 0, 3, "abc" }, + { 0, 1, ATK_TEXT_BOUNDARY_WORD_END, 0, 3, "abc" }, + { 0, 2, ATK_TEXT_BOUNDARY_WORD_END, 0, 3, "abc" }, + { 0, 3, ATK_TEXT_BOUNDARY_WORD_END, 3, 8, "! def" }, + { 0, 4, ATK_TEXT_BOUNDARY_WORD_END, 3, 8, "! def" }, + { 0, 5, ATK_TEXT_BOUNDARY_WORD_END, 3, 8, "! def" }, + { 0, 6, ATK_TEXT_BOUNDARY_WORD_END, 3, 8, "! def" }, + { 0, 7, ATK_TEXT_BOUNDARY_WORD_END, 3, 8, "! def" }, + { 0, 8, ATK_TEXT_BOUNDARY_WORD_END, 8, 12, "\nghi" }, + { 0, 9, ATK_TEXT_BOUNDARY_WORD_END, 8, 12, "\nghi" }, + { 0, 10, ATK_TEXT_BOUNDARY_WORD_END, 8, 12, "\nghi" }, + { 0, 11, ATK_TEXT_BOUNDARY_WORD_END, 8, 12, "\nghi" }, + { 0, 12, ATK_TEXT_BOUNDARY_WORD_END, 12, 16, " jkl" }, + { 0, 13, ATK_TEXT_BOUNDARY_WORD_END, 12, 16, " jkl" }, + { 0, 14, ATK_TEXT_BOUNDARY_WORD_END, 12, 16, " jkl" }, + { 0, 15, ATK_TEXT_BOUNDARY_WORD_END, 12, 16, " jkl" }, + { 0, 16, ATK_TEXT_BOUNDARY_WORD_END, 16, 20, "\nmno" }, + { 0, 17, ATK_TEXT_BOUNDARY_WORD_END, 16, 20, "\nmno" }, + { 0, 18, ATK_TEXT_BOUNDARY_WORD_END, 16, 20, "\nmno" }, + { 0, 19, ATK_TEXT_BOUNDARY_WORD_END, 16, 20, "\nmno" }, + { 0, 20, ATK_TEXT_BOUNDARY_WORD_END, 20, 20, "" }, + { 0, 0, ATK_TEXT_BOUNDARY_SENTENCE_START, 0, 5, "abc! " }, + { 0, 1, ATK_TEXT_BOUNDARY_SENTENCE_START, 0, 5, "abc! " }, + { 0, 2, ATK_TEXT_BOUNDARY_SENTENCE_START, 0, 5, "abc! " }, + { 0, 3, ATK_TEXT_BOUNDARY_SENTENCE_START, 0, 5, "abc! " }, + { 0, 4, ATK_TEXT_BOUNDARY_SENTENCE_START, 0, 5, "abc! " }, + { 0, 5, ATK_TEXT_BOUNDARY_SENTENCE_START, 5, 9, "def\n" }, + { 0, 6, ATK_TEXT_BOUNDARY_SENTENCE_START, 5, 9, "def\n" }, + { 0, 7, ATK_TEXT_BOUNDARY_SENTENCE_START, 5, 9, "def\n" }, + { 0, 8, ATK_TEXT_BOUNDARY_SENTENCE_START, 5, 9, "def\n" }, + { 0, 9, ATK_TEXT_BOUNDARY_SENTENCE_START, 9, 17, "ghi jkl\n" }, + { 0, 10, ATK_TEXT_BOUNDARY_SENTENCE_START, 9, 17, "ghi jkl\n" }, + { 0, 11, ATK_TEXT_BOUNDARY_SENTENCE_START, 9, 17, "ghi jkl\n" }, + { 0, 12, ATK_TEXT_BOUNDARY_SENTENCE_START, 9, 17, "ghi jkl\n" }, + { 0, 13, ATK_TEXT_BOUNDARY_SENTENCE_START, 9, 17, "ghi jkl\n" }, + { 0, 14, ATK_TEXT_BOUNDARY_SENTENCE_START, 9, 17, "ghi jkl\n" }, + { 0, 15, ATK_TEXT_BOUNDARY_SENTENCE_START, 9, 17, "ghi jkl\n" }, + { 0, 16, ATK_TEXT_BOUNDARY_SENTENCE_START, 9, 17, "ghi jkl\n" }, + { 0, 17, ATK_TEXT_BOUNDARY_SENTENCE_START, 17, 20, "mno" }, + { 0, 18, ATK_TEXT_BOUNDARY_SENTENCE_START, 17, 20, "mno" }, + { 0, 19, ATK_TEXT_BOUNDARY_SENTENCE_START, 17, 20, "mno" }, + { 0, 20, ATK_TEXT_BOUNDARY_SENTENCE_START, 17, 20, "mno" }, + { 0, 0, ATK_TEXT_BOUNDARY_SENTENCE_END, 0, 4, "abc!" }, + { 0, 1, ATK_TEXT_BOUNDARY_SENTENCE_END, 0, 4, "abc!" }, + { 0, 2, ATK_TEXT_BOUNDARY_SENTENCE_END, 0, 4, "abc!" }, + { 0, 3, ATK_TEXT_BOUNDARY_SENTENCE_END, 0, 4, "abc!" }, + { 0, 4, ATK_TEXT_BOUNDARY_SENTENCE_END, 4, 8, " def" }, + { 0, 5, ATK_TEXT_BOUNDARY_SENTENCE_END, 4, 8, " def" }, + { 0, 6, ATK_TEXT_BOUNDARY_SENTENCE_END, 4, 8, " def" }, + { 0, 7, ATK_TEXT_BOUNDARY_SENTENCE_END, 4, 8, " def" }, + { 0, 8, ATK_TEXT_BOUNDARY_SENTENCE_END, 8, 16, "\nghi jkl" }, + { 0, 9, ATK_TEXT_BOUNDARY_SENTENCE_END, 8, 16, "\nghi jkl" }, + { 0, 10, ATK_TEXT_BOUNDARY_SENTENCE_END, 8, 16, "\nghi jkl" }, + { 0, 11, ATK_TEXT_BOUNDARY_SENTENCE_END, 8, 16, "\nghi jkl" }, + { 0, 12, ATK_TEXT_BOUNDARY_SENTENCE_END, 8, 16, "\nghi jkl" }, + { 0, 13, ATK_TEXT_BOUNDARY_SENTENCE_END, 8, 16, "\nghi jkl" }, + { 0, 14, ATK_TEXT_BOUNDARY_SENTENCE_END, 8, 16, "\nghi jkl" }, + { 0, 15, ATK_TEXT_BOUNDARY_SENTENCE_END, 8, 16, "\nghi jkl" }, + { 0, 16, ATK_TEXT_BOUNDARY_SENTENCE_END, 16, 20, "\nmno" }, + { 0, 17, ATK_TEXT_BOUNDARY_SENTENCE_END, 16, 20, "\nmno" }, + { 0, 18, ATK_TEXT_BOUNDARY_SENTENCE_END, 16, 20, "\nmno" }, + { 0, 19, ATK_TEXT_BOUNDARY_SENTENCE_END, 16, 20, "\nmno" }, + { 0, 20, ATK_TEXT_BOUNDARY_SENTENCE_END, 20, 20, "" }, + { 0, 0, ATK_TEXT_BOUNDARY_LINE_START, 0, 9, "abc! def\n" }, + { 0, 1, ATK_TEXT_BOUNDARY_LINE_START, 0, 9, "abc! def\n" }, + { 0, 2, ATK_TEXT_BOUNDARY_LINE_START, 0, 9, "abc! def\n" }, + { 0, 3, ATK_TEXT_BOUNDARY_LINE_START, 0, 9, "abc! def\n" }, + { 0, 4, ATK_TEXT_BOUNDARY_LINE_START, 0, 9, "abc! def\n" }, + { 0, 5, ATK_TEXT_BOUNDARY_LINE_START, 0, 9, "abc! def\n" }, + { 0, 6, ATK_TEXT_BOUNDARY_LINE_START, 0, 9, "abc! def\n" }, + { 0, 7, ATK_TEXT_BOUNDARY_LINE_START, 0, 9, "abc! def\n" }, + { 0, 8, ATK_TEXT_BOUNDARY_LINE_START, 0, 9, "abc! def\n" }, + { 0, 9, ATK_TEXT_BOUNDARY_LINE_START, 9, 17, "ghi jkl\n" }, + { 0, 10, ATK_TEXT_BOUNDARY_LINE_START, 9, 17, "ghi jkl\n" }, + { 0, 11, ATK_TEXT_BOUNDARY_LINE_START, 9, 17, "ghi jkl\n" }, + { 0, 12, ATK_TEXT_BOUNDARY_LINE_START, 9, 17, "ghi jkl\n" }, + { 0, 13, ATK_TEXT_BOUNDARY_LINE_START, 9, 17, "ghi jkl\n" }, + { 0, 14, ATK_TEXT_BOUNDARY_LINE_START, 9, 17, "ghi jkl\n" }, + { 0, 15, ATK_TEXT_BOUNDARY_LINE_START, 9, 17, "ghi jkl\n" }, + { 0, 16, ATK_TEXT_BOUNDARY_LINE_START, 9, 17, "ghi jkl\n" }, + { 0, 17, ATK_TEXT_BOUNDARY_LINE_START, 17, 20, "mno" }, + { 0, 18, ATK_TEXT_BOUNDARY_LINE_START, 17, 20, "mno" }, + { 0, 19, ATK_TEXT_BOUNDARY_LINE_START, 17, 20, "mno" }, + { 0, 20, ATK_TEXT_BOUNDARY_LINE_START, 17, 20, "mno" }, + { 0, 0, ATK_TEXT_BOUNDARY_LINE_END, 0, 8, "abc! def" }, + { 0, 1, ATK_TEXT_BOUNDARY_LINE_END, 0, 8, "abc! def" }, + { 0, 2, ATK_TEXT_BOUNDARY_LINE_END, 0, 8, "abc! def" }, + { 0, 3, ATK_TEXT_BOUNDARY_LINE_END, 0, 8, "abc! def" }, + { 0, 4, ATK_TEXT_BOUNDARY_LINE_END, 0, 8, "abc! def" }, + { 0, 5, ATK_TEXT_BOUNDARY_LINE_END, 0, 8, "abc! def" }, + { 0, 6, ATK_TEXT_BOUNDARY_LINE_END, 0, 8, "abc! def" }, + { 0, 7, ATK_TEXT_BOUNDARY_LINE_END, 0, 8, "abc! def" }, + { 0, 8, ATK_TEXT_BOUNDARY_LINE_END, 0, 8, "abc! def" }, + { 0, 9, ATK_TEXT_BOUNDARY_LINE_END, 8, 16, "\nghi jkl" }, + { 0, 10, ATK_TEXT_BOUNDARY_LINE_END, 8, 16, "\nghi jkl" }, + { 0, 11, ATK_TEXT_BOUNDARY_LINE_END, 8, 16, "\nghi jkl" }, + { 0, 12, ATK_TEXT_BOUNDARY_LINE_END, 8, 16, "\nghi jkl" }, + { 0, 13, ATK_TEXT_BOUNDARY_LINE_END, 8, 16, "\nghi jkl" }, + { 0, 14, ATK_TEXT_BOUNDARY_LINE_END, 8, 16, "\nghi jkl" }, + { 0, 15, ATK_TEXT_BOUNDARY_LINE_END, 8, 16, "\nghi jkl" }, + { 0, 16, ATK_TEXT_BOUNDARY_LINE_END, 8, 16, "\nghi jkl" }, + { 0, 17, ATK_TEXT_BOUNDARY_LINE_END, 16, 20, "\nmno" }, + { 0, 18, ATK_TEXT_BOUNDARY_LINE_END, 16, 20, "\nmno" }, + { 0, 19, ATK_TEXT_BOUNDARY_LINE_END, 16, 20, "\nmno" }, + { 0, 20, ATK_TEXT_BOUNDARY_LINE_END, 16, 20, "\nmno" }, + { 1, 0, ATK_TEXT_BOUNDARY_CHAR, 1, 2, "b" }, + { 1, 1, ATK_TEXT_BOUNDARY_CHAR, 2, 3, "c" }, + { 1, 2, ATK_TEXT_BOUNDARY_CHAR, 3, 4, "!" }, + { 1, 3, ATK_TEXT_BOUNDARY_CHAR, 4, 5, " " }, + { 1, 4, ATK_TEXT_BOUNDARY_CHAR, 5, 6, "d" }, + { 1, 5, ATK_TEXT_BOUNDARY_CHAR, 6, 7, "e" }, + { 1, 6, ATK_TEXT_BOUNDARY_CHAR, 7, 8, "f" }, + { 1, 7, ATK_TEXT_BOUNDARY_CHAR, 8, 9, "\n" }, + { 1, 8, ATK_TEXT_BOUNDARY_CHAR, 9, 10, "g" }, + { 1, 9, ATK_TEXT_BOUNDARY_CHAR, 10, 11, "h" }, + { 1, 10, ATK_TEXT_BOUNDARY_CHAR, 11, 12, "i" }, + { 1, 11, ATK_TEXT_BOUNDARY_CHAR, 12, 13, " " }, + { 1, 12, ATK_TEXT_BOUNDARY_CHAR, 13, 14, "j" }, + { 1, 13, ATK_TEXT_BOUNDARY_CHAR, 14, 15, "k" }, + { 1, 14, ATK_TEXT_BOUNDARY_CHAR, 15, 16, "l" }, + { 1, 15, ATK_TEXT_BOUNDARY_CHAR, 16, 17, "\n" }, + { 1, 16, ATK_TEXT_BOUNDARY_CHAR, 17, 18, "m" }, + { 1, 17, ATK_TEXT_BOUNDARY_CHAR, 18, 19, "n" }, + { 1, 18, ATK_TEXT_BOUNDARY_CHAR, 19, 20, "o" }, + { 1, 19, ATK_TEXT_BOUNDARY_CHAR, 20, 20, "" }, + { 1, 20, ATK_TEXT_BOUNDARY_CHAR, 20, 20, "" }, + { 1, 0, ATK_TEXT_BOUNDARY_WORD_START, 5, 9, "def\n" }, + { 1, 1, ATK_TEXT_BOUNDARY_WORD_START, 5, 9, "def\n" }, + { 1, 2, ATK_TEXT_BOUNDARY_WORD_START, 5, 9, "def\n" }, + { 1, 3, ATK_TEXT_BOUNDARY_WORD_START, 5, 9, "def\n" }, + { 1, 4, ATK_TEXT_BOUNDARY_WORD_START, 5, 9, "def\n" }, + { 1, 5, ATK_TEXT_BOUNDARY_WORD_START, 9, 13, "ghi " }, + { 1, 6, ATK_TEXT_BOUNDARY_WORD_START, 9, 13, "ghi " }, + { 1, 7, ATK_TEXT_BOUNDARY_WORD_START, 9, 13, "ghi " }, + { 1, 8, ATK_TEXT_BOUNDARY_WORD_START, 9, 13, "ghi " }, + { 1, 9, ATK_TEXT_BOUNDARY_WORD_START, 13, 17, "jkl\n" }, + { 1, 10, ATK_TEXT_BOUNDARY_WORD_START, 13, 17, "jkl\n" }, + { 1, 11, ATK_TEXT_BOUNDARY_WORD_START, 13, 17, "jkl\n" }, + { 1, 12, ATK_TEXT_BOUNDARY_WORD_START, 13, 17, "jkl\n" }, + { 1, 13, ATK_TEXT_BOUNDARY_WORD_START, 17, 20, "mno" }, + { 1, 14, ATK_TEXT_BOUNDARY_WORD_START, 17, 20, "mno" }, + { 1, 15, ATK_TEXT_BOUNDARY_WORD_START, 17, 20, "mno" }, + { 1, 16, ATK_TEXT_BOUNDARY_WORD_START, 17, 20, "mno" }, + { 1, 17, ATK_TEXT_BOUNDARY_WORD_START, 20, 20, "" }, + { 1, 18, ATK_TEXT_BOUNDARY_WORD_START, 20, 20, "" }, + { 1, 19, ATK_TEXT_BOUNDARY_WORD_START, 20, 20, "" }, + { 1, 20, ATK_TEXT_BOUNDARY_WORD_START, 20, 20, "" }, + { 1, 0, ATK_TEXT_BOUNDARY_WORD_END, 3, 8, "! def" }, + { 1, 1, ATK_TEXT_BOUNDARY_WORD_END, 3, 8, "! def" }, + { 1, 2, ATK_TEXT_BOUNDARY_WORD_END, 3, 8, "! def" }, + { 1, 3, ATK_TEXT_BOUNDARY_WORD_END, 8, 12, "\nghi" }, + { 1, 4, ATK_TEXT_BOUNDARY_WORD_END, 8, 12, "\nghi" }, + { 1, 5, ATK_TEXT_BOUNDARY_WORD_END, 8, 12, "\nghi" }, + { 1, 6, ATK_TEXT_BOUNDARY_WORD_END, 8, 12, "\nghi" }, + { 1, 7, ATK_TEXT_BOUNDARY_WORD_END, 8, 12, "\nghi" }, + { 1, 8, ATK_TEXT_BOUNDARY_WORD_END, 12, 16, " jkl" }, + { 1, 9, ATK_TEXT_BOUNDARY_WORD_END, 12, 16, " jkl" }, + { 1, 10, ATK_TEXT_BOUNDARY_WORD_END, 12, 16, " jkl" }, + { 1, 11, ATK_TEXT_BOUNDARY_WORD_END, 12, 16, " jkl" }, + { 1, 12, ATK_TEXT_BOUNDARY_WORD_END, 16, 20, "\nmno" }, + { 1, 13, ATK_TEXT_BOUNDARY_WORD_END, 16, 20, "\nmno" }, + { 1, 14, ATK_TEXT_BOUNDARY_WORD_END, 16, 20, "\nmno" }, + { 1, 15, ATK_TEXT_BOUNDARY_WORD_END, 16, 20, "\nmno" }, + { 1, 16, ATK_TEXT_BOUNDARY_WORD_END, 20, 20, "" }, + { 1, 17, ATK_TEXT_BOUNDARY_WORD_END, 20, 20, "" }, + { 1, 18, ATK_TEXT_BOUNDARY_WORD_END, 20, 20, "" }, + { 1, 19, ATK_TEXT_BOUNDARY_WORD_END, 20, 20, "" }, + { 1, 20, ATK_TEXT_BOUNDARY_WORD_END, 20, 20, "" }, + { 1, 0, ATK_TEXT_BOUNDARY_SENTENCE_START, 5, 9, "def\n" }, + { 1, 1, ATK_TEXT_BOUNDARY_SENTENCE_START, 5, 9, "def\n" }, + { 1, 2, ATK_TEXT_BOUNDARY_SENTENCE_START, 5, 9, "def\n" }, + { 1, 3, ATK_TEXT_BOUNDARY_SENTENCE_START, 5, 9, "def\n" }, + { 1, 4, ATK_TEXT_BOUNDARY_SENTENCE_START, 5, 9, "def\n" }, + { 1, 5, ATK_TEXT_BOUNDARY_SENTENCE_START, 9, 17, "ghi jkl\n" }, + { 1, 6, ATK_TEXT_BOUNDARY_SENTENCE_START, 9, 17, "ghi jkl\n" }, + { 1, 7, ATK_TEXT_BOUNDARY_SENTENCE_START, 9, 17, "ghi jkl\n" }, + { 1, 8, ATK_TEXT_BOUNDARY_SENTENCE_START, 9, 17, "ghi jkl\n" }, + { 1, 9, ATK_TEXT_BOUNDARY_SENTENCE_START, 17, 20, "mno" }, + { 1, 10, ATK_TEXT_BOUNDARY_SENTENCE_START, 17, 20, "mno" }, + { 1, 11, ATK_TEXT_BOUNDARY_SENTENCE_START, 17, 20, "mno" }, + { 1, 12, ATK_TEXT_BOUNDARY_SENTENCE_START, 17, 20, "mno" }, + { 1, 13, ATK_TEXT_BOUNDARY_SENTENCE_START, 17, 20, "mno" }, + { 1, 14, ATK_TEXT_BOUNDARY_SENTENCE_START, 17, 20, "mno" }, + { 1, 15, ATK_TEXT_BOUNDARY_SENTENCE_START, 17, 20, "mno" }, + { 1, 16, ATK_TEXT_BOUNDARY_SENTENCE_START, 17, 20, "mno" }, + { 1, 17, ATK_TEXT_BOUNDARY_SENTENCE_START, 20, 20, "" }, + { 1, 18, ATK_TEXT_BOUNDARY_SENTENCE_START, 20, 20, "" }, + { 1, 19, ATK_TEXT_BOUNDARY_SENTENCE_START, 20, 20, "" }, + { 1, 20, ATK_TEXT_BOUNDARY_SENTENCE_START, 20, 20, "" }, + { 1, 0, ATK_TEXT_BOUNDARY_SENTENCE_END, 4, 8, " def" }, + { 1, 1, ATK_TEXT_BOUNDARY_SENTENCE_END, 4, 8, " def" }, + { 1, 2, ATK_TEXT_BOUNDARY_SENTENCE_END, 4, 8, " def" }, + { 1, 3, ATK_TEXT_BOUNDARY_SENTENCE_END, 4, 8, " def" }, + { 1, 4, ATK_TEXT_BOUNDARY_SENTENCE_END, 8, 16, "\nghi jkl" }, + { 1, 5, ATK_TEXT_BOUNDARY_SENTENCE_END, 8, 16, "\nghi jkl" }, + { 1, 6, ATK_TEXT_BOUNDARY_SENTENCE_END, 8, 16, "\nghi jkl" }, + { 1, 7, ATK_TEXT_BOUNDARY_SENTENCE_END, 8, 16, "\nghi jkl" }, + { 1, 8, ATK_TEXT_BOUNDARY_SENTENCE_END, 16, 20, "\nmno" }, + { 1, 9, ATK_TEXT_BOUNDARY_SENTENCE_END, 16, 20, "\nmno" }, + { 1, 10, ATK_TEXT_BOUNDARY_SENTENCE_END, 16, 20, "\nmno" }, + { 1, 11, ATK_TEXT_BOUNDARY_SENTENCE_END, 16, 20, "\nmno" }, + { 1, 12, ATK_TEXT_BOUNDARY_SENTENCE_END, 16, 20, "\nmno" }, + { 1, 13, ATK_TEXT_BOUNDARY_SENTENCE_END, 16, 20, "\nmno" }, + { 1, 14, ATK_TEXT_BOUNDARY_SENTENCE_END, 16, 20, "\nmno" }, + { 1, 15, ATK_TEXT_BOUNDARY_SENTENCE_END, 16, 20, "\nmno" }, + { 1, 16, ATK_TEXT_BOUNDARY_SENTENCE_END, 20, 20, "" }, + { 1, 17, ATK_TEXT_BOUNDARY_SENTENCE_END, 20, 20, "" }, + { 1, 18, ATK_TEXT_BOUNDARY_SENTENCE_END, 20, 20, "" }, + { 1, 19, ATK_TEXT_BOUNDARY_SENTENCE_END, 20, 20, "" }, + { 1, 20, ATK_TEXT_BOUNDARY_SENTENCE_END, 20, 20, "" }, + { 1, 0, ATK_TEXT_BOUNDARY_LINE_START, 9, 17, "ghi jkl\n" }, + { 1, 1, ATK_TEXT_BOUNDARY_LINE_START, 9, 17, "ghi jkl\n" }, + { 1, 2, ATK_TEXT_BOUNDARY_LINE_START, 9, 17, "ghi jkl\n" }, + { 1, 3, ATK_TEXT_BOUNDARY_LINE_START, 9, 17, "ghi jkl\n" }, + { 1, 4, ATK_TEXT_BOUNDARY_LINE_START, 9, 17, "ghi jkl\n" }, + { 1, 5, ATK_TEXT_BOUNDARY_LINE_START, 9, 17, "ghi jkl\n" }, + { 1, 6, ATK_TEXT_BOUNDARY_LINE_START, 9, 17, "ghi jkl\n" }, + { 1, 7, ATK_TEXT_BOUNDARY_LINE_START, 9, 17, "ghi jkl\n" }, + { 1, 8, ATK_TEXT_BOUNDARY_LINE_START, 9, 17, "ghi jkl\n" }, + { 1, 9, ATK_TEXT_BOUNDARY_LINE_START, 17, 20, "mno" }, + { 1, 10, ATK_TEXT_BOUNDARY_LINE_START, 17, 20, "mno" }, + { 1, 11, ATK_TEXT_BOUNDARY_LINE_START, 17, 20, "mno" }, + { 1, 12, ATK_TEXT_BOUNDARY_LINE_START, 17, 20, "mno" }, + { 1, 13, ATK_TEXT_BOUNDARY_LINE_START, 17, 20, "mno" }, + { 1, 14, ATK_TEXT_BOUNDARY_LINE_START, 17, 20, "mno" }, + { 1, 15, ATK_TEXT_BOUNDARY_LINE_START, 17, 20, "mno" }, + { 1, 16, ATK_TEXT_BOUNDARY_LINE_START, 17, 20, "mno" }, + { 1, 17, ATK_TEXT_BOUNDARY_LINE_START, 20, 20, "" }, + { 1, 18, ATK_TEXT_BOUNDARY_LINE_START, 20, 20, "" }, + { 1, 19, ATK_TEXT_BOUNDARY_LINE_START, 20, 20, "" }, + { 1, 20, ATK_TEXT_BOUNDARY_LINE_START, 20, 20, "" }, + { 1, 0, ATK_TEXT_BOUNDARY_LINE_END, 8, 16, "\nghi jkl" }, + { 1, 1, ATK_TEXT_BOUNDARY_LINE_END, 8, 16, "\nghi jkl" }, + { 1, 2, ATK_TEXT_BOUNDARY_LINE_END, 8, 16, "\nghi jkl" }, + { 1, 3, ATK_TEXT_BOUNDARY_LINE_END, 8, 16, "\nghi jkl" }, + { 1, 4, ATK_TEXT_BOUNDARY_LINE_END, 8, 16, "\nghi jkl" }, + { 1, 5, ATK_TEXT_BOUNDARY_LINE_END, 8, 16, "\nghi jkl" }, + { 1, 6, ATK_TEXT_BOUNDARY_LINE_END, 8, 16, "\nghi jkl" }, + { 1, 7, ATK_TEXT_BOUNDARY_LINE_END, 8, 16, "\nghi jkl" }, + { 1, 8, ATK_TEXT_BOUNDARY_LINE_END, 8, 16, "\nghi jkl" }, + { 1, 9, ATK_TEXT_BOUNDARY_LINE_END, 16, 20, "\nmno" }, + { 1, 10, ATK_TEXT_BOUNDARY_LINE_END, 16, 20, "\nmno" }, + { 1, 11, ATK_TEXT_BOUNDARY_LINE_END, 16, 20, "\nmno" }, + { 1, 12, ATK_TEXT_BOUNDARY_LINE_END, 16, 20, "\nmno" }, + { 1, 13, ATK_TEXT_BOUNDARY_LINE_END, 16, 20, "\nmno" }, + { 1, 14, ATK_TEXT_BOUNDARY_LINE_END, 16, 20, "\nmno" }, + { 1, 15, ATK_TEXT_BOUNDARY_LINE_END, 16, 20, "\nmno" }, + { 1, 16, ATK_TEXT_BOUNDARY_LINE_END, 16, 20, "\nmno" }, + { 1, 17, ATK_TEXT_BOUNDARY_LINE_END, 20, 20, "" }, + { 1, 18, ATK_TEXT_BOUNDARY_LINE_END, 20, 20, "" }, + { 1, 19, ATK_TEXT_BOUNDARY_LINE_END, 20, 20, "" }, + { 1, 20, ATK_TEXT_BOUNDARY_LINE_END, 20, 20, "" }, { 0, -1, } }; gint start, end; @@ -498,8 +792,8 @@ test_words (GtkWidget *widget) show_text_attributes (gtk_entry_get_layout (GTK_ENTRY (widget))); #endif -#if DUMP_RESULTS - for (i = -1; i < 2; i++) +#ifdef DUMP_RESULTS + for (i = -1; i <= 1; i++) { gint j, k; for (j = ATK_TEXT_BOUNDARY_CHAR; j <= ATK_TEXT_BOUNDARY_LINE_END; j++)