diff --git a/src/terminal.go b/src/terminal.go index 2e6e24b6..fe611fb3 100644 --- a/src/terminal.go +++ b/src/terminal.go @@ -475,6 +475,7 @@ type searchRequest struct { type previewRequest struct { template string + pwindow tui.Window pwindowSize tui.TermSize scrollOffset int list []*Item @@ -2794,6 +2795,7 @@ func (t *Terminal) Loop() { for { var items []*Item var commandTemplate string + var pwindow tui.Window var pwindowSize tui.TermSize initialOffset := 0 t.previewBox.Wait(func(events *util.Events) { @@ -2804,6 +2806,7 @@ func (t *Terminal) Loop() { commandTemplate = request.template initialOffset = request.scrollOffset items = request.list + pwindow = request.pwindow pwindowSize = request.pwindowSize } } @@ -2823,8 +2826,8 @@ func (t *Terminal) Loop() { env = append(env, "FZF_PREVIEW_"+lines) env = append(env, columns) env = append(env, "FZF_PREVIEW_"+columns) - env = append(env, fmt.Sprintf("FZF_PREVIEW_TOP=%d", t.tui.Top()+t.pwindow.Top())) - env = append(env, fmt.Sprintf("FZF_PREVIEW_LEFT=%d", t.pwindow.Left())) + env = append(env, fmt.Sprintf("FZF_PREVIEW_TOP=%d", t.tui.Top()+pwindow.Top())) + env = append(env, fmt.Sprintf("FZF_PREVIEW_LEFT=%d", pwindow.Left())) } cmd.Env = env @@ -2952,7 +2955,7 @@ func (t *Terminal) Loop() { if len(command) > 0 && t.canPreview() { _, list := t.buildPlusList(command, false) t.cancelPreview() - t.previewBox.Set(reqPreviewEnqueue, previewRequest{command, t.pwindowSize(), t.evaluateScrollOffset(), list}) + t.previewBox.Set(reqPreviewEnqueue, previewRequest{command, t.pwindow, t.pwindowSize(), t.evaluateScrollOffset(), list}) } } @@ -3250,7 +3253,7 @@ func (t *Terminal) Loop() { if valid { t.cancelPreview() t.previewBox.Set(reqPreviewEnqueue, - previewRequest{t.previewOpts.command, t.pwindowSize(), t.evaluateScrollOffset(), list}) + previewRequest{t.previewOpts.command, t.pwindow, t.pwindowSize(), t.evaluateScrollOffset(), list}) } } else { // Discard the preview content so that it won't accidentally appear diff --git a/test/test_go.rb b/test/test_go.rb index 12e53471..30d5e7b2 100755 --- a/test/test_go.rb +++ b/test/test_go.rb @@ -3020,6 +3020,13 @@ class TestGoFZF < TestBase tmux.send_keys :x tmux.until { |lines| assert(lines.any? { |line| line.include?('[x-foo]') }) } end + + def test_preview_window_hidden_on_focus + tmux.send_keys "seq 3 | #{FZF} --preview 'echo {}' --bind focus:hide-preview", :Enter + tmux.until { |lines| assert_includes lines, '> 1' } + tmux.send_keys :Up + tmux.until { |lines| assert_includes lines, '> 2' } + end end module TestShell