mirror of
https://github.com/charmbracelet/glow.git
synced 2026-08-22 16:14:17 +02:00
Integrate high performance viewport, but not without issue
This commit is contained in:
parent
9eac9e2253
commit
b2df0cae8f
2 changed files with 15 additions and 2 deletions
14
ui/pager.go
14
ui/pager.go
|
|
@ -28,6 +28,9 @@ const (
|
|||
)
|
||||
|
||||
var (
|
||||
// Whether or not to use fast scroll-based rendering for the viewport
|
||||
highPerformanceRendering = true
|
||||
|
||||
pagerHelpHeight = strings.Count(pagerHelpView(0), "\n")
|
||||
|
||||
noteHeading = te.String(noteHeadingText).
|
||||
|
|
@ -101,10 +104,15 @@ func newPagerModel(glamourStyle string) pagerModel {
|
|||
ti.CharLimit = noteCharacterLimit
|
||||
ti.Focus()
|
||||
|
||||
vp := viewport.Model{}
|
||||
vp.YPosition = 0
|
||||
vp.HighPerformanceRendering = highPerformanceRendering
|
||||
|
||||
return pagerModel{
|
||||
state: pagerStateBrowse,
|
||||
glamourStyle: glamourStyle,
|
||||
textInput: ti,
|
||||
viewport: vp,
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -113,6 +121,8 @@ func (m *pagerModel) setSize(w, h int) {
|
|||
m.height = h
|
||||
m.viewport.Width = w
|
||||
m.viewport.Height = h - statusBarHeight
|
||||
m.viewport.YPosition = 0
|
||||
m.viewport.Height = h - statusBarHeight
|
||||
m.textInput.Width = w - len(noteHeadingText) - len(notePromptText) - 1
|
||||
|
||||
if m.showHelp {
|
||||
|
|
@ -135,7 +145,6 @@ func (m *pagerModel) unload() {
|
|||
}
|
||||
m.state = pagerStateBrowse
|
||||
m.viewport.SetContent("")
|
||||
m.viewport.Y = 0
|
||||
m.textInput.Reset()
|
||||
}
|
||||
|
||||
|
|
@ -190,13 +199,14 @@ func pagerUpdate(msg tea.Msg, m pagerModel) (pagerModel, tea.Cmd) {
|
|||
return m, textinput.Blink(m.textInput)
|
||||
case "?":
|
||||
m.toggleHeight()
|
||||
cmds = append(cmds, viewport.Sync(m.viewport))
|
||||
}
|
||||
}
|
||||
|
||||
// Glow has rendered the content
|
||||
case contentRenderedMsg:
|
||||
m.setContent(string(msg))
|
||||
return m, nil
|
||||
cmds = append(cmds, viewport.Sync(m.viewport))
|
||||
|
||||
// We've reveived terminal dimensions, either for the first time or
|
||||
// after a resize
|
||||
|
|
|
|||
3
ui/ui.go
3
ui/ui.go
|
|
@ -149,6 +149,9 @@ func update(msg tea.Msg, mdl tea.Model) (tea.Model, tea.Cmd) {
|
|||
case stateShowDocument:
|
||||
if m.pager.state == pagerStateBrowse {
|
||||
m.unloadDocument() // exits pager
|
||||
if m.pager.viewport.HighPerformanceRendering {
|
||||
cmd = tea.ClearScrollArea
|
||||
}
|
||||
} else {
|
||||
m.pager, cmd = pagerUpdate(msg, m.pager)
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue