Commit Diff


commit - 4fc71f3b760478d7300692fa227470174bf71bef
commit + 97cb21cdfaeff6052c984dd9a9bbe56f5e2deb60
blob - 2e5fb20661bf53539d3543e78e7d989cee25bb15
blob + 8c414237565f6f896667f19527083e844f1331eb
--- tog/tog.c
+++ tog/tog.c
@@ -931,6 +931,25 @@ view_resize(struct tog_view *view)
 	view->cols = COLS;
 
 	return NULL;
+}
+
+static void
+view_adjust_offset(struct tog_view *view, int n)
+{
+	if (n == 0)
+		return;
+
+	if (view->parent && view->parent->offset) {
+		if (view->parent->offset + n >= 0)
+			view->parent->offset += n;
+		else
+			view->parent->offset = 0;
+	} else if (view->offset) {
+		if (view->offset - n >= 0)
+			view->offset -= n;
+		else
+			view->offset = 0;
+	}
 }
 
 static const struct got_error *
@@ -965,6 +984,7 @@ view_resize_split(struct tog_view *view, int resize)
 		}
 		v->ncols = COLS;
 		v->child->ncols = COLS;
+		view_adjust_offset(view, resize);
 		err = view_init_hsplit(v, v->child->begin_y);
 		if (err)
 			return err;