Commit Diff


commit - bf979164354d5ac4758dc137f77bc15be61cbe5b
commit + 67cc79918593c9bc8a93290de429035ae0464f18
blob - ddf367cfa7a7e934128925a7524ef4f4d46a7490
blob + 8d1f3a2db8d01fbe383169b17c0a37bf154ad9af
--- tog/tog.c
+++ tog/tog.c
@@ -3283,16 +3283,13 @@ input_tree_view(struct tog_view **new_view, struct tog
 			    s->entries, s->tree == s->root);
 			break;
 		case KEY_PPAGE:
+			tree_scroll_up(&s->first_displayed_entry,
+			    MAX(0, view->nlines - 4 - s->selected), s->entries,
+			    s->tree == s->root);
 			s->selected = 0;
 			if (SIMPLEQ_FIRST(&s->entries->head) ==
-			    s->first_displayed_entry) {
-				if (s->tree != s->root)
-					s->first_displayed_entry = NULL;
-				break;
-			}
-			tree_scroll_up(&s->first_displayed_entry,
-			    view->nlines, s->entries,
-			    s->tree == s->root);
+			    s->first_displayed_entry && s->tree != s->root)
+				s->first_displayed_entry = NULL;
 			break;
 		case 'j':
 		case KEY_DOWN: