summaryrefslogtreecommitdiff
path: root/gtk/gtktextiter.c
diff options
context:
space:
mode:
authorHavoc Pennington <hp@redhat.com>2001-11-14 18:58:26 +0000
committerHavoc Pennington <hp@src.gnome.org>2001-11-14 18:58:26 +0000
commit419f3e9bcc0f27b49dfd2e59328f10dc198a421d (patch)
treea1be8e717411a9002f18b30073824efb7d0162a6 /gtk/gtktextiter.c
parentdcff7a6aeac7d36a1cbd891ff639898b07868552 (diff)
downloadgdk-pixbuf-419f3e9bcc0f27b49dfd2e59328f10dc198a421d.tar.gz
bulk of the tests were commented out, oops.
2001-11-14 Havoc Pennington <hp@redhat.com> * tests/testtextbuffer.c (main): bulk of the tests were commented out, oops. * gtk/gtktextiter.c (find_paragraph_delimiter_for_line): make this function work, should resolve #63426 (gtk_text_iter_ends_line): return TRUE for the end iterator * gtk/gtktextiter.h: put padding back in GtkTextIter, I thought of a couple things that might get cached in here.
Diffstat (limited to 'gtk/gtktextiter.c')
-rw-r--r--gtk/gtktextiter.c34
1 files changed, 23 insertions, 11 deletions
diff --git a/gtk/gtktextiter.c b/gtk/gtktextiter.c
index cd380f68a..041ec2309 100644
--- a/gtk/gtktextiter.c
+++ b/gtk/gtktextiter.c
@@ -65,6 +65,10 @@ struct _GtkTextRealIter
and ditto for char offsets. */
gint segment_byte_offset;
gint segment_char_offset;
+
+ /* padding */
+ gint pad1;
+ gpointer pad2;
};
/* These "set" functions should not assume any fields
@@ -1511,12 +1515,14 @@ gtk_text_iter_starts_line (const GtkTextIter *iter)
* gtk_text_iter_ends_line:
* @iter: an iterator
*
- * Returns %TRUE if @iter points to the start of the paragraph delimiter
- * characters for a line (delimiters will be either a newline, a
- * carriage return, a carriage return followed by a newline, or a
- * Unicode paragraph separator character). Note that an iterator pointing
- * to the \n of a \r\n pair will not be counted as the end of a line,
- * the line ends before the \r.
+ * Returns %TRUE if @iter points to the start of the paragraph
+ * delimiter characters for a line (delimiters will be either a
+ * newline, a carriage return, a carriage return followed by a
+ * newline, or a Unicode paragraph separator character). Note that an
+ * iterator pointing to the \n of a \r\n pair will not be counted as
+ * the end of a line, the line ends before the \r. The end iterator is
+ * considered to be at the end of a line, even though there are no
+ * paragraph delimiter chars there.
*
* Return value: whether @iter is at the end of a line
**/
@@ -1539,7 +1545,7 @@ gtk_text_iter_ends_line (const GtkTextIter *iter)
wc = gtk_text_iter_get_char (iter);
- if (wc == '\r' || wc == PARAGRAPH_SEPARATOR)
+ if (wc == '\r' || wc == PARAGRAPH_SEPARATOR || wc == 0) /* wc == 0 is end iterator */
return TRUE;
else if (wc == '\n')
{
@@ -3760,11 +3766,17 @@ find_paragraph_delimiter_for_line (GtkTextIter *iter)
GtkTextIter end;
end = *iter;
- /* if we aren't on the last line, go forward to start of next line, then scan
- * back for the delimiters on the previous line
- */
- if (gtk_text_iter_forward_line (&end))
+ if (_gtk_text_line_contains_end_iter (_gtk_text_iter_get_text_line (&end),
+ _gtk_text_iter_get_btree (&end)))
+ {
+ gtk_text_iter_forward_to_end (&end);
+ }
+ else
{
+ /* if we aren't on the last line, go forward to start of next line, then scan
+ * back for the delimiters on the previous line
+ */
+ gtk_text_iter_forward_line (&end);
gtk_text_iter_backward_char (&end);
while (!gtk_text_iter_ends_line (&end))
gtk_text_iter_backward_char (&end);