diff options
| author | Ed Zynda <[email protected]> | 2025-05-23 14:43:30 +0300 |
|---|---|---|
| committer | GitHub <[email protected]> | 2025-05-23 06:43:30 -0500 |
| commit | b9ebcea82c262dc834633c2c8f44a94fe8773a15 (patch) | |
| tree | 96ef7e6495574ae0d248a8eafeeb667549d46bad /internal | |
| parent | f31f92119d95b7b844a5ec0b05533c079b48a7fa (diff) | |
| download | opencode-b9ebcea82c262dc834633c2c8f44a94fe8773a15.tar.gz opencode-b9ebcea82c262dc834633c2c8f44a94fe8773a15.zip | |
really disable history nav when completions dialog is open (#50)
Diffstat (limited to 'internal')
| -rw-r--r-- | internal/app/app.go | 11 | ||||
| -rw-r--r-- | internal/tui/components/chat/editor.go | 6 | ||||
| -rw-r--r-- | internal/tui/page/chat.go | 2 |
3 files changed, 16 insertions, 3 deletions
diff --git a/internal/app/app.go b/internal/app/app.go index 943f1b24e..41070684e 100644 --- a/internal/app/app.go +++ b/internal/app/app.go @@ -43,6 +43,7 @@ type App struct { // UI state filepickerOpen bool + completionDialogOpen bool } func New(ctx context.Context, conn *sql.DB) (*App, error) { @@ -141,6 +142,16 @@ func (app *App) SetFilepickerOpen(open bool) { app.filepickerOpen = open } +// IsCompletionDialogOpen returns whether the completion dialog is currently open +func (app *App) IsCompletionDialogOpen() bool { + return app.completionDialogOpen +} + +// SetCompletionDialogOpen sets the state of the completion dialog +func (app *App) SetCompletionDialogOpen(open bool) { + app.completionDialogOpen = open +} + // Shutdown performs a clean shutdown of the application func (app *App) Shutdown() { // Cancel all watcher goroutines diff --git a/internal/tui/components/chat/editor.go b/internal/tui/components/chat/editor.go index 212ad5529..0858e22df 100644 --- a/internal/tui/components/chat/editor.go +++ b/internal/tui/components/chat/editor.go @@ -247,8 +247,8 @@ func (m *editorCmp) Update(msg tea.Msg) (tea.Model, tea.Cmd) { } // Handle history navigation with up/down arrow keys - // Only handle history navigation if the filepicker is not open - if m.textarea.Focused() && key.Matches(msg, editorMaps.HistoryUp) && !m.app.IsFilepickerOpen() { + // Only handle history navigation if the filepicker is not open and completion dialog is not open + if m.textarea.Focused() && key.Matches(msg, editorMaps.HistoryUp) && !m.app.IsFilepickerOpen() && !m.app.IsCompletionDialogOpen() { // Get the current line number currentLine := m.textarea.Line() @@ -268,7 +268,7 @@ func (m *editorCmp) Update(msg tea.Msg) (tea.Model, tea.Cmd) { } } - if m.textarea.Focused() && key.Matches(msg, editorMaps.HistoryDown) && !m.app.IsFilepickerOpen() { + if m.textarea.Focused() && key.Matches(msg, editorMaps.HistoryDown) && !m.app.IsFilepickerOpen() && !m.app.IsCompletionDialogOpen() { // Get the current line number and total lines currentLine := m.textarea.Line() value := m.textarea.Value() diff --git a/internal/tui/page/chat.go b/internal/tui/page/chat.go index 1b31c838c..e4fb62caf 100644 --- a/internal/tui/page/chat.go +++ b/internal/tui/page/chat.go @@ -123,10 +123,12 @@ func (p *chatPage) Update(msg tea.Msg) (tea.Model, tea.Cmd) { return p, nil case dialog.CompletionDialogCloseMsg: p.showCompletionDialog = false + p.app.SetCompletionDialogOpen(false) case tea.KeyMsg: switch { case key.Matches(msg, keyMap.ShowCompletionDialog): p.showCompletionDialog = true + p.app.SetCompletionDialogOpen(true) // Continue sending keys to layout->chat case key.Matches(msg, keyMap.NewSession): p.app.CurrentSession = &session.Session{} |
