From: Stefan Sperling Subject: Re: tog ref -> log: ^L closes log view To: Christian Weisgerber Cc: gameoftrees@openbsd.org Date: Tue, 1 Dec 2020 22:40:52 +0100 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.