mirror of
https://github.com/junegunn/fzf.git
synced 2025-11-15 06:43:47 -05:00
Do not reserve a single column at the end when scrollbar is hidden
Close #4410 Example: fzf --pointer '' --marker '' --no-scrollbar --wrap --wrap-sign ''
This commit is contained in:
@@ -1479,11 +1479,18 @@ func getScrollbar(perLine int, total int, height int, offset int) (int, int) {
|
|||||||
return barLength, barStart
|
return barLength, barStart
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (t *Terminal) barCol() int {
|
||||||
|
if len(t.scrollbar) == 0 && !t.listBorderShape.HasRight() && !t.borderShape.HasRight() && !t.hasPreviewWindowOnRight() {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
func (t *Terminal) wrapCols() int {
|
func (t *Terminal) wrapCols() int {
|
||||||
if !t.wrap {
|
if !t.wrap {
|
||||||
return 0 // No wrap
|
return 0 // No wrap
|
||||||
}
|
}
|
||||||
return util.Max(t.window.Width()-(t.pointerLen+t.markerLen+1), 1)
|
return util.Max(t.window.Width()-(t.pointerLen+t.markerLen+t.barCol()), 1)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *Terminal) clearNumLinesCache() {
|
func (t *Terminal) clearNumLinesCache() {
|
||||||
@@ -3070,9 +3077,11 @@ func (t *Terminal) printList() {
|
|||||||
func (t *Terminal) printBar(lineNum int, forceRedraw bool, barRange [2]int) bool {
|
func (t *Terminal) printBar(lineNum int, forceRedraw bool, barRange [2]int) bool {
|
||||||
hasBar := lineNum >= barRange[0] && lineNum < barRange[1]
|
hasBar := lineNum >= barRange[0] && lineNum < barRange[1]
|
||||||
if (hasBar != t.prevLines[lineNum].hasBar || forceRedraw) && t.window.Width() > 0 {
|
if (hasBar != t.prevLines[lineNum].hasBar || forceRedraw) && t.window.Width() > 0 {
|
||||||
t.move(lineNum, t.window.Width()-1, true)
|
if len(t.scrollbar) > 0 {
|
||||||
if len(t.scrollbar) > 0 && hasBar {
|
t.move(lineNum, t.window.Width()-1, true)
|
||||||
t.window.CPrint(tui.ColScrollbar, t.scrollbar)
|
if hasBar {
|
||||||
|
t.window.CPrint(tui.ColScrollbar, t.scrollbar)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return hasBar
|
return hasBar
|
||||||
@@ -3128,7 +3137,7 @@ func (t *Terminal) printItem(result Result, line int, maxLine int, index int, cu
|
|||||||
return line + numLines - 1
|
return line + numLines - 1
|
||||||
}
|
}
|
||||||
|
|
||||||
maxWidth := t.window.Width() - (t.pointerLen + t.markerLen + 1)
|
maxWidth := t.window.Width() - (t.pointerLen + t.markerLen + t.barCol())
|
||||||
postTask := func(lineNum int, width int, wrapped bool, forceRedraw bool) {
|
postTask := func(lineNum int, width int, wrapped bool, forceRedraw bool) {
|
||||||
width += extraWidth
|
width += extraWidth
|
||||||
if (current || selected || alt) && t.highlightLine {
|
if (current || selected || alt) && t.highlightLine {
|
||||||
@@ -3447,7 +3456,7 @@ func (t *Terminal) printHighlighted(result Result, colBase tui.ColorPair, colMat
|
|||||||
indentSize = preTask(marker)
|
indentSize = preTask(marker)
|
||||||
}
|
}
|
||||||
|
|
||||||
maxWidth := t.window.Width() - (indentSize + 1)
|
maxWidth := t.window.Width() - (indentSize + t.barCol())
|
||||||
wasWrapped := false
|
wasWrapped := false
|
||||||
if wrapped {
|
if wrapped {
|
||||||
wrapSign := t.wrapSign
|
wrapSign := t.wrapSign
|
||||||
@@ -4539,6 +4548,10 @@ func (t *Terminal) hasPreviewWindow() bool {
|
|||||||
return t.pwindow != nil
|
return t.pwindow != nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (t *Terminal) hasPreviewWindowOnRight() bool {
|
||||||
|
return t.hasPreviewWindow() && t.activePreviewOpts.position == posRight
|
||||||
|
}
|
||||||
|
|
||||||
func (t *Terminal) currentItem() *Item {
|
func (t *Terminal) currentItem() *Item {
|
||||||
cnt := t.merger.Length()
|
cnt := t.merger.Length()
|
||||||
if t.cy >= 0 && cnt > 0 && cnt > t.cy {
|
if t.cy >= 0 && cnt > 0 && cnt > t.cy {
|
||||||
|
|||||||
Reference in New Issue
Block a user