From 6adc16ca8a9883df828499a1b48d1f340fa0b5df Mon Sep 17 00:00:00 2001 From: Walter Date: Mon, 20 Oct 2025 05:16:54 +0200 Subject: [PATCH] fix(tui): Allow modals to handle ESC key before force closing (#3279) --- packages/tui/internal/tui/tui.go | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/packages/tui/internal/tui/tui.go b/packages/tui/internal/tui/tui.go index 50b503c6..da77b42f 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":