mirror of
https://github.com/Llewellynvdm/fzf.git
synced 2024-06-12 20:22:21 +00:00
Fix rendering of double-column borders
This commit is contained in:
parent
3109b865d2
commit
8b299a29c7
|
@ -1064,6 +1064,7 @@ func (t *Terminal) resizeWindows(forcePreview bool) {
|
||||||
// Reset preview version so that full redraw occurs
|
// Reset preview version so that full redraw occurs
|
||||||
t.previewed.version = 0
|
t.previewed.version = 0
|
||||||
|
|
||||||
|
bw := t.borderWidth
|
||||||
switch t.borderShape {
|
switch t.borderShape {
|
||||||
case tui.BorderHorizontal:
|
case tui.BorderHorizontal:
|
||||||
t.border = t.tui.NewWindow(
|
t.border = t.tui.NewWindow(
|
||||||
|
@ -1071,7 +1072,7 @@ func (t *Terminal) resizeWindows(forcePreview bool) {
|
||||||
false, tui.MakeBorderStyle(tui.BorderHorizontal, t.unicode))
|
false, tui.MakeBorderStyle(tui.BorderHorizontal, t.unicode))
|
||||||
case tui.BorderVertical:
|
case tui.BorderVertical:
|
||||||
t.border = t.tui.NewWindow(
|
t.border = t.tui.NewWindow(
|
||||||
marginInt[0], marginInt[3]-2, width+4, height,
|
marginInt[0], marginInt[3]-(1+bw), width+(1+bw)*2, height,
|
||||||
false, tui.MakeBorderStyle(tui.BorderVertical, t.unicode))
|
false, tui.MakeBorderStyle(tui.BorderVertical, t.unicode))
|
||||||
case tui.BorderTop:
|
case tui.BorderTop:
|
||||||
t.border = t.tui.NewWindow(
|
t.border = t.tui.NewWindow(
|
||||||
|
@ -1083,15 +1084,15 @@ func (t *Terminal) resizeWindows(forcePreview bool) {
|
||||||
false, tui.MakeBorderStyle(tui.BorderBottom, t.unicode))
|
false, tui.MakeBorderStyle(tui.BorderBottom, t.unicode))
|
||||||
case tui.BorderLeft:
|
case tui.BorderLeft:
|
||||||
t.border = t.tui.NewWindow(
|
t.border = t.tui.NewWindow(
|
||||||
marginInt[0], marginInt[3]-2, width+2, height,
|
marginInt[0], marginInt[3]-(1+bw), width+(1+bw), height,
|
||||||
false, tui.MakeBorderStyle(tui.BorderLeft, t.unicode))
|
false, tui.MakeBorderStyle(tui.BorderLeft, t.unicode))
|
||||||
case tui.BorderRight:
|
case tui.BorderRight:
|
||||||
t.border = t.tui.NewWindow(
|
t.border = t.tui.NewWindow(
|
||||||
marginInt[0], marginInt[3], width+2, height,
|
marginInt[0], marginInt[3], width+(1+bw), height,
|
||||||
false, tui.MakeBorderStyle(tui.BorderRight, t.unicode))
|
false, tui.MakeBorderStyle(tui.BorderRight, t.unicode))
|
||||||
case tui.BorderRounded, tui.BorderSharp, tui.BorderBold, tui.BorderDouble:
|
case tui.BorderRounded, tui.BorderSharp, tui.BorderBold, tui.BorderDouble:
|
||||||
t.border = t.tui.NewWindow(
|
t.border = t.tui.NewWindow(
|
||||||
marginInt[0]-1, marginInt[3]-2, width+4, height+2,
|
marginInt[0]-1, marginInt[3]-(1+bw), width+(1+bw)*2, height+2,
|
||||||
false, tui.MakeBorderStyle(t.borderShape, t.unicode))
|
false, tui.MakeBorderStyle(t.borderShape, t.unicode))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1112,7 +1113,6 @@ func (t *Terminal) resizeWindows(forcePreview bool) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
hasThreshold := previewOpts.threshold > 0 && previewOpts.alternative != nil
|
hasThreshold := previewOpts.threshold > 0 && previewOpts.alternative != nil
|
||||||
bw := t.borderWidth
|
|
||||||
createPreviewWindow := func(y int, x int, w int, h int) {
|
createPreviewWindow := func(y int, x int, w int, h int) {
|
||||||
pwidth := w
|
pwidth := w
|
||||||
pheight := h
|
pheight := h
|
||||||
|
|
|
@ -695,13 +695,26 @@ func (w *TcellWindow) drawBorder() {
|
||||||
hw := runewidth.RuneWidth(w.borderStyle.horizontal)
|
hw := runewidth.RuneWidth(w.borderStyle.horizontal)
|
||||||
switch shape {
|
switch shape {
|
||||||
case BorderRounded, BorderSharp, BorderBold, BorderDouble, BorderHorizontal, BorderTop:
|
case BorderRounded, BorderSharp, BorderBold, BorderDouble, BorderHorizontal, BorderTop:
|
||||||
for x := left; x <= right-hw; x += hw {
|
max := right - 2*hw
|
||||||
|
if shape == BorderHorizontal || shape == BorderTop {
|
||||||
|
max = right - hw
|
||||||
|
}
|
||||||
|
// tcell has an issue displaying two overlapping wide runes
|
||||||
|
// e.g. SetContent( HH )
|
||||||
|
// SetContent( TR )
|
||||||
|
// ==================
|
||||||
|
// ( HH ) => TR is ignored
|
||||||
|
for x := left; x <= max; x += hw {
|
||||||
_screen.SetContent(x, top, w.borderStyle.horizontal, nil, style)
|
_screen.SetContent(x, top, w.borderStyle.horizontal, nil, style)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
switch shape {
|
switch shape {
|
||||||
case BorderRounded, BorderSharp, BorderBold, BorderDouble, BorderHorizontal, BorderBottom:
|
case BorderRounded, BorderSharp, BorderBold, BorderDouble, BorderHorizontal, BorderBottom:
|
||||||
for x := left; x <= right-hw; x += hw {
|
max := right - 2*hw
|
||||||
|
if shape == BorderHorizontal || shape == BorderBottom {
|
||||||
|
max = right - hw
|
||||||
|
}
|
||||||
|
for x := left; x <= max; x += hw {
|
||||||
_screen.SetContent(x, bot-1, w.borderStyle.horizontal, nil, style)
|
_screen.SetContent(x, bot-1, w.borderStyle.horizontal, nil, style)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -713,8 +726,9 @@ func (w *TcellWindow) drawBorder() {
|
||||||
}
|
}
|
||||||
switch shape {
|
switch shape {
|
||||||
case BorderRounded, BorderSharp, BorderBold, BorderDouble, BorderVertical, BorderRight:
|
case BorderRounded, BorderSharp, BorderBold, BorderDouble, BorderVertical, BorderRight:
|
||||||
|
vw := runewidth.RuneWidth(w.borderStyle.vertical)
|
||||||
for y := top; y < bot; y++ {
|
for y := top; y < bot; y++ {
|
||||||
_screen.SetContent(right-hw, y, w.borderStyle.vertical, nil, style)
|
_screen.SetContent(right-vw, y, w.borderStyle.vertical, nil, style)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
switch shape {
|
switch shape {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user