diff --git a/lib/libncurses/lib_addch.c b/lib/libncurses/lib_addch.c index 5ec657640e9..00684eddd1d 100644 --- a/lib/libncurses/lib_addch.c +++ b/lib/libncurses/lib_addch.c @@ -56,14 +56,10 @@ chtype ch = c; T(("win attr = %x", win->_attrs)); ch |= win->_attrs; - /* Don't attempt to replace any given attributes */ - if ((ch&A_ATTRIBUTES) == A_NORMAL) { - if (ch == ' ') - ch = win->_bkgd; + if (win->_line[y][x]&A_CHARTEXT == ' ') + ch |= win->_bkgd; else ch |= (win->_bkgd&A_ATTRIBUTES); - } - T(("bkg = %x -> ch = %x", win->_bkgd, ch)); if (win->_line[y][x] != ch) { diff --git a/lib/libncurses/lib_bkgd.c b/lib/libncurses/lib_bkgd.c index f54e4d130c1..0210995b7eb 100644 --- a/lib/libncurses/lib_bkgd.c +++ b/lib/libncurses/lib_bkgd.c @@ -27,13 +27,10 @@ int x, y; T(("wbkgd(%x, %x) called", win, ch)); for (y = 0; y < win->_maxy; y++) for (x = 0; x < win->_maxx; x++) - /* Don't attempt to replace existing attrs */ - if ((win->_line[y][x]&A_ATTRIBUTES) == A_NORMAL) { - if (win->_line[y][x] == ' ') - win->_line[y][x] = ch; + if (win->_line[y][x]&A_CHARTEXT == ' ') + win->_line[y][x] |= ch; else win->_line[y][x] |= (ch&A_ATTRIBUTES); - } touchwin(win); return OK; }