mirror of
https://github.com/Llewellynvdm/fzf.git
synced 2024-12-23 11:29:01 +00:00
Reduce flicking when changing the size of the preview window with --border
(sleep 1; find .) | fzf --bind 'space:change-preview-window(60%|70%|80%|90%|border-left|border-right|border-vertical|border-top|border-horizontal|border-bottom|border-sharp|border-double|border-block|hidden|left|up|down|right|up|down|)' \ --preview 'cat {}' --color bg:red,preview-bg:blue \ --border --margin 3
This commit is contained in:
parent
c37cd11ca5
commit
2bd41f1330
@ -1288,7 +1288,8 @@ func (t *Terminal) resizeWindows(forcePreview bool) {
|
|||||||
t.pborder.Close()
|
t.pborder.Close()
|
||||||
t.pborder = nil
|
t.pborder = nil
|
||||||
}
|
}
|
||||||
if t.pwindow != nil {
|
hadPreviewWindow := t.hasPreviewWindow()
|
||||||
|
if hadPreviewWindow {
|
||||||
t.pwindow.Close()
|
t.pwindow.Close()
|
||||||
t.pwindow = nil
|
t.pwindow = nil
|
||||||
}
|
}
|
||||||
@ -1387,6 +1388,9 @@ func (t *Terminal) resizeWindows(forcePreview bool) {
|
|||||||
pwidth = util.Max(0, pwidth)
|
pwidth = util.Max(0, pwidth)
|
||||||
pheight = util.Max(0, pheight)
|
pheight = util.Max(0, pheight)
|
||||||
t.pwindow = t.tui.NewWindow(y, x, pwidth, pheight, true, noBorder)
|
t.pwindow = t.tui.NewWindow(y, x, pwidth, pheight, true, noBorder)
|
||||||
|
if !hadPreviewWindow {
|
||||||
|
t.pwindow.Erase()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
verticalPad := 2
|
verticalPad := 2
|
||||||
minPreviewHeight := 3
|
minPreviewHeight := 3
|
||||||
@ -1649,7 +1653,7 @@ func (t *Terminal) printInfo() {
|
|||||||
case infoDefault:
|
case infoDefault:
|
||||||
t.move(line+1, 0, t.separatorLen == 0)
|
t.move(line+1, 0, t.separatorLen == 0)
|
||||||
printSpinner()
|
printSpinner()
|
||||||
t.move(line+1, 2, false)
|
t.window.Print(" ") // Margin
|
||||||
pos = 2
|
pos = 2
|
||||||
case infoRight:
|
case infoRight:
|
||||||
t.move(line+1, 0, false)
|
t.move(line+1, 0, false)
|
||||||
@ -1714,6 +1718,7 @@ func (t *Terminal) printInfo() {
|
|||||||
printSeparator(fillLength, true)
|
printSeparator(fillLength, true)
|
||||||
}
|
}
|
||||||
t.window.CPrint(tui.ColInfo, output)
|
t.window.CPrint(tui.ColInfo, output)
|
||||||
|
t.window.Print(" ") // Margin
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2922,6 +2927,7 @@ func (t *Terminal) Loop() {
|
|||||||
t.initFunc()
|
t.initFunc()
|
||||||
t.termSize = t.tui.Size()
|
t.termSize = t.tui.Size()
|
||||||
t.resizeWindows(false)
|
t.resizeWindows(false)
|
||||||
|
t.window.Erase()
|
||||||
t.printPrompt()
|
t.printPrompt()
|
||||||
t.printInfo()
|
t.printInfo()
|
||||||
t.printHeader()
|
t.printHeader()
|
||||||
|
@ -821,44 +821,32 @@ func (w *LightWindow) drawBorderHorizontal(top, bottom bool) {
|
|||||||
color = ColPreviewBorder
|
color = ColPreviewBorder
|
||||||
}
|
}
|
||||||
hw := runeWidth(w.border.top)
|
hw := runeWidth(w.border.top)
|
||||||
pad := repeat(' ', w.width/hw)
|
|
||||||
|
|
||||||
w.Move(0, 0)
|
|
||||||
if top {
|
if top {
|
||||||
|
w.Move(0, 0)
|
||||||
w.CPrint(color, repeat(w.border.top, w.width/hw))
|
w.CPrint(color, repeat(w.border.top, w.width/hw))
|
||||||
} else {
|
|
||||||
w.CPrint(color, pad)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for y := 1; y < w.height-1; y++ {
|
|
||||||
w.Move(y, 0)
|
|
||||||
w.CPrint(color, pad)
|
|
||||||
}
|
|
||||||
|
|
||||||
w.Move(w.height-1, 0)
|
|
||||||
if bottom {
|
if bottom {
|
||||||
|
w.Move(w.height-1, 0)
|
||||||
w.CPrint(color, repeat(w.border.bottom, w.width/hw))
|
w.CPrint(color, repeat(w.border.bottom, w.width/hw))
|
||||||
} else {
|
|
||||||
w.CPrint(color, pad)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (w *LightWindow) drawBorderVertical(left, right bool) {
|
func (w *LightWindow) drawBorderVertical(left, right bool) {
|
||||||
width := w.width - 2
|
vw := runeWidth(w.border.left)
|
||||||
if !left || !right {
|
|
||||||
width++
|
|
||||||
}
|
|
||||||
color := ColBorder
|
color := ColBorder
|
||||||
if w.preview {
|
if w.preview {
|
||||||
color = ColPreviewBorder
|
color = ColPreviewBorder
|
||||||
}
|
}
|
||||||
for y := 0; y < w.height; y++ {
|
for y := 0; y < w.height; y++ {
|
||||||
w.Move(y, 0)
|
|
||||||
if left {
|
if left {
|
||||||
|
w.Move(y, 0)
|
||||||
w.CPrint(color, string(w.border.left))
|
w.CPrint(color, string(w.border.left))
|
||||||
|
w.CPrint(color, " ") // Margin
|
||||||
}
|
}
|
||||||
w.CPrint(color, repeat(' ', width))
|
|
||||||
if right {
|
if right {
|
||||||
|
w.Move(y, w.width-vw-1)
|
||||||
|
w.CPrint(color, " ") // Margin
|
||||||
w.CPrint(color, string(w.border.right))
|
w.CPrint(color, string(w.border.right))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -880,7 +868,10 @@ func (w *LightWindow) drawBorderAround(onlyHorizontal bool) {
|
|||||||
for y := 1; y < w.height-1; y++ {
|
for y := 1; y < w.height-1; y++ {
|
||||||
w.Move(y, 0)
|
w.Move(y, 0)
|
||||||
w.CPrint(color, string(w.border.left))
|
w.CPrint(color, string(w.border.left))
|
||||||
w.CPrint(color, repeat(' ', w.width-vw*2))
|
w.CPrint(color, " ") // Margin
|
||||||
|
|
||||||
|
w.Move(y, w.width-vw-1)
|
||||||
|
w.CPrint(color, " ") // Margin
|
||||||
w.CPrint(color, string(w.border.right))
|
w.CPrint(color, string(w.border.right))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user