mirror of https://github.com/mum4k/termdash.git
Bugfix: avoid crash on terminal rezise with tcell.
This commit is contained in:
parent
82e52ead85
commit
9360ffff49
|
@ -28,6 +28,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||||
func (*BarChart) Mouse(m *terminalapi.Mouse, meta *widgetapi.EventMeta) error { ... }
|
func (*BarChart) Mouse(m *terminalapi.Mouse, meta *widgetapi.EventMeta) error { ... }
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
- `termdash` no longer crashes when `tcell` is used and the terminal window
|
||||||
|
downsizes while content is being drawn.
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|
||||||
#### Infrastructure changes
|
#### Infrastructure changes
|
||||||
|
|
|
@ -195,21 +195,14 @@ func (c *Canvas) copyTo(offset image.Point, dstSetCell setCellFunc) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Apply applies the canvas to the corresponding area of the terminal.
|
// Apply applies the canvas to the corresponding area of the terminal.
|
||||||
// Guarantees to stay within limits of the area the canvas was created with.
|
|
||||||
func (c *Canvas) Apply(t terminalapi.Terminal) error {
|
func (c *Canvas) Apply(t terminalapi.Terminal) error {
|
||||||
termArea, err := area.FromSize(t.Size())
|
// Note - the size of the terminal might have changed since we started
|
||||||
if err != nil {
|
// drawing, since terminal windows are inherently racy (the user can resize
|
||||||
return err
|
// them at any time).
|
||||||
}
|
//
|
||||||
|
// This is ok, since the underlying terminal layer will just ignore cells
|
||||||
bufArea, err := area.FromSize(c.buffer.Size())
|
// that are out of bounds and termdash will redraw again once it receives
|
||||||
if err != nil {
|
// the resize event. Regression for #281.
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
if !bufArea.In(termArea) {
|
|
||||||
return fmt.Errorf("the canvas area %+v doesn't fit onto the terminal %+v", bufArea, termArea)
|
|
||||||
}
|
|
||||||
|
|
||||||
// The image.Point{0, 0} of this canvas isn't always exactly at
|
// The image.Point{0, 0} of this canvas isn't always exactly at
|
||||||
// image.Point{0, 0} on the terminal.
|
// image.Point{0, 0} on the terminal.
|
||||||
|
|
Loading…
Reference in New Issue