diff options
author | Junegunn Choi <junegunn.c@gmail.com> | 2020-10-06 19:37:33 +0900 |
---|---|---|
committer | Junegunn Choi <junegunn.c@gmail.com> | 2020-10-06 19:37:33 +0900 |
commit | 1d8bd11b67e74471c9c75a4dd2ccb041071ae1f8 (patch) | |
tree | 5bb54f0a8325acb9698649ecfa905bcb70b9cbda | |
parent | bafb99d52024488372ecd21b029286019e71d170 (diff) |
Fix preview window size calculation
-rw-r--r-- | src/options.go | 8 | ||||
-rw-r--r-- | src/options_test.go | 17 | ||||
-rw-r--r-- | src/terminal.go | 18 |
3 files changed, 20 insertions, 23 deletions
diff --git a/src/options.go b/src/options.go index dc253675..35220bae 100644 --- a/src/options.go +++ b/src/options.go @@ -1030,14 +1030,6 @@ func parsePreviewWindow(opts *previewOpts, input string) { } } } - if !opts.size.percent && opts.size.size > 0 { - // Adjust size for border - opts.size.size += 2 - // And padding - if opts.position == posLeft || opts.position == posRight { - opts.size.size += 2 - } - } } func parseMargin(margin string) [4]sizeSpec { diff --git a/src/options_test.go b/src/options_test.go index b312be11..457c6c15 100644 --- a/src/options_test.go +++ b/src/options_test.go @@ -393,17 +393,18 @@ func TestPreviewOpts(t *testing.T) { opts.Preview.wrap == true && opts.Preview.position == posLeft && opts.Preview.size.percent == false && - opts.Preview.size.size == 15+2+2) { + opts.Preview.size.size == 15) { t.Error(opts.Preview) } - opts = optsFor("--preview-window=up:15:wrap:hidden", "--preview-window=down") + opts = optsFor("--preview-window=up:15:wrap:hidden", "--preview-window=down", "--preview-window=cycle") if !(opts.Preview.command == "" && - opts.Preview.hidden == false && - opts.Preview.wrap == false && + opts.Preview.hidden == true && + opts.Preview.wrap == true && + opts.Preview.cycle == true && opts.Preview.position == posDown && - opts.Preview.size.percent == true && - opts.Preview.size.size == 50) { - t.Error(opts.Preview) + opts.Preview.size.percent == false && + opts.Preview.size.size == 15) { + t.Error(opts.Preview.size.size) } opts = optsFor("--preview-window=up:15:wrap:hidden") if !(opts.Preview.command == "" && @@ -411,7 +412,7 @@ func TestPreviewOpts(t *testing.T) { opts.Preview.wrap == true && opts.Preview.position == posUp && opts.Preview.size.percent == false && - opts.Preview.size.size == 15+2) { + opts.Preview.size.size == 15) { t.Error(opts.Preview) } } diff --git a/src/terminal.go b/src/terminal.go index d4947d04..dd1685f0 100644 --- a/src/terminal.go +++ b/src/terminal.go @@ -614,12 +614,12 @@ const ( maxDisplayWidthCalc = 1024 ) -func calculateSize(base int, size sizeSpec, margin int, minSize int) int { - max := base - margin +func calculateSize(base int, size sizeSpec, occupied int, minSize int, pad int) int { + max := base - occupied if size.percent { return util.Constrain(int(float64(base)*0.01*size.size), minSize, max) } - return util.Constrain(int(size.size), minSize, max) + return util.Constrain(int(size.size)+pad, minSize, max) } func (t *Terminal) resizeWindows() { @@ -727,24 +727,28 @@ func (t *Terminal) resizeWindows() { } t.pwindow = t.tui.NewWindow(y, x, pwidth, pheight, true, noBorder) } + verticalPad := 2 + if t.preview.border == tui.BorderNone { + verticalPad = 0 + } switch t.preview.position { case posUp: - pheight := calculateSize(height, t.preview.size, minHeight, 3) + pheight := calculateSize(height, t.preview.size, minHeight, 3, verticalPad) t.window = t.tui.NewWindow( marginInt[0]+pheight, marginInt[3], width, height-pheight, false, noBorder) createPreviewWindow(marginInt[0], marginInt[3], width, pheight) case posDown: - pheight := calculateSize(height, t.preview.size, minHeight, 3) + pheight := calculateSize(height, t.preview.size, minHeight, 3, verticalPad) t.window = t.tui.NewWindow( marginInt[0], marginInt[3], width, height-pheight, false, noBorder) createPreviewWindow(marginInt[0]+height-pheight, marginInt[3], width, pheight) case posLeft: - pwidth := calculateSize(width, t.preview.size, minWidth, 5) + pwidth := calculateSize(width, t.preview.size, minWidth, 5, 4) t.window = t.tui.NewWindow( marginInt[0], marginInt[3]+pwidth, width-pwidth, height, false, noBorder) createPreviewWindow(marginInt[0], marginInt[3], pwidth, height) case posRight: - pwidth := calculateSize(width, t.preview.size, minWidth, 5) + pwidth := calculateSize(width, t.preview.size, minWidth, 5, 4) t.window = t.tui.NewWindow( marginInt[0], marginInt[3], width-pwidth, height, false, noBorder) createPreviewWindow(marginInt[0], marginInt[3]+width-pwidth, pwidth, height) |