make tog searches start from the current position in all views ok naddy@
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
diff --git a/tog/tog.c b/tog/tog.c
index 7715392..689aa4b 100644
--- a/tog/tog.c
+++ b/tog/tog.c
@@ -3428,12 +3428,8 @@ search_next_diff_view(struct tog_view *view)
lineno = s->matched_line + 1;
else
lineno = s->matched_line - 1;
- } else {
- if (view->searching == TOG_SEARCH_FORWARD)
- lineno = 1;
- else
- lineno = s->nlines;
- }
+ } else
+ lineno = s->first_displayed_line;
while (1) {
off_t offset;
@@ -4478,12 +4474,8 @@ search_next_blame_view(struct tog_view *view)
lineno = s->matched_line + 1;
else
lineno = s->matched_line - 1;
- } else {
- if (view->searching == TOG_SEARCH_FORWARD)
- lineno = 1;
- else
- lineno = s->blame.nlines;
- }
+ } else
+ lineno = s->first_displayed_line - 1 + s->selected_line;
while (1) {
off_t offset;
@@ -5368,7 +5360,9 @@ search_next_tree_view(struct tog_view *view)
s->selected_entry);
}
} else {
- if (view->searching == TOG_SEARCH_FORWARD)
+ if (s->selected_entry)
+ te = s->selected_entry;
+ else if (view->searching == TOG_SEARCH_FORWARD)
te = got_object_tree_get_first_entry(s->tree);
else
te = got_object_tree_get_last_entry(s->tree);
@@ -6027,7 +6021,9 @@ search_next_ref_view(struct tog_view *view)
tog_reflist_head, entry);
}
} else {
- if (view->searching == TOG_SEARCH_FORWARD)
+ if (s->selected_entry)
+ re = s->selected_entry;
+ else if (view->searching == TOG_SEARCH_FORWARD)
re = TAILQ_FIRST(&s->refs);
else
re = TAILQ_LAST(&s->refs, tog_reflist_head);