diff options
Diffstat (limited to 'widgets')
-rw-r--r-- | widgets/compose.go | 8 | ||||
-rw-r--r-- | widgets/msgviewer.go | 10 | ||||
-rw-r--r-- | widgets/terminal.go | 12 |
3 files changed, 27 insertions, 3 deletions
diff --git a/widgets/compose.go b/widgets/compose.go index 4f36b297..3693ad18 100644 --- a/widgets/compose.go +++ b/widgets/compose.go @@ -700,6 +700,14 @@ func (c *Composer) Focus(focus bool) { c.Unlock() } +func (c *Composer) Show(visible bool) { + c.Lock() + if vis, ok := c.focusable[c.focused].(ui.Visible); ok { + vis.Show(visible) + } + c.Unlock() +} + func (c *Composer) Config() *config.AccountConfig { return c.acctConfig } diff --git a/widgets/msgviewer.go b/widgets/msgviewer.go index f38b186a..684c99cb 100644 --- a/widgets/msgviewer.go +++ b/widgets/msgviewer.go @@ -406,6 +406,12 @@ func (ps *PartSwitcher) Focus(focus bool) { } } +func (ps *PartSwitcher) Show(visible bool) { + if ps.parts[ps.selected].term != nil { + ps.parts[ps.selected].term.Show(visible) + } +} + func (ps *PartSwitcher) Event(event tcell.Event) bool { return ps.parts[ps.selected].Event(event) } @@ -505,6 +511,10 @@ func (mv *MessageViewer) Focus(focus bool) { mv.switcher.Focus(focus) } +func (mv *MessageViewer) Show(visible bool) { + mv.switcher.Show(visible) +} + type PartViewer struct { acctConfig *config.AccountConfig err error diff --git a/widgets/terminal.go b/widgets/terminal.go index ca5a5ef2..c3c16db6 100644 --- a/widgets/terminal.go +++ b/widgets/terminal.go @@ -18,6 +18,7 @@ type Terminal struct { ctx *ui.Context destroyed bool focus bool + visible bool vterm *tcellterm.Terminal running bool @@ -29,8 +30,9 @@ type Terminal struct { func NewTerminal(cmd *exec.Cmd) (*Terminal, error) { term := &Terminal{ - cmd: cmd, - vterm: tcellterm.New(), + cmd: cmd, + vterm: tcellterm.New(), + visible: true, } return term, nil } @@ -97,6 +99,10 @@ func (term *Terminal) Draw(ctx *ui.Context) { term.draw() } +func (term *Terminal) Show(visible bool) { + term.visible = visible +} + func (term *Terminal) draw() { term.vterm.Draw() if term.focus && !term.closed && term.ctx != nil { @@ -149,7 +155,7 @@ func (term *Terminal) HandleEvent(ev tcell.Event) bool { } switch ev := ev.(type) { case *views.EventWidgetContent: - if term.focus { + if term.visible { ui.QueueRedraw() } return true |