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

From:
Stefan Sperling <stsp@stsp.name>
Subject:
Re: tog ref -> log: ^L closes log view
To:
Christian Weisgerber <naddy@mips.inka.de>
Cc:
gameoftrees@openbsd.org
Date:
Tue, 1 Dec 2020 22:40:52 +0100

Download raw body.

Thread
On Tue, Dec 01, 2020 at 10:13:15PM +0100, Christian Weisgerber wrote:
> * start tog ref
> * pick refs/heads/main, hit enter for the log view
> * hit ^L to reload the log view
>   => the log view is closed, returning you to the ref view

This is because Ctrl-L in the log view is broken if the log view is running
as a split-screen child view. The same problem happens if a log view is
opened from a tree view, for example.

My guess is that this is another effect of the new_view/dead_view pointer
bugs in view_loop, which you already reported earlier. My plan to fix that
situation is to add a state variable to struct tog_view (with values such as
VIEW_STATE_NEW, VIEW_STATE_DEAD, etc.) and then have view_loop take actions
on views based on view->state, instead of trying to keep track of pointers.

During development of the ref view I saw the Ctrl-L/split-screen problem
in ref views after copying the Ctrl-L implementation from the log view.
I avoided the problem in the ref view by not destroying the current view
upon Ctrl-L and just reloading the data that gets displayed.
See input_ref_view(), case CTRL('l').
We could try to apply this approach to the log view, too.