summaryrefslogtreecommitdiff
path: root/gtk/gtktextbuffer.c
diff options
context:
space:
mode:
authorSébastien Wilmet <swilmet@gnome.org>2014-08-20 19:06:05 +0200
committerSébastien Wilmet <swilmet@gnome.org>2014-08-21 18:43:34 +0200
commit706c8e9c8d29a93fabc1d787894827b709139b6e (patch)
treebe70195da43795b96360e1da12c2738a88bf483c /gtk/gtktextbuffer.c
parent83bc0c4bb19ac0a61553aba6e9a370aba0ab6e13 (diff)
downloadgtk+-706c8e9c8d29a93fabc1d787894827b709139b6e.tar.gz
Simplify _gtk_text_buffer_get_line_log_attrs()
NULL was returned in case of an empty last line. Every users needed to special-case this. Now it will return the expected result: char_len of 0 with one PangoLogAttr. In compute_log_attrs(), 'paragraph' will be the empty string "" with 'char_len' == 0. pango_get_log_attrs() works fine with an empty string, it will return one correct PangoLogAttr (because there is one text position for the empty string). It fixes the unit tests for gtk_text_iter_is_cursor_position(). https://bugzilla.gnome.org/show_bug.cgi?id=156164
Diffstat (limited to 'gtk/gtktextbuffer.c')
-rw-r--r--gtk/gtktextbuffer.c26
1 files changed, 4 insertions, 22 deletions
diff --git a/gtk/gtktextbuffer.c b/gtk/gtktextbuffer.c
index 38620ef20f..65dfd8550f 100644
--- a/gtk/gtktextbuffer.c
+++ b/gtk/gtktextbuffer.c
@@ -3889,6 +3889,7 @@ gtk_text_buffer_backspace (GtkTextBuffer *buffer,
GtkTextIter end;
gboolean retval = FALSE;
const PangoLogAttr *attrs;
+ gint offset;
gboolean backspace_deletes_character;
g_return_val_if_fail (GTK_IS_TEXT_BUFFER (buffer), FALSE);
@@ -3898,17 +3899,8 @@ gtk_text_buffer_backspace (GtkTextBuffer *buffer,
end = *iter;
attrs = _gtk_text_buffer_get_line_log_attrs (buffer, &start, NULL);
-
- /* For no good reason, attrs is NULL for the empty last line in
- * a buffer. Special case that here. (#156164)
- */
- if (attrs != NULL)
- {
- gint offset = gtk_text_iter_get_line_offset (&start);
- backspace_deletes_character = attrs[offset].backspace_deletes_character;
- }
- else
- backspace_deletes_character = FALSE;
+ offset = gtk_text_iter_get_line_offset (&start);
+ backspace_deletes_character = attrs[offset].backspace_deletes_character;
gtk_text_iter_backward_cursor_position (&start);
@@ -4325,8 +4317,6 @@ compute_log_attrs (const GtkTextIter *iter,
char_len = g_utf8_strlen (paragraph, -1);
byte_len = strlen (paragraph);
- g_assert (char_len > 0);
-
if (char_lenp != NULL)
*char_lenp = char_len;
@@ -4346,6 +4336,7 @@ compute_log_attrs (const GtkTextIter *iter,
}
/* The return value from this is valid until you call this a second time.
+ * Returns (char_len + 1) PangoLogAttr's, one for each text position.
*/
const PangoLogAttr *
_gtk_text_buffer_get_line_log_attrs (GtkTextBuffer *buffer,
@@ -4362,15 +4353,6 @@ _gtk_text_buffer_get_line_log_attrs (GtkTextBuffer *buffer,
priv = buffer->priv;
- /* special-case for empty last line in buffer */
- if (gtk_text_iter_is_end (anywhere_in_line) &&
- gtk_text_iter_get_line_offset (anywhere_in_line) == 0)
- {
- if (char_len != NULL)
- *char_len = 0;
- return NULL;
- }
-
/* FIXME we also need to recompute log attrs if the language tag at
* the start of a paragraph changes
*/