feat(mouse): delegate mouse actions to terminal emulator (#218)

bashbunni created

Change summary

cmd/root.go         |  2 --
internal/tui/tui.go | 25 -------------------------
2 files changed, 27 deletions(-)

Detailed changes

cmd/root.go 🔗

@@ -106,8 +106,6 @@ to assist developers in writing, debugging, and understanding code directly from
 			tui.New(app),
 			tea.WithAltScreen(),
 			tea.WithContext(ctx),
-			tea.WithMouseCellMotion(),            // Use cell motion instead of all motion to reduce event flooding
-			tea.WithFilter(tui.MouseEventFilter), // Filter mouse events based on focus state
 		)
 
 		go app.Subscribe(program)

internal/tui/tui.go 🔗

@@ -31,29 +31,6 @@ import (
 	"github.com/charmbracelet/lipgloss/v2"
 )
 
-// MouseEventFilter filters mouse events based on the current focus state
-// This is used with tea.WithFilter to prevent mouse scroll events from
-// interfering with typing performance in the editor
-func MouseEventFilter(m tea.Model, msg tea.Msg) tea.Msg {
-	// Only filter mouse events
-	switch msg.(type) {
-	case tea.MouseWheelMsg, tea.MouseMotionMsg:
-		// Check if we have an appModel and if editor is focused
-		if appModel, ok := m.(*appModel); ok {
-			if appModel.currentPage == chat.ChatPageID {
-				if chatPage, ok := appModel.pages[appModel.currentPage].(chat.ChatPage); ok {
-					// If editor is focused (not chatFocused), filter out mouse wheel/motion events
-					if !chatPage.IsChatFocused() {
-						return nil // Filter out the event
-					}
-				}
-			}
-		}
-	}
-	// Allow all other events to pass through
-	return msg
-}
-
 // appModel represents the main application model that manages pages, dialogs, and UI state.
 type appModel struct {
 	wWidth, wHeight int // Window dimensions
@@ -88,8 +65,6 @@ func (a appModel) Init() tea.Cmd {
 	cmd = a.status.Init()
 	cmds = append(cmds, cmd)
 
-	cmds = append(cmds, tea.EnableMouseAllMotion)
-
 	return tea.Batch(cmds...)
 }