diff options
author | Sébastien Wilmet <swilmet@gnome.org> | 2014-07-15 15:24:36 +0200 |
---|---|---|
committer | Sébastien Wilmet <swilmet@gnome.org> | 2014-07-17 12:56:56 +0200 |
commit | 76f3866bd35b29edec770e107d8e2bb44fbd5ec9 (patch) | |
tree | 7feca5808eeed0076e6c9ad6245160ab31ac2287 /gtk/gtktextiter.c | |
parent | 37f5f78f810bccda3ff6442686a02ca48ee4b5b4 (diff) | |
download | gtk+-76f3866bd35b29edec770e107d8e2bb44fbd5ec9.tar.gz |
textiter: make the FindLogAttrFunc functions clearer
- Return true (found) and false (not found) explicitly.
- Set found_offset only when something has been found.
find_backward_cursor_pos_func() was a bit different, the while loop had
the condition "offset > 0" but the return was "offset >= 0". Probably a
micro-optimization, since offset == 0 is always a cursor position.
Anyway now the code is the same as the other functions.
https://bugzilla.gnome.org/show_bug.cgi?id=618852
Diffstat (limited to 'gtk/gtktextiter.c')
-rw-r--r-- | gtk/gtktextiter.c | 84 |
1 files changed, 60 insertions, 24 deletions
diff --git a/gtk/gtktextiter.c b/gtk/gtktextiter.c index 93cc801b15..bfc296eb86 100644 --- a/gtk/gtktextiter.c +++ b/gtk/gtktextiter.c @@ -2895,12 +2895,18 @@ find_word_end_func (const PangoLogAttr *attrs, ++offset; /* Find end of next word */ - while (offset < len && !attrs[offset].is_word_end) - ++offset; + while (offset < len) + { + if (attrs[offset].is_word_end) + { + *found_offset = offset; + return TRUE; + } - *found_offset = offset; + ++offset; + } - return offset < len; + return FALSE; } static gboolean @@ -2923,12 +2929,18 @@ find_word_start_func (const PangoLogAttr *attrs, --offset; /* Find start of prev word */ - while (offset >= 0 && !attrs[offset].is_word_start) - --offset; + while (offset >= 0) + { + if (attrs[offset].is_word_start) + { + *found_offset = offset; + return TRUE; + } - *found_offset = offset; + --offset; + } - return offset >= 0; + return FALSE; } static gboolean @@ -2970,12 +2982,18 @@ find_sentence_end_func (const PangoLogAttr *attrs, ++offset; /* Find end of next sentence */ - while (offset < len && !attrs[offset].is_sentence_end) - ++offset; + while (offset < len) + { + if (attrs[offset].is_sentence_end) + { + *found_offset = offset; + return TRUE; + } - *found_offset = offset; + ++offset; + } - return offset < len; + return FALSE; } static gboolean @@ -2998,12 +3016,18 @@ find_sentence_start_func (const PangoLogAttr *attrs, --offset; /* Find start of prev sentence */ - while (offset >= 0 && !attrs[offset].is_sentence_start) - --offset; + while (offset >= 0) + { + if (attrs[offset].is_sentence_start) + { + *found_offset = offset; + return TRUE; + } - *found_offset = offset; + --offset; + } - return offset >= 0; + return FALSE; } static gboolean @@ -3556,12 +3580,18 @@ find_forward_cursor_pos_func (const PangoLogAttr *attrs, if (!already_moved_initially) ++offset; - while (offset < len && !attrs[offset].is_cursor_position) - ++offset; + while (offset < len) + { + if (attrs[offset].is_cursor_position) + { + *found_offset = offset; + return TRUE; + } - *found_offset = offset; + ++offset; + } - return offset < len; + return FALSE; } static gboolean @@ -3574,12 +3604,18 @@ find_backward_cursor_pos_func (const PangoLogAttr *attrs, if (!already_moved_initially) --offset; - while (offset > 0 && !attrs[offset].is_cursor_position) - --offset; + while (offset >= 0) + { + if (attrs[offset].is_cursor_position) + { + *found_offset = offset; + return TRUE; + } - *found_offset = offset; + --offset; + } - return offset >= 0; + return FALSE; } static gboolean |