Download raw body.
tog: fix resize failure to populate log view commits
On Mon, Jul 18, 2022 at 11:12:27PM +1000, Mark Jamsek wrote:
> On 22-07-18 02:49pm, Stefan Sperling wrote:
> > On Mon, Jul 18, 2022 at 10:34:27PM +1000, Mark Jamsek wrote:
> > > If resizing a log view while on the _last_ loaded commit on the bottom
> > > edge of the screen, some of the new lines are not populated.
> > >
> > > repro:
> > > $ tog # 80x24
> > > 23j # move down to the last commit
> > > *increase terminal height to ~30 lines then reduce back to 80x24*
> > > ~5j # move down to the _last_ commit
> > > *increase terminal height to ~33 lines*
> > >
> > > Most of the new lines are empty.
> > >
> > > We call request_log_commits() from view_resize()--but only when the view
> > > has a child view. The fix simply moves this check, so that we always
> > > call request_log_commits() if the terminal height has been increased,
> > > irrespective of whether a child view exists.
> >
> > I only have a concern about style consistency:
> >
> > Could we add a resize function pointer to struct tog_view and call this
> > (if not NULL) instead of checking the view type and manipulating diff
> > view state in view_resize() directly?
> >
> > The code would then move into a new resize_diff_view() function.
>
> Sure! That would be better. Do you mean just the logic for requesting
> commits in the event the terminal height is increased into
> a resize_log_view() routine to be called from view_resize()?
Look at how reset_diff_view and reset_blame_view work.
Any view-specific resizing code could be called in the same way.
You would probably end up with something like this in view_resize();
if (view->resize) {
err = view->resize(view, dif);
if (err)
return err;
}
tog: fix resize failure to populate log view commits