commit 364ac6fd6d8e9ecf616ce569d655cbc3ad8f7680 from: Stefan Sperling date: Sat Jun 18 16:47:03 2022 UTC take tog selection cursor position into account when searching for next match Patch by Mikhail ok op@ jamsek commit - 89a34d6e53b40dde314248e45b8f3b626fbf85c6 commit + 364ac6fd6d8e9ecf616ce569d655cbc3ad8f7680 blob - a3b1cc5362b33b8201b17b28e35e4f005f9f9cd9 blob + 9cd42f902d4f41a14a433d2050208c035a7a0993 --- tog/tog.c +++ tog/tog.c @@ -2342,11 +2342,25 @@ search_next_log_view(struct tog_view *view) entry = TAILQ_PREV(s->search_entry, commit_queue_head, entry); } else if (s->matched_entry) { + int matched_idx = s->matched_entry->idx; + int selected_idx = s->selected_entry->idx; + + /* + * If user has moved cursor after we hit the match, position + * from where we should continue search must be changed. + */ if (view->searching == TOG_SEARCH_FORWARD) - entry = TAILQ_NEXT(s->matched_entry, entry); + if (matched_idx > selected_idx) + entry = TAILQ_NEXT(s->selected_entry, entry); + else + entry = TAILQ_NEXT(s->matched_entry, entry); else - entry = TAILQ_PREV(s->matched_entry, - commit_queue_head, entry); + if (matched_idx < selected_idx) + entry = TAILQ_PREV(s->selected_entry, + commit_queue_head, entry); + else + entry = TAILQ_PREV(s->matched_entry, + commit_queue_head, entry); } else { entry = s->selected_entry; }