refactor(ui/root): implement primitive passthrough methods
This commit is contained in:
parent
95b85e6c30
commit
431659900a
1 changed files with 21 additions and 14 deletions
|
|
@ -17,7 +17,6 @@ import (
|
|||
const tokenEnvVarKey = "DISCORDO_TOKEN"
|
||||
|
||||
type View struct {
|
||||
*tview.Box
|
||||
app *tview.Application
|
||||
inner tview.Primitive
|
||||
chat *chat.View
|
||||
|
|
@ -29,7 +28,6 @@ func NewView(cfg *config.Config, app *tview.Application) *View {
|
|||
tview.Styles = tview.Theme{}
|
||||
v := &View{
|
||||
app: app,
|
||||
Box: tview.NewBox(),
|
||||
cfg: cfg,
|
||||
}
|
||||
|
||||
|
|
@ -67,13 +65,12 @@ func (v *View) closeChatViewState() {
|
|||
}
|
||||
}
|
||||
|
||||
var _ tview.Primitive = (*View)(nil)
|
||||
|
||||
func (v *View) Draw(screen tcell.Screen) {
|
||||
if v.inner == nil {
|
||||
return
|
||||
if v.inner != nil {
|
||||
v.inner.Draw(screen)
|
||||
}
|
||||
x, y, width, height := v.GetRect()
|
||||
v.inner.SetRect(x, y, width, height)
|
||||
v.inner.Draw(screen)
|
||||
}
|
||||
|
||||
func (v *View) HandleEvent(event tcell.Event) tview.Command {
|
||||
|
|
@ -96,7 +93,7 @@ func (v *View) HandleEvent(event tcell.Event) tview.Command {
|
|||
return tview.QuitCommand{}
|
||||
}
|
||||
}
|
||||
return tview.SetFocusCommand{Target: v}
|
||||
return tview.SetFocusCommand{Target: v.inner}
|
||||
|
||||
case *tview.KeyEvent:
|
||||
switch {
|
||||
|
|
@ -119,24 +116,34 @@ func (v *View) HandleEvent(event tcell.Event) tview.Command {
|
|||
return nil
|
||||
}
|
||||
|
||||
func (v *View) GetRect() (int, int, int, int) {
|
||||
if v.inner != nil {
|
||||
return v.inner.GetRect()
|
||||
}
|
||||
return 0, 0, 0, 0
|
||||
}
|
||||
|
||||
func (v *View) SetRect(x int, y int, width int, height int) {
|
||||
if v.inner != nil {
|
||||
v.inner.SetRect(x, y, width, height)
|
||||
}
|
||||
}
|
||||
|
||||
func (v *View) Focus(delegate func(p tview.Primitive)) {
|
||||
if v.inner != nil {
|
||||
delegate(v.inner)
|
||||
return
|
||||
}
|
||||
v.Box.Focus(delegate)
|
||||
}
|
||||
|
||||
func (v *View) HasFocus() bool {
|
||||
if v.inner != nil && v.inner.HasFocus() {
|
||||
return true
|
||||
if v.inner != nil {
|
||||
return v.inner.HasFocus()
|
||||
}
|
||||
return v.Box.HasFocus()
|
||||
return true
|
||||
}
|
||||
|
||||
func (v *View) Blur() {
|
||||
if v.inner != nil {
|
||||
v.inner.Blur()
|
||||
}
|
||||
v.Box.Blur()
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue