Download raw body.
fix cycle view in fullscreen regression
Mark Jamsek <mark@jamsek.com> wrote:
> On 22-06-20 05:03pm, Omar Polo wrote:
> > Mark Jamsek <mark@jamsek.com> wrote:
> > > Actually, I think this is better. And like the other problem you
> > > noticed, view_resize() now also honours fullscreen when resizing.
> >
> > two bugfixes with a commit! \o/ :D
> >
> > agreed, it's more self-contained and doesn't move the logic of maganing
> > the child view all across all callers of view_resize. I also like how
> > this fixes the issue with the resize during fullscreen!
> >
> > ok op@
> >
> > there's still a small glitch, but i don't think it's introduced by your
> > diff, that i found playing in ja.git. mentioning it here in case
> > someone else stumble on it. sometimes the double-width characters in
> > the log message are drawn over vborder. to reproduce: (in a wide enough
> > terminal to have a split-screen) type enter to see the diff, then F,
> > then tab two times, then F again to exit the fullscreen. We're probably
> > missing a resize for the main view when exiting the fullscreen, i
> > haven't tracked the issue (ENOTIME) ^^'
>
> Good catch! Thanks, Omar.
>
> The following diff appears to fix that too. And you were right--just
> missing a resize :)
this works wonderfully, thanks a lot! :D
ok op@
> diff d8b5af438b16bcea5568b1d4bfc127567e35e2f6 refs/heads/fix/fullscreen
> blob - b8935d8f4d93a4f03c1d8727adb23a6137741acf
> blob + 2ff8c7a704713e901f1ef6ba088441320ce15ec2
> --- tog/tog.c
> +++ 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
> 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 to
> 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 to
> err = view_fullscreen(view);
> } else {
> err = view_splitscreen(view);
> + if (!err)
> + err = view_resize(view->parent);
> }
> if (err)
> break;
fix cycle view in fullscreen regression