summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorEd Zynda <[email protected]>2025-05-23 14:43:30 +0300
committerGitHub <[email protected]>2025-05-23 06:43:30 -0500
commitb9ebcea82c262dc834633c2c8f44a94fe8773a15 (patch)
tree96ef7e6495574ae0d248a8eafeeb667549d46bad
parentf31f92119d95b7b844a5ec0b05533c079b48a7fa (diff)
downloadopencode-b9ebcea82c262dc834633c2c8f44a94fe8773a15.tar.gz
opencode-b9ebcea82c262dc834633c2c8f44a94fe8773a15.zip
really disable history nav when completions dialog is open (#50)
-rw-r--r--internal/app/app.go11
-rw-r--r--internal/tui/components/chat/editor.go6
-rw-r--r--internal/tui/page/chat.go2
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{}