diff --git a/internal/tui/components/dialogs/permissions/permissions.go b/internal/tui/components/dialogs/permissions/permissions.go index 720dc807ae9da9ed6951c3133043ecbbac14d8e7..be39a069d01c41f38e56757facc7ebd061ed9618 100644 --- a/internal/tui/components/dialogs/permissions/permissions.go +++ b/internal/tui/components/dialogs/permissions/permissions.go @@ -134,26 +134,22 @@ func (p *permissionDialogCmp) Update(msg tea.Msg) (tea.Model, tea.Cmd) { } case key.Matches(msg, p.keyMap.ScrollDown): if p.supportsDiffView() { - p.diffYOffset += 1 - p.contentDirty = true // Mark content as dirty when scrolling + p.scrollDown() return p, nil } case key.Matches(msg, p.keyMap.ScrollUp): if p.supportsDiffView() { - p.diffYOffset = max(0, p.diffYOffset-1) - p.contentDirty = true // Mark content as dirty when scrolling + p.scrollUp() return p, nil } case key.Matches(msg, p.keyMap.ScrollLeft): if p.supportsDiffView() { - p.diffXOffset = max(0, p.diffXOffset-5) - p.contentDirty = true // Mark content as dirty when scrolling + p.scrollLeft() return p, nil } case key.Matches(msg, p.keyMap.ScrollRight): if p.supportsDiffView() { - p.diffXOffset += 5 - p.contentDirty = true // Mark content as dirty when scrolling + p.scrollRight() return p, nil } default: @@ -162,11 +158,44 @@ func (p *permissionDialogCmp) Update(msg tea.Msg) (tea.Model, tea.Cmd) { p.contentViewPort = viewPort cmds = append(cmds, cmd) } + case tea.MouseWheelMsg: + if p.supportsDiffView() { + switch msg.Button { + case tea.MouseWheelDown: + p.scrollDown() + case tea.MouseWheelUp: + p.scrollUp() + case tea.MouseWheelLeft: + p.scrollLeft() + case tea.MouseWheelRight: + p.scrollRight() + } + } } return p, tea.Batch(cmds...) } +func (p *permissionDialogCmp) scrollDown() { + p.diffYOffset += 1 + p.contentDirty = true +} + +func (p *permissionDialogCmp) scrollUp() { + p.diffYOffset = max(0, p.diffYOffset-1) + p.contentDirty = true +} + +func (p *permissionDialogCmp) scrollLeft() { + p.diffXOffset = max(0, p.diffXOffset-5) + p.contentDirty = true +} + +func (p *permissionDialogCmp) scrollRight() { + p.diffXOffset += 5 + p.contentDirty = true +} + func (p *permissionDialogCmp) selectCurrentOption() tea.Cmd { var action PermissionAction diff --git a/internal/tui/tui.go b/internal/tui/tui.go index 60f10de20fc231999557d2aba8d7d8b35fd70659..ffc819bfe74354089ae23138938fcca7155c8539 100644 --- a/internal/tui/tui.go +++ b/internal/tui/tui.go @@ -264,6 +264,11 @@ func (a *appModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) { return a, a.handleKeyPressMsg(msg) case tea.MouseWheelMsg: + if a.dialog.HasDialogs() && a.dialog.ActiveDialogID() == permissions.PermissionsDialogID { + u, dialogCmd := a.dialog.Update(msg) + a.dialog = u.(dialogs.DialogCmp) + cmds = append(cmds, dialogCmd) + } if !a.dialog.HasDialogs() { updated, pageCmd := a.pages[a.currentPage].Update(msg) a.pages[a.currentPage] = updated.(util.Model)