@@ -134,26 +134,22 @@ func (p *permissionDialogCmp) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
135 case key.Matches(msg, p.keyMap.ScrollDown):
135 case key.Matches(msg, p.keyMap.ScrollDown):
136 if p.supportsDiffView() {
136 if p.supportsDiffView() {
137− p.diffYOffset += 1
137+ p.scrollDown()
138− p.contentDirty = true // Mark content as dirty when scrolling
139 return p, nil
138 return p, nil
141 case key.Matches(msg, p.keyMap.ScrollUp):
140 case key.Matches(msg, p.keyMap.ScrollUp):
142 if p.supportsDiffView() {
141 if p.supportsDiffView() {
143− p.diffYOffset = max(0, p.diffYOffset-1)
142+ p.scrollUp()
144− p.contentDirty = true // Mark content as dirty when scrolling
145 return p, nil
143 return p, nil
147 case key.Matches(msg, p.keyMap.ScrollLeft):
145 case key.Matches(msg, p.keyMap.ScrollLeft):
148 if p.supportsDiffView() {
146 if p.supportsDiffView() {
149− p.diffXOffset = max(0, p.diffXOffset-5)
147+ p.scrollLeft()
150− p.contentDirty = true // Mark content as dirty when scrolling
151 return p, nil
148 return p, nil
153 case key.Matches(msg, p.keyMap.ScrollRight):
150 case key.Matches(msg, p.keyMap.ScrollRight):
154 if p.supportsDiffView() {
151 if p.supportsDiffView() {
155− p.diffXOffset += 5
152+ p.scrollRight()
156− p.contentDirty = true // Mark content as dirty when scrolling
157 return p, nil
153 return p, nil
@@ -162,11 +158,44 @@ func (p *permissionDialogCmp) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
162 p.contentViewPort = viewPort
158 p.contentViewPort = viewPort
163 cmds = append(cmds, cmd)
159 cmds = append(cmds, cmd)
161+ case tea.MouseWheelMsg:
162+ if p.supportsDiffView() {
164+ case tea.MouseWheelDown:
166+ case tea.MouseWheelUp:
168+ case tea.MouseWheelLeft:
170+ case tea.MouseWheelRight:
167 return p, tea.Batch(cmds...)
176 return p, tea.Batch(cmds...)
179+func (p *permissionDialogCmp) scrollDown() {
181+ p.contentDirty = true
184+func (p *permissionDialogCmp) scrollUp() {
185+ p.diffYOffset = max(0, p.diffYOffset-1)
186+ p.contentDirty = true
189+func (p *permissionDialogCmp) scrollLeft() {
190+ p.diffXOffset = max(0, p.diffXOffset-5)
191+ p.contentDirty = true
194+func (p *permissionDialogCmp) scrollRight() {
196+ p.contentDirty = true
170func (p *permissionDialogCmp) selectCurrentOption() tea.Cmd {
199func (p *permissionDialogCmp) selectCurrentOption() tea.Cmd {
171 var action PermissionAction
200 var action PermissionAction