Commit Diff


commit - c0f61fa4e4ee942c16faa19eddc4b5362287b12c
commit + d9a7ab538a90fea0c81ac4c31fd196123baf4fd4
blob - 69d159dd681696985e8930c154e65d4c007197bb
blob + 03896eaec6ac32378d42edec34772acd9108d8bf
--- tog/tog.c
+++ tog/tog.c
@@ -927,6 +927,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 *
@@ -961,6 +980,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;