From fa0aa5510d1d78a80363e053f2db5502f9bac416 Mon Sep 17 00:00:00 2001 From: Junegunn Choi Date: Fri, 8 Mar 2024 22:01:45 +0900 Subject: Kill preview process when hiding the preview window via toggle-preview, hide-preview, or change-preview-window --- src/terminal.go | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/terminal.go b/src/terminal.go index daf2cf51..b8358891 100644 --- a/src/terminal.go +++ b/src/terminal.go @@ -3382,6 +3382,9 @@ func (t *Terminal) Loop() { // Discard the preview content so that it won't accidentally appear // when preview window is re-enabled and previewDelay is triggered t.previewer.lines = nil + + // Also kill the preview process if it's still running + t.cancelPreview() } } case actTogglePreviewWrap: @@ -3988,11 +3991,18 @@ func (t *Terminal) Loop() { // Full redraw if !currentPreviewOpts.sameLayout(t.previewOpts) { - wasHidden := t.pwindow == nil + // Preview command can be running in the background if the size of + // the preview window is 0 but not 'hidden' + wasHidden := currentPreviewOpts.hidden updatePreviewWindow(false) if wasHidden && t.hasPreviewWindow() { + // Restart refreshPreview(t.previewOpts.command) + } else if t.previewOpts.hidden { + // Cancel + t.cancelPreview() } else { + // Refresh req(reqPreviewRefresh) } } else if !currentPreviewOpts.sameContentLayout(t.previewOpts) { -- cgit v1.2.3