summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJunegunn Choi <junegunn.c@gmail.com>2020-10-06 19:37:33 +0900
committerJunegunn Choi <junegunn.c@gmail.com>2020-10-06 19:37:33 +0900
commit1d8bd11b67e74471c9c75a4dd2ccb041071ae1f8 (patch)
tree5bb54f0a8325acb9698649ecfa905bcb70b9cbda
parentbafb99d52024488372ecd21b029286019e71d170 (diff)
Fix preview window size calculation
-rw-r--r--src/options.go8
-rw-r--r--src/options_test.go17
-rw-r--r--src/terminal.go18
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)