summaryrefslogtreecommitdiffstats
path: root/src/terminal.go
diff options
context:
space:
mode:
authorJunegunn Choi <junegunn.c@gmail.com>2023-11-17 19:13:37 +0900
committerJunegunn Choi <junegunn.c@gmail.com>2023-11-17 19:13:37 +0900
commit29e67d307a051c2ec544f530869e25d36a0050f3 (patch)
tree5a4829b8e1ae2e9dbc5fdcbee3dbf5264321766b /src/terminal.go
parent7320b7df62039c879c4f609bca946ea09b438a98 (diff)
Fix crash when preview window is hidden on focus event
Diffstat (limited to 'src/terminal.go')
-rw-r--r--src/terminal.go11
1 files changed, 7 insertions, 4 deletions
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