|
|
|
@ -251,6 +251,7 @@ type Terminal struct {
|
|
|
|
|
borderWidth int
|
|
|
|
|
count int
|
|
|
|
|
progress int
|
|
|
|
|
hasResultActions bool
|
|
|
|
|
hasFocusActions bool
|
|
|
|
|
hasLoadActions bool
|
|
|
|
|
triggerLoad bool
|
|
|
|
@ -731,6 +732,7 @@ func NewTerminal(opts *Options, eventBox *util.EventBox) *Terminal {
|
|
|
|
|
ellipsis: opts.Ellipsis,
|
|
|
|
|
ansi: opts.Ansi,
|
|
|
|
|
tabstop: opts.Tabstop,
|
|
|
|
|
hasResultActions: false,
|
|
|
|
|
hasFocusActions: false,
|
|
|
|
|
hasLoadActions: false,
|
|
|
|
|
triggerLoad: false,
|
|
|
|
@ -759,7 +761,7 @@ func NewTerminal(opts *Options, eventBox *util.EventBox) *Terminal {
|
|
|
|
|
killChan: make(chan int),
|
|
|
|
|
serverInputChan: make(chan []*action, 10),
|
|
|
|
|
serverOutputChan: make(chan string),
|
|
|
|
|
eventChan: make(chan tui.Event, 4), // (load + zero|one) | (focus) | (GetChar)
|
|
|
|
|
eventChan: make(chan tui.Event, 5), // (load + result + zero|one) | (focus) | (GetChar)
|
|
|
|
|
tui: renderer,
|
|
|
|
|
initFunc: func() { renderer.Init() },
|
|
|
|
|
executing: util.NewAtomicBool(false),
|
|
|
|
@ -803,6 +805,7 @@ func NewTerminal(opts *Options, eventBox *util.EventBox) *Terminal {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
_, t.hasResultActions = t.keymap[tui.Result.AsEvent()]
|
|
|
|
|
_, t.hasFocusActions = t.keymap[tui.Focus.AsEvent()]
|
|
|
|
|
_, t.hasLoadActions = t.keymap[tui.Load.AsEvent()]
|
|
|
|
|
|
|
|
|
@ -1076,6 +1079,9 @@ func (t *Terminal) UpdateList(merger *Merger) {
|
|
|
|
|
t.eventChan <- one
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if t.hasResultActions {
|
|
|
|
|
t.eventChan <- tui.Result.AsEvent()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
t.mutex.Unlock()
|
|
|
|
|
t.reqBox.Set(reqInfo, nil)
|
|
|
|
@ -3189,7 +3195,7 @@ func (t *Terminal) Loop() {
|
|
|
|
|
}
|
|
|
|
|
select {
|
|
|
|
|
case event = <-t.eventChan:
|
|
|
|
|
needBarrier = !event.Is(tui.Load, tui.Focus, tui.One, tui.Zero)
|
|
|
|
|
needBarrier = !event.Is(tui.Load, tui.Result, tui.Focus, tui.One, tui.Zero)
|
|
|
|
|
case serverActions := <-t.serverInputChan:
|
|
|
|
|
event = tui.Invalid.AsEvent()
|
|
|
|
|
if t.listenAddr == nil || t.listenAddr.IsLocal() || t.listenUnsafe {
|
|
|
|
|