Commit Diff


commit - 150d7275caef04226a9f0c82b7b6c7ac62cfab0e
commit + 3a0139e86b2f9a57742d59dad86f8386532ba872
blob - e7c5ac8b61051d4bd234205678c26e66391fb3fc
blob + 7bb533d80f521658b546869a9f3347111376b090
--- tog/tog.c
+++ tog/tog.c
@@ -928,10 +928,13 @@ view_resize(struct tog_view *view)
 static const struct got_error *
 resize_log_view(struct tog_view *view, int increase)
 {
-	struct tog_log_view_state *s = &view->state.log;
-	const struct got_error *err = NULL;
-	int n = s->selected_entry->idx + view->lines - s->selected;
+	struct tog_log_view_state	*s = &view->state.log;
+	const struct got_error		*err = NULL;
+	int				 n = 0;
 
+	if (s->selected_entry)
+		n = s->selected_entry->idx + view->lines - s->selected;
+
 	/*
 	 * Request commits to account for the increased
 	 * height so we have enough to populate the view.
@@ -980,8 +983,6 @@ view_resize_split(struct tog_view *view, int resize)
 	v->resized = v->child->resized = resize;  /* lock for resize event */
 
 	if (view->mode == TOG_VIEW_SPLIT_HRZN) {
-		int y = v->child->begin_y;
-
 		if (v->child->resized_y)
 			v->child->begin_y = v->child->resized_y;
 		if (view->parent)
@@ -1002,10 +1003,6 @@ view_resize_split(struct tog_view *view, int resize)
 		if (err)
 			return err;
 		v->child->resized_y = v->child->begin_y;
-		if (y > v->child->begin_y && v->child->type == TOG_VIEW_LOG)
-			v->child->nscrolled = y - v->child->begin_y;
-		else if (y < v->child->begin_y && v->type == TOG_VIEW_LOG)
-			v->nscrolled = v->child->begin_y - y;
 	} else {
 		if (v->child->resized_x)
 			v->child->begin_x = v->child->resized_x;
@@ -1041,10 +1038,10 @@ view_resize_split(struct tog_view *view, int resize)
 			return err;
 	}
 
-	if (v->nscrolled)
-		err = request_log_commits(v);
-	else if (v->child->nscrolled)
-		err = request_log_commits(v->child);
+	if (v->resize)
+		err = v->resize(v, 0);
+	else if (v->child->resize)
+		err = v->child->resize(v->child, 0);
 
 	v->resized = v->child->resized = 0;
 
@@ -1362,9 +1359,9 @@ view_input(struct tog_view **new, int *done, struct to
 			view->parent->focussed = 1;
 			view->parent->focus_child = 0;
 			if (!view_is_splitscreen(view)) {
-				if (view->mode == TOG_VIEW_SPLIT_HRZN &&
-				    view->parent->type == TOG_VIEW_LOG) {
-					err = request_log_commits(view->parent);
+				if (view->parent->resize) {
+					err = view->parent->resize(view->parent,
+					    0);
 					if (err)
 						return err;
 				}
@@ -1377,9 +1374,9 @@ view_input(struct tog_view **new, int *done, struct to
 		break;
 	case 'q':
 		if (view->parent && view->mode == TOG_VIEW_SPLIT_HRZN) {
-			if (view->parent->type == TOG_VIEW_LOG) {
+			if (view->parent->resize) {
 				/* might need more commits to fill fullscreen */
-				err = request_log_commits(view->parent);
+				err = view->parent->resize(view->parent, 0);
 				if (err)
 					break;
 			}
@@ -1427,8 +1424,8 @@ view_input(struct tog_view **new, int *done, struct to
 		}
 		if (err)
 			break;
-		if (view->type == TOG_VIEW_LOG) {
-			err = request_log_commits(view);
+		if (view->resize) {
+			err = view->resize(view, 0);
 			if (err)
 				break;
 		}