diff options
Diffstat (limited to 'src/drawline.c')
-rw-r--r-- | src/drawline.c | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/src/drawline.c b/src/drawline.c index c1ff24c73e..e6fdd7a0bd 100644 --- a/src/drawline.c +++ b/src/drawline.c @@ -948,6 +948,7 @@ win_line_continue(winlinevars_T *wlv) { // Continue item from end of wrapped line. wlv->n_extra = wlv->saved_n_extra; + wlv->saved_n_extra = 0; wlv->c_extra = wlv->saved_c_extra; wlv->c_final = wlv->saved_c_final; wlv->p_extra = wlv->saved_p_extra; @@ -1046,6 +1047,7 @@ win_line( int saved_search_attr = 0; // search_attr to be used when n_extra // goes to zero int saved_area_attr = 0; // idem for area_attr + int reset_extra_attr = FALSE; #endif #ifdef FEAT_SPELL int has_spell = FALSE; // this buffer has spell checking @@ -1919,6 +1921,7 @@ win_line( text_prop_flags = 0; text_prop_type = NULL; text_prop_id = 0; + reset_extra_attr = FALSE; } if (text_props_active > 0 && wlv.n_extra == 0) { @@ -2403,14 +2406,17 @@ win_line( wlv.extra_for_textprop = FALSE; in_linebreak = FALSE; - // only restore search_attr and area_attr after extra in the - // next screen line is also done + // Only restore search_attr and area_attr after "n_extra" in + // the next screen line is also done. if (wlv.saved_n_extra <= 0) { if (search_attr == 0) search_attr = saved_search_attr; if (area_attr == 0 && *ptr != NUL) area_attr = saved_area_attr; + // wlv.extra_attr should be used at this position but not + // any further. + reset_extra_attr = TRUE; } } #endif @@ -3317,6 +3323,13 @@ win_line( else #endif wlv.char_attr = wlv.extra_attr; +#ifdef FEAT_PROP_POPUP + if (reset_extra_attr) + { + reset_extra_attr = FALSE; + wlv.extra_attr = 0; + } +#endif } #if defined(FEAT_XIM) && defined(FEAT_GUI_GTK) |