[evolution-data-server/openismus-work-3-8] EDataBookCursor: Fix to properly calculate the position after stepping.
- From: Tristan Van Berkom <tvb src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution-data-server/openismus-work-3-8] EDataBookCursor: Fix to properly calculate the position after stepping.
- Date: Thu, 24 Oct 2013 20:41:44 +0000 (UTC)
commit 27487859531a7fe8cc14364f6a42131e175d5e6f
Author: Tristan Van Berkom <tristanvb openismus com>
Date: Sat Oct 19 01:10:31 2013 +0200
EDataBookCursor: Fix to properly calculate the position after stepping.
addressbook/libedata-book/e-data-book-cursor.c | 22 ++++++++++++----------
1 files changed, 12 insertions(+), 10 deletions(-)
---
diff --git a/addressbook/libedata-book/e-data-book-cursor.c b/addressbook/libedata-book/e-data-book-cursor.c
index e174769..43092ce 100644
--- a/addressbook/libedata-book/e-data-book-cursor.c
+++ b/addressbook/libedata-book/e-data-book-cursor.c
@@ -496,20 +496,22 @@ calculate_step_position (EDataBookCursor *cursor,
gint new_position = priv->position;
gint offset = results;
- /* The return value of the step() function is the number of contacts traversed,
- * but here we want the number of units which were successfuly traversed, i.e.
- * when move from the 1 position to the 0 position, or move from the last contact
- * off of the end of the list, the position is still effected by 1 even
- * though the step() function returns 0.
+ /* If we didnt get as many contacts as asked for, it indicates that
+ * we've reached the end of the list (or beginning)... in this case
+ * we add 1 to the offset
+ * so that we land on the 0 position or the total + 1 position
+ * respectively.
+ */
+ if (offset < ABS (count)) {
+ offset += 1;
+ }
+
+ /* Convert our 'number of results' into a signed 'offset'
+ * to add to the cursor position.
*/
if (count < 0)
offset = -offset;
- if (offset == 0 && count > 0 && priv->position == priv->total)
- offset = 1;
- else if (offset == 0 && count < 0 && priv->position == 1)
- offset = -1;
-
/* Don't assert the boundaries of values here, we
* did that in e_data_book_cursor_step() already.
*/
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]