Просмотр исходного кода

really disable history nav when completions dialog is open (#50)

Ed Zynda 9 месяцев назад
Родитель
Сommit
b9ebcea82c
3 измененных файлов с 16 добавлено и 3 удалено
  1. 11 0
      internal/app/app.go
  2. 3 3
      internal/tui/components/chat/editor.go
  3. 2 0
      internal/tui/page/chat.go

+ 11 - 0
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

+ 3 - 3
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()

+ 2 - 0
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{}