fix(tui): simplify focus model — tab toggles capture ↔ list only
Tag rail removed from tab cycle to reduce focus confusion. Rail is now ambient-by-default, focusable via h from list (spatial). - Tab: capture ↔ list (no rail, no detail in cycle) - h from list: focus tag rail (when visible) - l from rail: back to list - Split detail reachable via l/enter, not tab - Remove nextFocusFromCapture helper
This commit is contained in:
+13
-19
@@ -333,13 +333,6 @@ func (m model) updateKeys(msg tea.KeyMsg) (tea.Model, tea.Cmd) {
|
||||
return m.updateBrowse(msg)
|
||||
}
|
||||
|
||||
func (m model) nextFocusFromCapture() focusPane {
|
||||
if m.railVisible() {
|
||||
return focusTagRail
|
||||
}
|
||||
return focusList
|
||||
}
|
||||
|
||||
func (m model) updateCapture(msg tea.KeyMsg) (tea.Model, tea.Cmd) {
|
||||
switch msg.String() {
|
||||
case "enter":
|
||||
@@ -364,12 +357,9 @@ func (m model) updateCapture(msg tea.KeyMsg) (tea.Model, tea.Cmd) {
|
||||
return m, createEntity(m.store, result.entity)
|
||||
}
|
||||
return m, nil
|
||||
case "esc":
|
||||
case "esc", "tab":
|
||||
cmd := m.setFocus(focusList)
|
||||
return m, cmd
|
||||
case "tab":
|
||||
cmd := m.setFocus(m.nextFocusFromCapture())
|
||||
return m, cmd
|
||||
}
|
||||
m.input = m.input.updateKey(msg)
|
||||
return m, nil
|
||||
@@ -396,10 +386,7 @@ func (m model) updateBrowse(msg tea.KeyMsg) (tea.Model, tea.Cmd) {
|
||||
return m, loadEntities(m.store, m.listParams())
|
||||
}
|
||||
return m, nil
|
||||
case "tab":
|
||||
m.focus = focusList
|
||||
return m, nil
|
||||
case "esc":
|
||||
case "l", "tab", "esc":
|
||||
m.focus = focusList
|
||||
return m, nil
|
||||
case "ctrl+b":
|
||||
@@ -423,10 +410,6 @@ func (m model) updateBrowse(msg tea.KeyMsg) (tea.Model, tea.Cmd) {
|
||||
if m.splitDetail && m.state == stateList {
|
||||
switch msg.String() {
|
||||
case "tab":
|
||||
if m.focus == focusList {
|
||||
m.focus = focusDetail
|
||||
return m, nil
|
||||
}
|
||||
cmd := m.setFocus(focusCapture)
|
||||
return m, cmd
|
||||
case "l":
|
||||
@@ -439,6 +422,10 @@ func (m model) updateBrowse(msg tea.KeyMsg) (tea.Model, tea.Cmd) {
|
||||
m.focus = focusList
|
||||
return m, nil
|
||||
}
|
||||
if m.focus == focusList && m.railVisible() {
|
||||
m.focus = focusTagRail
|
||||
return m, nil
|
||||
}
|
||||
case "esc":
|
||||
if m.focus == focusDetail {
|
||||
m.focus = focusList
|
||||
@@ -559,6 +546,13 @@ func (m model) updateBrowse(msg tea.KeyMsg) (tea.Model, tea.Cmd) {
|
||||
cmd := m.setFocus(focusCapture)
|
||||
return m, cmd
|
||||
|
||||
case "h":
|
||||
if m.state == stateList && m.railVisible() && m.focus == focusList {
|
||||
m.focus = focusTagRail
|
||||
return m, nil
|
||||
}
|
||||
return m, nil
|
||||
|
||||
case "a":
|
||||
if m.state == stateList {
|
||||
cmd := m.setFocus(focusCapture)
|
||||
|
||||
Reference in New Issue
Block a user