Mercurial > vim
diff src/popupwin.c @ 16898:16fd1bb2e675 v8.1.1450
patch 8.1.1450: popup window positioning wrong when using padding or borders
commit https://github.com/vim/vim/commit/399d898ac1e6e587088b5bdd6e36eca4998bc1eb
Author: Bram Moolenaar <Bram@vim.org>
Date: Sun Jun 2 15:34:29 2019 +0200
patch 8.1.1450: popup window positioning wrong when using padding or borders
Problem: Popup window positioning wrong when using padding or borders.
Solution: Fix computing the position.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sun, 02 Jun 2019 15:45:05 +0200 |
parents | 52fc577a087d |
children | 23645f9a5ce2 |
line wrap: on
line diff
--- a/src/popupwin.c +++ b/src/popupwin.c @@ -382,6 +382,12 @@ popup_adjust_position(win_T *wp) int center_vert = FALSE; int center_hor = FALSE; int allow_adjust_left = !wp->w_popup_fixed; + int top_extra = wp->w_popup_border[0] + wp->w_popup_padding[0]; + int right_extra = wp->w_popup_border[1] + wp->w_popup_padding[1]; + int bot_extra = wp->w_popup_border[2] + wp->w_popup_padding[2]; + int left_extra = wp->w_popup_border[3] + wp->w_popup_padding[3]; + int extra_height = top_extra + bot_extra; + int extra_width = left_extra + right_extra; wp->w_winrow = 0; wp->w_wincol = 0; @@ -474,8 +480,8 @@ popup_adjust_position(win_T *wp) { // Right aligned: move to the right if needed. // No truncation, because that would change the height. - if (wp->w_width < wp->w_wantcol) - wp->w_wincol = wp->w_wantcol - wp->w_width; + if (wp->w_width + extra_width < wp->w_wantcol) + wp->w_wincol = wp->w_wantcol - (wp->w_width + extra_width); } if (wp->w_height <= 1) @@ -492,9 +498,9 @@ popup_adjust_position(win_T *wp) else if (wp->w_popup_pos == POPPOS_BOTRIGHT || wp->w_popup_pos == POPPOS_BOTLEFT) { - if (wp->w_height <= wp->w_wantline) + if ((wp->w_height + extra_height) <= wp->w_wantline) // bottom aligned: may move down - wp->w_winrow = wp->w_wantline - wp->w_height; + wp->w_winrow = wp->w_wantline - (wp->w_height + extra_height); else // not enough space, make top aligned wp->w_winrow = wp->w_wantline + 1;