From b83c52ab50dd03de3b382ea5090c3e368dbd8e0e Mon Sep 17 00:00:00 2001 From: Tai Groot Date: Sat, 4 Mar 2023 12:05:29 -0800 Subject: [PATCH] make highlight color of active list responsive --- ui/listdelegate.go | 14 ++++++++++++-- ui/settings.go | 8 ++++++-- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/ui/listdelegate.go b/ui/listdelegate.go index 3d318b7..29aa6bb 100644 --- a/ui/listdelegate.go +++ b/ui/listdelegate.go @@ -8,7 +8,13 @@ import ( tea "github.com/charmbracelet/bubbletea" ) -type selectableDelegate struct{} +type SelectionMsg struct { + IsSelected bool +} + +type selectableDelegate struct { + IsActiveList bool +} func (s selectableDelegate) Height() int { return 1 } @@ -17,6 +23,10 @@ func (s selectableDelegate) Spacing() int { } func (s selectableDelegate) Update(msg tea.Msg, m *list.Model) tea.Cmd { + if msg, ok := msg.(SelectionMsg); ok { + s.IsActiveList = msg.IsSelected + m.SetDelegate(s) + } return nil } @@ -32,7 +42,7 @@ func (s selectableDelegate) Render(w io.Writer, m list.Model, index int, item li str += " [ ] " } str += x.text - if m.Index() == index { + if s.IsActiveList && m.Index() == index { sty := list.NewDefaultItemStyles() str = sty.SelectedTitle.Render(str) } diff --git a/ui/settings.go b/ui/settings.go index 6053043..25b3306 100644 --- a/ui/settings.go +++ b/ui/settings.go @@ -57,8 +57,12 @@ func (m Settings) Update(msg tea.Msg) (tea.Model, tea.Cmd) { if msg.String() == "tab" { if m.cursor == authors { m.cursor = repos + m.AuthorList.SetDelegate(selectableDelegate{IsActiveList: false}) + m.RepoList.SetDelegate(selectableDelegate{IsActiveList: true}) } else { m.cursor = authors + m.AuthorList.SetDelegate(selectableDelegate{IsActiveList: true}) + m.RepoList.SetDelegate(selectableDelegate{IsActiveList: false}) } } } @@ -193,12 +197,12 @@ func NewSettings() (Settings, error) { for _, v := range m.AllRepos { repoItems = append(repoItems, v) } - m.RepoList = list.New(repoItems, selectableDelegate{}, 0, 4) + m.RepoList = list.New(repoItems, selectableDelegate{IsActiveList: false}, 0, 4) authItems := []list.Item{} for _, v := range m.AllAuthors { authItems = append(authItems, v) } - m.AuthorList = list.New(authItems, selectableDelegate{}, 0, 4) + m.AuthorList = list.New(authItems, selectableDelegate{IsActiveList: true}, 0, 4) return m, nil }