diff options
Diffstat (limited to 'internal')
| -rw-r--r-- | internal/tui/tui.go | 12 | ||||
| -rw-r--r-- | internal/tui/tui_test.go | 17 |
2 files changed, 29 insertions, 0 deletions
diff --git a/internal/tui/tui.go b/internal/tui/tui.go index f1de224..f1c172b 100644 --- a/internal/tui/tui.go +++ b/internal/tui/tui.go @@ -15,6 +15,7 @@ import ( "ior/internal/tui/messages" "ior/internal/tui/pidpicker" "ior/internal/tui/probes" + "log" "os" "strings" "sync" @@ -175,6 +176,9 @@ type Model struct { exportEnabled bool isDark bool focused bool + + keyboardEnhancements tea.KeyboardEnhancementsMsg + keyboardEnhancementsKnown bool } // NewModel creates the top-level TUI model. @@ -257,6 +261,13 @@ func (m Model) Update(msg tea.Msg) (tea.Model, tea.Cmd) { case tea.BackgroundColorMsg: m.applyTheme(msg.IsDark()) return m, nil + case tea.KeyboardEnhancementsMsg: + m.keyboardEnhancements = msg + m.keyboardEnhancementsKnown = true + if msg.SupportsKeyDisambiguation() { + log.Printf("tui: keyboard enhancements enabled (flags=%d, eventTypes=%t)", msg.Flags, msg.SupportsEventTypes()) + } + return m, nil case tea.FocusMsg: m.focused = true m.dashboard.SetFocused(true) @@ -696,5 +707,6 @@ func altScreenView(content string) tea.View { view := tea.NewView(content) view.AltScreen = true view.ReportFocus = true + view.KeyboardEnhancements.ReportEventTypes = true return view } diff --git a/internal/tui/tui_test.go b/internal/tui/tui_test.go index e705f41..156b876 100644 --- a/internal/tui/tui_test.go +++ b/internal/tui/tui_test.go @@ -640,3 +640,20 @@ func TestBlurPausesDashboardRefreshAndFocusResumesIt(t *testing.T) { t.Fatalf("expected focus command to be a batch") } } + +func TestKeyboardEnhancementsMsgHandledGracefully(t *testing.T) { + m := NewModel(-1, func(context.Context) error { return nil }) + + next, cmd := m.Update(tea.KeyboardEnhancementsMsg{Flags: 1}) + if cmd != nil { + t.Fatalf("expected no command when handling keyboard enhancements msg") + } + + updated := next.(Model) + if !updated.keyboardEnhancementsKnown { + t.Fatalf("expected keyboard enhancements to be marked as known") + } + if !updated.keyboardEnhancements.SupportsKeyDisambiguation() { + t.Fatalf("expected non-zero flags to report key disambiguation support") + } +} |
