|
@@ -162,9 +162,15 @@ func (a Model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
|
|
|
// 1. Handle active modal
|
|
// 1. Handle active modal
|
|
|
if a.modal != nil {
|
|
if a.modal != nil {
|
|
|
switch keyString {
|
|
switch keyString {
|
|
|
- // Escape always closes current modal
|
|
|
|
|
|
|
+ // Escape closes current modal, but give modal a chance to handle it first
|
|
|
case "esc":
|
|
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
|
|
a.modal = nil
|
|
|
return a, cmd
|
|
return a, cmd
|
|
|
case "ctrl+c":
|
|
case "ctrl+c":
|