From 0fca68e8fe89740161d38a49e732754263e0ae0f Mon Sep 17 00:00:00 2001 From: Carlos Alexandro Becker Date: Fri, 28 Mar 2025 15:14:52 -0300 Subject: [PATCH] feat: update bubbles, enable mousewheel on pager Signed-off-by: Carlos Alexandro Becker --- filter/filter.go | 30 +++++++++++++++--------------- go.mod | 2 +- go.sum | 4 ++-- pager/command.go | 1 + 4 files changed, 19 insertions(+), 18 deletions(-) diff --git a/filter/filter.go b/filter/filter.go index 06ccd03..fec985f 100644 --- a/filter/filter.go +++ b/filter/filter.go @@ -309,7 +309,7 @@ func (m model) Update(msg tea.Msg) (tea.Model, tea.Cmd) { } m.viewport.SetWidth(msg.Width) if m.reverse { - m.viewport.YOffset = clamp(0, len(m.matches), len(m.matches)-m.viewport.Height()) + m.viewport.SetYOffset(clamp(0, len(m.matches), len(m.matches)-m.viewport.Height())) } case tea.KeyMsg: km := m.keymap @@ -371,7 +371,7 @@ func (m model) Update(msg tea.Msg) (tea.Model, tea.Cmd) { // in the reverse layout. var yOffsetFromBottom int if m.reverse { - yOffsetFromBottom = max(0, len(m.matches)-m.viewport.YOffset) + yOffsetFromBottom = max(0, len(m.matches)-m.viewport.YOffset()) } // A character was entered, this likely means that the text input has @@ -401,7 +401,7 @@ func (m model) Update(msg tea.Msg) (tea.Model, tea.Cmd) { // it remains at a constant position relative to the cursor. if m.reverse { maxYOffset := max(0, len(m.matches)-m.viewport.Height()) - m.viewport.YOffset = clamp(0, maxYOffset, len(m.matches)-yOffsetFromBottom) + m.viewport.SetYOffset(clamp(0, maxYOffset, len(m.matches)-yOffsetFromBottom)) } } } @@ -432,18 +432,18 @@ func (m *model) CursorUp() { } if m.reverse { //nolint:nestif m.cursor = (m.cursor + 1) % len(m.matches) - if len(m.matches)-m.cursor <= m.viewport.YOffset { - m.viewport.LineUp(1) + if len(m.matches)-m.cursor <= m.viewport.YOffset() { + m.viewport.ScrollUp(1) } - if len(m.matches)-m.cursor > m.viewport.Height()+m.viewport.YOffset { + if len(m.matches)-m.cursor > m.viewport.Height()+m.viewport.YOffset() { m.viewport.SetYOffset(len(m.matches) - m.viewport.Height()) } } else { m.cursor = (m.cursor - 1 + len(m.matches)) % len(m.matches) - if m.cursor < m.viewport.YOffset { - m.viewport.LineUp(1) + if m.cursor < m.viewport.YOffset() { + m.viewport.ScrollUp(1) } - if m.cursor >= m.viewport.YOffset+m.viewport.Height() { + if m.cursor >= m.viewport.YOffset()+m.viewport.Height() { m.viewport.SetYOffset(len(m.matches) - m.viewport.Height()) } } @@ -455,18 +455,18 @@ func (m *model) CursorDown() { } if m.reverse { //nolint:nestif m.cursor = (m.cursor - 1 + len(m.matches)) % len(m.matches) - if len(m.matches)-m.cursor > m.viewport.Height()+m.viewport.YOffset { - m.viewport.LineDown(1) + if len(m.matches)-m.cursor > m.viewport.Height()+m.viewport.YOffset() { + m.viewport.ScrollDown(1) } - if len(m.matches)-m.cursor <= m.viewport.YOffset { + if len(m.matches)-m.cursor <= m.viewport.YOffset() { m.viewport.GotoTop() } } else { m.cursor = (m.cursor + 1) % len(m.matches) - if m.cursor >= m.viewport.YOffset+m.viewport.Height() { - m.viewport.LineDown(1) + if m.cursor >= m.viewport.YOffset()+m.viewport.Height() { + m.viewport.ScrollDown(1) } - if m.cursor < m.viewport.YOffset { + if m.cursor < m.viewport.YOffset() { m.viewport.GotoTop() } } diff --git a/go.mod b/go.mod index a8e44a4..0e8a6d6 100644 --- a/go.mod +++ b/go.mod @@ -9,7 +9,7 @@ require ( github.com/alecthomas/kong v1.9.0 github.com/alecthomas/mango-kong v0.1.0 github.com/charmbracelet/bubbles/v2 v2.0.0-beta.1 - github.com/charmbracelet/bubbletea/v2 v2.0.0-beta1 + github.com/charmbracelet/bubbletea/v2 v2.0.0-beta.1.0.20250328000255-bf331300c52e github.com/charmbracelet/glamour/v2 v2.0.0-20250327175542-c0a9b8dab672 github.com/charmbracelet/lipgloss/v2 v2.0.0-beta1 github.com/charmbracelet/log/v2 v2.0.0-20250226163916-c379e29ff706 diff --git a/go.sum b/go.sum index eeb74c9..dfb70ee 100644 --- a/go.sum +++ b/go.sum @@ -22,8 +22,8 @@ github.com/aymerick/douceur v0.2.0 h1:Mv+mAeH1Q+n9Fr+oyamOlAkUNPWPlA8PPGR0QAaYuP github.com/aymerick/douceur v0.2.0/go.mod h1:wlT5vV2O3h55X9m7iVYN0TBM0NH/MmbLnd30/FjWUq4= github.com/charmbracelet/bubbles/v2 v2.0.0-beta.1 h1:swACzss0FjnyPz1enfX56GKkLiuKg5FlyVmOLIlU2kE= github.com/charmbracelet/bubbles/v2 v2.0.0-beta.1/go.mod h1:6HamsBKWqEC/FVHuQMHgQL+knPyvHH55HwJDHl/adMw= -github.com/charmbracelet/bubbletea/v2 v2.0.0-beta1 h1:yaxFt97mvofGY7bYZn8U/aSVoamXGE3O4AEvWhshUDI= -github.com/charmbracelet/bubbletea/v2 v2.0.0-beta1/go.mod h1:qbcZLI5z8R49v9xBdU5V5Dh5D2uccx8wSwBqxQyErqc= +github.com/charmbracelet/bubbletea/v2 v2.0.0-beta.1.0.20250328000255-bf331300c52e h1:0kRhGpsFiFVPOx75o8pYUBaCjDrrcGrvtLYh6kKaeRs= +github.com/charmbracelet/bubbletea/v2 v2.0.0-beta.1.0.20250328000255-bf331300c52e/go.mod h1:hYsjyXwOT3RiI2CI4WQYPUg4vg2O1TNTpk8TQTavCPI= github.com/charmbracelet/colorprofile v0.3.0 h1:KtLh9uuu1RCt+Hml4s6Hz+kB1PfV3wi++1h5ia65yKQ= github.com/charmbracelet/colorprofile v0.3.0/go.mod h1:oHJ340RS2nmG1zRGPmhJKJ/jf4FPNNk0P39/wBPA1G0= github.com/charmbracelet/glamour/v2 v2.0.0-20250327175542-c0a9b8dab672 h1:DF8za137pUh5LAXAdXISh0bhS6zU0mHl+cLxyivZjuI= diff --git a/pager/command.go b/pager/command.go index 468606a..9a451a8 100644 --- a/pager/command.go +++ b/pager/command.go @@ -66,6 +66,7 @@ func (o Options) Run() error { m, tea.WithAltScreen(), tea.WithReportFocus(), + tea.WithMouseAllMotion(), tea.WithContext(ctx), ).Run() if err != nil {