forked from Mirrors/bubbletea
Simplify how we listen for window resizes
This commit is contained in:
parent
01dd88fd1d
commit
4bfad658ad
19
tea.go
19
tea.go
|
@ -94,7 +94,6 @@ type Program struct {
|
|||
// is on by default.
|
||||
CatchPanics bool
|
||||
|
||||
outputIsTTY bool
|
||||
console console.Console
|
||||
|
||||
// Stores the original reference to stdin for cases where input is not a
|
||||
|
@ -256,22 +255,11 @@ func (p *Program) Start() error {
|
|||
var (
|
||||
cmds = make(chan Cmd)
|
||||
errs = make(chan error)
|
||||
|
||||
// If output is a file (e.g. os.Stdout) then this will be set
|
||||
// accordingly. Most of the time you should refer to p.outputIsTTY
|
||||
// rather than do a nil check against the value here.
|
||||
outputAsFile *os.File
|
||||
)
|
||||
|
||||
ctx, cancel := context.WithCancel(context.Background())
|
||||
defer cancel()
|
||||
|
||||
// Is output a terminal?
|
||||
if f, ok := p.output.(*os.File); ok {
|
||||
outputAsFile = f
|
||||
p.outputIsTTY = isatty.IsTerminal(f.Fd())
|
||||
}
|
||||
|
||||
switch {
|
||||
case p.startupOptions.has(withInputTTY):
|
||||
// Open a new TTY, by request
|
||||
|
@ -383,10 +371,11 @@ func (p *Program) Start() error {
|
|||
}()
|
||||
}
|
||||
|
||||
if p.outputIsTTY {
|
||||
// Is output a terminal?
|
||||
if f, ok := p.output.(*os.File); ok {
|
||||
// Get initial terminal size
|
||||
go func() {
|
||||
w, h, err := term.GetSize(int(outputAsFile.Fd()))
|
||||
w, h, err := term.GetSize(int(f.Fd()))
|
||||
if err != nil {
|
||||
errs <- err
|
||||
}
|
||||
|
@ -394,7 +383,7 @@ func (p *Program) Start() error {
|
|||
}()
|
||||
|
||||
// Listen for window resizes
|
||||
go listenForResize(outputAsFile, p.msgs, errs)
|
||||
go listenForResize(f, p.msgs, errs)
|
||||
}
|
||||
|
||||
// Process commands
|
||||
|
|
Loading…
Reference in New Issue