"GOT", but the "O" is a cute, smiling pufferfish. Index | Thread | Search

From:
Omar Polo <op@omarpolo.com>
Subject:
Re: tog: populate new child log lines when switching split
To:
Mark Jamsek <mark@jamsek.com>
Cc:
gameoftrees@openbsd.org
Date:
Thu, 21 Jul 2022 11:38:21 +0200

Download raw body.

Thread
Mark Jamsek <mark@jamsek.com> wrote:
> I just noticed this now while using the new blame -> log key map that
> opens a child log view. If you first open the log view with 'L' in
> a hsplit and then switch to a vsplit, the new log lines are empty (repro
> recipe below).
> 
> The new resize_log_view() method stsp suggested comes in handy here as
> it does all the math for us and calls request_log_commits() if needed
> when log view lines are increased, so the fix is to just check for and
> call view->resize rather than trying to determine when we need to
> request n more commits.
> 
> The below diff fixes this case, but I also want to go through and
> replace all the appropriate
> 
> if (view->type == TOG_VIEW_LOG)
> 	request_log_commits(view);
> 
> bits with this view->resize idiom; it's a lot cleaner and, as stsp
> remarked, more consistent style-wise too.  I don't have the time to do
> this tonight so want to push this fix out and do the rest later.

doesn't seem a bad idea

> -----------------------------------------------
> commit b1cabdf3e6c4ae8f321b764cb0fcc30453f89b3c (fix/logvsplit)
> from: Mark Jamsek <mark@jamsek.dev>
> date: Wed Jul 20 14:07:31 2022 UTC
> 
>  tog: populate new child view log lines when switching split
> 
>  When switching a newly opened child log view from a h- to a v-split, the
>  new log lines are empty:
>    $ tog blame CHANGES
>    S  # toggle hsplit
>    L  # open log view
>    S  # switch to vsplit
>    *new log lines are empty*
> 
>  When switching splits, call the recently added resize_log_view() method to do
>  the work and populate new lines if needed.

ok op@

(not sure if mentioning the repro in the commit message helps but i'm
bad a writing those so don't mind me :-)

> diff 05f04cdf3fa9619d7055f098b55f1633dbbf12c0 b1cabdf3e6c4ae8f321b764cb0fcc30453f89b3c
> commit - 05f04cdf3fa9619d7055f098b55f1633dbbf12c0
> commit + b1cabdf3e6c4ae8f321b764cb0fcc30453f89b3c
> blob - f05786c2a00509ae1a6a3159214d55188847d9c9
> blob + 785c10661752b8c4217bb0c44fe460a884cf8d98
> --- tog/tog.c
> +++ tog/tog.c
> @@ -1210,10 +1210,10 @@ switch_split(struct tog_view *view)
>  		offset_selection_up(v);
>  		offset_selection_up(v->child);
>  	}
> -	if (v->type == TOG_VIEW_LOG && v->nscrolled)
> -		err = request_log_commits(v);
> -	else if (v->child->type == TOG_VIEW_LOG && 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);
> 
>  	return err;
>  }