Commit Diff


commit - ce95518ef9da9d15ef65e0ef244d160b0bda6744
commit + 4b3f9dac335ebd6cb7b838589a3f6b9766a49cc7
blob - 633624a7d577258d2f9cb19eff6bee83dc9ae8ae
blob + 65bbc598def6a6724f242787e83b1315f0119b53
--- tog/tog.c
+++ tog/tog.c
@@ -3438,12 +3438,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;
@@ -4488,12 +4484,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;
@@ -5378,7 +5370,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);
@@ -6037,7 +6031,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);