| 437 | } |
| 438 | |
| 439 | func (m model) handleFontMenuKey(key string) (tea.Model, tea.Cmd) { |
| 440 | switch key { |
| 441 | case "esc": |
| 442 | // Revert to the mode that was active when the menu opened. |
| 443 | m.board.TextMode = m.fontMenu.SavedMode |
| 444 | m.fontMenu = nil |
| 445 | return m, nil |
| 446 | case "up", "k": |
| 447 | m.fontMenu.Move(-1) |
| 448 | m.board.TextMode = m.fontMenu.Selected() |
| 449 | return m, nil |
| 450 | case "down", "j": |
| 451 | m.fontMenu.Move(1) |
| 452 | m.board.TextMode = m.fontMenu.Selected() |
| 453 | return m, nil |
| 454 | case "enter": |
| 455 | // Already applied on cursor move; just close + persist. |
| 456 | m.board.TextMode = m.fontMenu.Selected() |
| 457 | m.saver.Touch() |
| 458 | m.fontMenu = nil |
| 459 | return m, nil |
| 460 | } |
| 461 | return m, nil |
| 462 | } |
| 463 | |
| 464 | // handleBgMenuKey drives the background picker. Up/down move between the cork |
| 465 | // toggle, the color rows, and the custom-hex row, live-previewing as they go. |