Problem: Using negative offset for popup_create() does not work.
Solution: Use -1 instead of zero. (closes #5111)
else // "col"
n = screen_screencol() + 1 + n;
- if (n < 1)
- n = 1;
+ // Zero means "not set", use -1 instead.
+ if (n == 0)
+ n = -1;
return n;
}
{
drag_start_row = mouse_row;
drag_start_col = mouse_col;
- if (wp->w_wantline == 0)
+ if (wp->w_wantline <= 0)
drag_start_wantline = wp->w_winrow + 1;
else
drag_start_wantline = wp->w_wantline;
int org_leftoff = wp->w_popup_leftoff;
int minwidth;
int wantline = wp->w_wantline; // adjusted for textprop
+ int use_wantline = wantline != 0;
int wantcol = wp->w_wantcol; // adjusted for textprop
+ int use_wantcol = wantcol != 0;
wp->w_winrow = 0;
wp->w_wincol = 0;
// If no line was specified default to vertical centering.
if (wantline == 0)
center_vert = TRUE;
+ else if (wantline < 0)
+ // If "wantline" is negative it actually means zero.
+ wantline = 0;
+ if (wantcol < 0)
+ wantcol = 0;
if (wp->w_popup_prop_type > 0 && win_valid(wp->w_popup_prop_win))
{
}
else
{
- if (wantline > 0 && (wp->w_popup_pos == POPPOS_TOPLEFT
+ if (use_wantline && (wp->w_popup_pos == POPPOS_TOPLEFT
|| wp->w_popup_pos == POPPOS_TOPRIGHT))
{
wp->w_winrow = wantline - 1;
wp->w_winrow = Rows - 1;
}
- if (wantcol == 0)
+ if (!use_wantcol)
center_hor = TRUE;
else if (wantcol > 0 && (wp->w_popup_pos == POPPOS_TOPLEFT
|| wp->w_popup_pos == POPPOS_BOTLEFT))
// bottom aligned: may move down
wp->w_winrow = wantline - (wp->w_height + extra_height);
else
- // not enough space, make top aligned
- wp->w_winrow = wantline + 1;
+ // Not enough space, make top aligned.
+ wp->w_winrow = (wantline < 0 ? 0 : wantline) + 1;
}
if (wp->w_winrow >= Rows)
wp->w_winrow = Rows - 1;
-|-+0&#ffffff0@59| @14
-|-@1|#|-@20|@|-@34| @14
-|-@1|╔+0#0000001#ffd7ff255|═@7|╗|-+0#0000000#ffffff0@2|╔+0#0000001#ffd7ff255|═@7|╗|-+0#0000000#ffffff0@2|╔+0#0000001#ffd7ff255|═@7|╗|-+0#0000000#ffffff0@2|╔+0#0000001#ffd7ff255|═@7|╗|-+0#0000000#ffffff0@8| @14
-|-@1|║+0#0000001#ffd7ff255| @7|║|-+0#0000000#ffffff0@2|║+0#0000001#ffd7ff255| @7|║|-+0#0000000#ffffff0@2|║+0#0000001#ffd7ff255| @7|║|-+0#0000000#ffffff0@2|║+0#0000001#ffd7ff255| @7|║|-+0#0000000#ffffff0@8| @14
-|-@1|║+0#0000001#ffd7ff255| |f|i|r|s|t| @1|║|-+0#0000000#ffffff0@2|║+0#0000001#ffd7ff255| |F|i|r|s|t| @1|║|-+0#0000000#ffffff0@2|║+0#0000001#ffd7ff255| |f|i|R|S|t| @1|║|-+0#0000000#ffffff0@2|║+0#0000001#ffd7ff255| |F|I|r|s|T| @1|║|-+0#0000000#ffffff0@8| @14
-|-@1|║+0#0000001#ffd7ff255| |s|e|c|o|n|d| |║|-+0#0000000#ffffff0@2|║+0#0000001#ffd7ff255| |S|e|c|o|n|D| |║|-+0#0000000#ffffff0@2|║+0#0000001#ffd7ff255| |s|e|C|O|n|d| |║|-+0#0000000#ffffff0@2|║+0#0000001#ffd7ff255| |S|E|c|o|N|D| |║|-+0#0000000#ffffff0@8| @14
-|-@1|║+0#0000001#ffd7ff255| @7|║|-+0#0000000#ffffff0@2|║+0#0000001#ffd7ff255| @7|║|-+0#0000000#ffffff0@2|║+0#0000001#ffd7ff255| @7|║|-+0#0000000#ffffff0@2|║+0#0000001#ffd7ff255| @7|║|-+0#0000000#ffffff0@8| @14
-|-@1|╚+0#0000001#ffd7ff255|═@7|╝|-+0#0000000#ffffff0@2|╚+0#0000001#ffd7ff255|═@7|╝|-+0#0000000#ffffff0@2|╚+0#0000001#ffd7ff255|═@7|╝|-+0#0000000#ffffff0@2|╚+0#0000001#ffd7ff255|═@7|╝|-+0#0000000#ffffff0@8| @14
-|-@27|%|-@20>&|-@8| @14
+|-+0&#ffffff0@49>*|-@8| @14
+|-@1|#|-@19|@|-@25|╔+0#0000001#ffd7ff255|═@4|╗|-+0#0000000#ffffff0@2| @14
+|-@1|╔+0#0000001#ffd7ff255|═@7|╗|-+0#0000000#ffffff0@1|╔+0#0000001#ffd7ff255|═@7|╗|-+0#0000000#ffffff0@1|╔+0#0000001#ffd7ff255|═@7|╗|-+0#0000000#ffffff0@1|╔+0#0000001#ffd7ff255|═@7|╗|-+0#0000000#ffffff0@1|║+0#0000001#ffd7ff255| @4|║|-+0#0000000#ffffff0@2| @14
+|-@1|║+0#0000001#ffd7ff255| @7|║|-+0#0000000#ffffff0@1|║+0#0000001#ffd7ff255| @7|║|-+0#0000000#ffffff0@1|║+0#0000001#ffd7ff255| @7|║|-+0#0000000#ffffff0@1|║+0#0000001#ffd7ff255| @7|║|-+0#0000000#ffffff0@1|║+0#0000001#ffd7ff255| |o|n|e| |║|-+0#0000000#ffffff0@2| @14
+|-@1|║+0#0000001#ffd7ff255| |f|i|r|s|t| @1|║|-+0#0000000#ffffff0@1|║+0#0000001#ffd7ff255| |F|i|r|s|t| @1|║|-+0#0000000#ffffff0@1|║+0#0000001#ffd7ff255| |f|i|R|S|t| @1|║|-+0#0000000#ffffff0@1|║+0#0000001#ffd7ff255| |F|I|r|s|T| @1|║|-+0#0000000#ffffff0@1|║+0#0000001#ffd7ff255| |t|w|o| |║|-+0#0000000#ffffff0@2| @14
+|-@1|║+0#0000001#ffd7ff255| |s|e|c|o|n|d| |║|-+0#0000000#ffffff0@1|║+0#0000001#ffd7ff255| |S|e|c|o|n|D| |║|-+0#0000000#ffffff0@1|║+0#0000001#ffd7ff255| |s|e|C|O|n|d| |║|-+0#0000000#ffffff0@1|║+0#0000001#ffd7ff255| |S|E|c|o|N|D| |║|-+0#0000000#ffffff0@1|║+0#0000001#ffd7ff255| @4|║|-+0#0000000#ffffff0@2| @14
+|-@1|║+0#0000001#ffd7ff255| @7|║|-+0#0000000#ffffff0@1|║+0#0000001#ffd7ff255| @7|║|-+0#0000000#ffffff0@1|║+0#0000001#ffd7ff255| @7|║|-+0#0000000#ffffff0@1|║+0#0000001#ffd7ff255| @7|║|-+0#0000000#ffffff0@1|╚+0#0000001#ffd7ff255|═@4|╝|-+0#0000000#ffffff0@2| @14
+|-@1|╚+0#0000001#ffd7ff255|═@7|╝|-+0#0000000#ffffff0@1|╚+0#0000001#ffd7ff255|═@7|╝|-+0#0000000#ffffff0@1|╚+0#0000001#ffd7ff255|═@7|╝|-+0#0000000#ffffff0@1|╚+0#0000001#ffd7ff255|═@7|╝|-+0#0000000#ffffff0@11| @14
+|-@25|%|-@19|&|-@11| @14
|-@59| @14
|-@59| @14
-@57|9|,|5|1| @9|T|o|p|
+@57|1|,|5|1| @9|T|o|p|
\ border: [],
\ padding: [],
\ })
- normal 25|r@
+ normal 24|r@
let winid1 = popup_create(['First', 'SeconD'], #{
\ line: 'cursor+1',
\ col: 'cursor',
\ border: [],
\ padding: [],
\ })
- normal 9G29|r%
+ normal 9G27|r%
let winid1 = popup_create(['fiRSt', 'seCOnd'], #{
\ line: 'cursor-1',
\ col: 'cursor',
\ border: [],
\ padding: [],
\ })
- normal 51|r&
+ normal 48|r&
let winid1 = popup_create(['FIrsT', 'SEcoND'], #{
\ line: 'cursor-1',
\ col: 'cursor',
\ border: [],
\ padding: [],
\ })
+ normal 1G51|r*
+ let winid1 = popup_create(['one', 'two'], #{
+ \ line: 'cursor-1',
+ \ col: 'cursor',
+ \ pos: 'botleft',
+ \ border: [],
+ \ padding: [],
+ \ })
END
call writefile(lines, 'XtestPopupCorners')
let buf = RunVimInTerminal('-S XtestPopupCorners', #{rows: 12})
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 2210,
/**/
2209,
/**/