col += char_cells;
}
- if (clear_next)
+ if (clear_next && !skip_for_popup(row, col + coloff))
{
// Clear the second half of a double-wide character of which the left
// half was overwritten with a single-wide character.
}
}
- if (enc_dbcs != 0 && prev_cells > 1)
- screen_char_2(off_to - prev_cells, row,
+ if (!skip_for_popup(row, col + coloff - prev_cells))
+ {
+ if (enc_dbcs != 0 && prev_cells > 1)
+ screen_char_2(off_to - prev_cells, row,
col + coloff - prev_cells);
- else
- screen_char(off_to - prev_cells, row,
+ else
+ screen_char(off_to - prev_cells, row,
col + coloff - prev_cells);
+ }
}
}
#endif
// right of the window contents. But not on top of a popup window.
if (coloff + col < Columns)
{
-#ifdef FEAT_PROP_POPUP
- if (!blocked_by_popup(row, col + coloff))
-#endif
+ if (!skip_for_popup(row, col + coloff))
{
int c;
#endif
&& mb_fix_col(col, row) != col)
{
- ScreenLines[off - 1] = ' ';
- ScreenAttrs[off - 1] = 0;
- if (enc_utf8)
+ if (!skip_for_popup(row, col - 1))
{
- ScreenLinesUC[off - 1] = 0;
- ScreenLinesC[0][off - 1] = 0;
+ ScreenLines[off - 1] = ' ';
+ ScreenAttrs[off - 1] = 0;
+ if (enc_utf8)
+ {
+ ScreenLinesUC[off - 1] = 0;
+ ScreenLinesC[0][off - 1] = 0;
+ }
+ // redraw the previous cell, make it empty
+ screen_char(off - 1, row, col - 1);
}
- // redraw the previous cell, make it empty
- screen_char(off - 1, row, col - 1);
// force the cell at "col" to be redrawn
force_redraw_next = TRUE;
}
|| ScreenAttrs[off] != attr
|| exmode_active;
- if ((need_redraw || force_redraw_this)
-#ifdef FEAT_PROP_POPUP
- && !blocked_by_popup(row, col)
-#endif
- )
+ if ((need_redraw || force_redraw_this) && !skip_for_popup(row, col))
{
#if defined(FEAT_GUI) || defined(UNIX)
// The bold trick makes a single row of pixels appear in the next
// If we detected the next character needs to be redrawn, but the text
// doesn't extend up to there, update the character here.
- if (force_redraw_next && col < screen_Columns)
+ if (force_redraw_next && col < screen_Columns && !skip_for_popup(row, col))
{
if (enc_dbcs != 0 && dbcs_off2cells(off, max_off) > 1)
screen_char_2(off, row, col);
if (row >= screen_Rows || col >= screen_Columns)
return;
- // Skip if under the popup menu.
- if (skip_for_popup(row, col))
- return;
-
// Outputting a character in the last cell on the screen may scroll the
// screen up. Only do it when the "xn" termcap property is set, otherwise
// mark the character invalid (update it when scrolled up).
{
if (enc_dbcs != 0 && dbcs_off2cells(off + c, max_off) > 1)
{
- screen_char_2(off + c, r, c);
+ if (!skip_for_popup(r, c))
+ screen_char_2(off + c, r, c);
++c;
}
else
{
- screen_char(off + c, r, c);
+ if (!skip_for_popup(r, c))
+ screen_char(off + c, r, c);
if (utf_off2cells(off + c, max_off) > 1)
++c;
}
|| force_next
#endif
)
-#ifdef FEAT_PROP_POPUP
// Skip if under a(nother) popup.
- && !blocked_by_popup(row, col)
-#endif
- )
+ && !skip_for_popup(row, col))
{
#if defined(FEAT_GUI) || defined(UNIX)
// The bold trick may make a single row of pixels appear in