fix fullscreen view regression introduced in 0dbbbe90fd When cycling from a child view in fullscreen, the parent view is opened in a splitscreen with no border instead of fullscreen. Check the view mode when cycling between views and resize parent dimensions accordingly. ok op@
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
diff --git a/tog/tog.c b/tog/tog.c
index d375738..89cccde 100644
--- a/tog/tog.c
+++ b/tog/tog.c
@@ -748,6 +748,13 @@ view_is_parent_view(struct tog_view *view)
return view->parent == NULL;
}
+static int
+view_is_splitscreen(struct tog_view *view)
+{
+ return view->begin_x > 0;
+}
+
+
static const struct got_error *
view_resize(struct tog_view *view)
{
@@ -763,7 +770,7 @@ view_resize(struct tog_view *view)
else
ncols = view->ncols + (COLS - view->cols);
- if (view->child) {
+ if (view->child && view_is_splitscreen(view->child)) {
view->child->begin_x = view_split_begin_x(view->begin_x);
if (view->child->begin_x == 0) {
ncols = COLS;
@@ -818,12 +825,6 @@ view_set_child(struct tog_view *view, struct tog_view *child)
return view_resize(view);
}
-static int
-view_is_splitscreen(struct tog_view *view)
-{
- return view->begin_x > 0;
-}
-
static void
tog_resizeterm(void)
{
@@ -956,6 +957,8 @@ view_input(struct tog_view **new, int *done, struct tog_view *view,
view->focussed = 0;
view->parent->focussed = 1;
view->parent->focus_child = 0;
+ if (!view_is_splitscreen(view))
+ err = view_fullscreen(view->parent);
}
break;
case 'q':
@@ -986,6 +989,8 @@ view_input(struct tog_view **new, int *done, struct tog_view *view,
err = view_fullscreen(view);
} else {
err = view_splitscreen(view);
+ if (!err)
+ err = view_resize(view->parent);
}
if (err)
break;