mirror of
https://github.com/neovim/neovim.git
synced 2025-11-23 10:36:29 +00:00
window/ui: reorganize size variables, fix terminal window size with multigrid.
wp->w_height_inner now contains the "inner" size, regardless if the window has been drawn yet or not. It should be used instead of wp->w_grid.Rows, for stuff that is not directly related to accessing the allocated grid memory, such like cursor movement and terminal size
This commit is contained in:
@@ -1022,12 +1022,12 @@ int win_lbr_chartabsize(win_T *wp, char_u *line, char_u *s, colnr_T col, int *he
|
||||
&& vim_isbreak(c)
|
||||
&& !vim_isbreak((int)s[1])
|
||||
&& wp->w_p_wrap
|
||||
&& (wp->w_grid.Columns != 0)) {
|
||||
&& (wp->w_width_inner != 0)) {
|
||||
// Count all characters from first non-blank after a blank up to next
|
||||
// non-blank after a blank.
|
||||
numberextra = win_col_off(wp);
|
||||
col2 = col;
|
||||
colmax = (colnr_T)(wp->w_grid.Columns - numberextra - col_adj);
|
||||
colmax = (colnr_T)(wp->w_width_inner - numberextra - col_adj);
|
||||
|
||||
if (col >= colmax) {
|
||||
colmax += col_adj;
|
||||
@@ -1076,9 +1076,9 @@ int win_lbr_chartabsize(win_T *wp, char_u *line, char_u *s, colnr_T col, int *he
|
||||
numberextra = numberwidth;
|
||||
col += numberextra + mb_added;
|
||||
|
||||
if (col >= (colnr_T)wp->w_grid.Columns) {
|
||||
col -= wp->w_grid.Columns;
|
||||
numberextra = wp->w_grid.Columns - (numberextra - win_col_off2(wp));
|
||||
if (col >= (colnr_T)wp->w_width_inner) {
|
||||
col -= wp->w_width_inner;
|
||||
numberextra = wp->w_width_inner - (numberextra - win_col_off2(wp));
|
||||
if (col >= numberextra && numberextra > 0) {
|
||||
col %= numberextra;
|
||||
}
|
||||
@@ -1097,17 +1097,17 @@ int win_lbr_chartabsize(win_T *wp, char_u *line, char_u *s, colnr_T col, int *he
|
||||
numberwidth -= win_col_off2(wp);
|
||||
}
|
||||
|
||||
if (col == 0 || (col + size + sbrlen > (colnr_T)wp->w_grid.Columns)) {
|
||||
if (col == 0 || (col + size + sbrlen > (colnr_T)wp->w_width_inner)) {
|
||||
added = 0;
|
||||
|
||||
if (*p_sbr != NUL) {
|
||||
if (size + sbrlen + numberwidth > (colnr_T)wp->w_grid.Columns) {
|
||||
if (size + sbrlen + numberwidth > (colnr_T)wp->w_width_inner) {
|
||||
// Calculate effective window width.
|
||||
int width = (colnr_T)wp->w_grid.Columns - sbrlen - numberwidth;
|
||||
int prev_width = col ? ((colnr_T)wp->w_grid.Columns - (sbrlen + col))
|
||||
int width = (colnr_T)wp->w_width_inner - sbrlen - numberwidth;
|
||||
int prev_width = col ? ((colnr_T)wp->w_width_inner - (sbrlen + col))
|
||||
: 0;
|
||||
if (width == 0) {
|
||||
width = (colnr_T)wp->w_grid.Columns;
|
||||
width = (colnr_T)wp->w_width_inner;
|
||||
}
|
||||
added += ((size - prev_width) / width) * vim_strsize(p_sbr);
|
||||
if ((size - prev_width) % width) {
|
||||
@@ -1176,11 +1176,11 @@ bool in_win_border(win_T *wp, colnr_T vcol)
|
||||
int width1; // width of first line (after line number)
|
||||
int width2; // width of further lines
|
||||
|
||||
if (wp->w_grid.Columns == 0) {
|
||||
if (wp->w_width_inner == 0) {
|
||||
// there is no border
|
||||
return false;
|
||||
}
|
||||
width1 = wp->w_grid.Columns - win_col_off(wp);
|
||||
width1 = wp->w_width_inner - win_col_off(wp);
|
||||
|
||||
if ((int)vcol < width1 - 1) {
|
||||
return false;
|
||||
|
||||
Reference in New Issue
Block a user