commit d91e25cb53afcc579f303f2fafb6e534beda78de from: Stefan Sperling date: Thu May 10 11:17:03 2018 UTC implement upwards scrolling in tog log view commit - 899d86c25715751ba2eb6b328649331c079f3b07 commit + d91e25cb53afcc579f303f2fafb6e534beda78de blob - edb8d47113d12cde5fa1161072e3d17296431831 blob + 9b2bc1271b80bb9bdac03ecfb32839c5710922fd --- tog/tog.c +++ tog/tog.c @@ -480,7 +480,7 @@ show_log_view(struct got_object_id *start_id, struct g struct got_object_id *id; int ch, done = 0, selected = 0; struct commit_queue commits; - struct commit_queue_entry *pentry = NULL; + struct commit_queue_entry *entry = NULL; struct commit_queue_entry *first_displayed_entry = NULL; struct commit_queue_entry *last_displayed_entry = NULL; @@ -526,6 +526,15 @@ show_log_view(struct got_object_id *start_id, struct g case KEY_UP: if (selected > 0) selected--; + if (selected != 0) + break; + /* scroll down if there are more children */ + entry = TAILQ_FIRST(&commits); + if (first_displayed_entry == entry) + break; + first_displayed_entry = + TAILQ_PREV(first_displayed_entry, + commit_queue, entry); break; case 'j': case KEY_DOWN: @@ -539,12 +548,12 @@ show_log_view(struct got_object_id *start_id, struct g break; first_displayed_entry = TAILQ_NEXT(first_displayed_entry, entry); - err = fetch_parent_commit(&pentry, + err = fetch_parent_commit(&entry, last_displayed_entry, repo); if (err) break; - if (pentry) - TAILQ_INSERT_TAIL(&commits, pentry, + if (entry) + TAILQ_INSERT_TAIL(&commits, entry, entry); break; case KEY_RESIZE: