@@ -7,9 +7,8 @@ import (
77"sync"
88"time"
9910- tview "code.rocketnine.space/tslocum/cview"
1110"github.com/gdamore/tcell/v2"
12-11+ "github.com/rivo/tview"
1312"github.com/zrepl/zrepl/internal/client/status/viewmodel"
1413)
1514@@ -29,7 +28,6 @@ func interactive(c Client, flag statusFlags) error {
2928jobMenuRoot.SetSelectable(true)
3029jobMenu.SetRoot(jobMenuRoot)
3130jobMenu.SetCurrentNode(jobMenuRoot)
32-jobMenu.SetSelectedTextColor(tcell.ColorGreen)
3331jobTextDetail := tview.NewTextView()
3432jobTextDetail.SetWrap(false)
3533@@ -110,10 +108,8 @@ func interactive(c Client, flag statusFlags) error {
110108 }
111109app.SetRoot(toolbarSplit, true)
112110app.SetFocus(preModalFocus)
113-app.Draw()
114111 })
115112app.SetRoot(m, true)
116-app.Draw()
117113 }
118114119115app.SetRoot(toolbarSplit, true)
@@ -170,12 +166,14 @@ func interactive(c Client, flag statusFlags) error {
170166redrawJobsList = true
171167 }
172168if redrawJobsList {
169+selectedTextStyle := tcell.StyleDefault.Bold(true)
173170selectedJobN = nil
174171children := make([]*tview.TreeNode, len(jobs))
175172for i := range jobs {
176173jobN := tview.NewTreeNode(jobs[i].JobTreeTitle())
177174jobN.SetReference(jobs[i])
178175jobN.SetSelectable(true)
176+jobN.SetSelectedTextStyle(selectedTextStyle)
179177children[i] = jobN
180178jobN.SetSelectedFunc(func() {
181179viewmodelupdate(func(p *viewmodel.Params) {
@@ -187,6 +185,7 @@ func interactive(c Client, flag statusFlags) error {
187185 }
188186 }
189187jobMenuRoot.SetChildren(children)
188+jobMenuRoot.SetSelectedTextStyle(selectedTextStyle)
190189 }
191190192191if selectedJobN != nil && jobMenu.GetCurrentNode() != selectedJobN {
@@ -207,9 +206,6 @@ func interactive(c Client, flag statusFlags) error {
207206bottombar.ResizeItem(bottombarDateView, len(bottombardatestring), 0)
208207209208bottomBarStatus.SetText(m.BottomBarStatus())
210-211-app.Draw()
212-213209 }
214210215211go func() {
@@ -252,6 +248,7 @@ func interactive(c Client, flag statusFlags) error {
252248253249app.SetInputCapture(func(e *tcell.EventKey) *tcell.EventKey {
254250if e.Key() == tcell.KeyTab {
251+// TODO: only if there's no modal showing (long-time bug in zrepl status)
255252tabbableCycle()
256253return nil
257254 }
@@ -284,9 +281,8 @@ func interactive(c Client, flag statusFlags) error {
284281signals := []string{"wakeup", "reset"}
285282clientFuncs := []func(job string) error{c.SignalWakeup, c.SignalReset}
286283sigMod := tview.NewModal()
287-sigMod.SetBackgroundColor(tcell.ColorDefault)
288284sigMod.SetBorder(true)
289-sigMod.GetForm().SetButtonTextColorFocused(tcell.ColorGreen)
285+sigMod.SetButtonActivatedStyle(tcell.StyleDefault.Bold(true).Reverse(true))
290286sigMod.AddButtons(signals)
291287sigMod.SetText(fmt.Sprintf("Send a signal to job %q", job.Name()))
292288showModal(sigMod, func(idx int, _ string) {