diff options
| author | Walter <[email protected]> | 2025-10-20 05:16:54 +0200 |
|---|---|---|
| committer | GitHub <[email protected]> | 2025-10-19 22:16:54 -0500 |
| commit | 6adc16ca8a9883df828499a1b48d1f340fa0b5df (patch) | |
| tree | bd609f14283497c95d91f6c21917533101b3a414 /packages | |
| parent | 10ebe9ae09c6ef3ddbdb741c17c8c8f2aef79c5a (diff) | |
| download | opencode-6adc16ca8a9883df828499a1b48d1f340fa0b5df.tar.gz opencode-6adc16ca8a9883df828499a1b48d1f340fa0b5df.zip | |
fix(tui): Allow modals to handle ESC key before force closing (#3279)
Diffstat (limited to 'packages')
| -rw-r--r-- | packages/tui/internal/tui/tui.go | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/packages/tui/internal/tui/tui.go b/packages/tui/internal/tui/tui.go index 50b503c66..da77b42f2 100644 --- a/packages/tui/internal/tui/tui.go +++ b/packages/tui/internal/tui/tui.go @@ -162,9 +162,15 @@ func (a Model) Update(msg tea.Msg) (tea.Model, tea.Cmd) { // 1. Handle active modal if a.modal != nil { switch keyString { - // Escape always closes current modal + // Escape closes current modal, but give modal a chance to handle it first case "esc": - cmd := a.modal.Close() + // give the modal a chance to handle the esc + updatedModal, cmd := a.modal.Update(msg) + a.modal = updatedModal.(layout.Modal) + if cmd != nil { + return a, cmd + } + cmd = a.modal.Close() a.modal = nil return a, cmd case "ctrl+c": |
