summaryrefslogtreecommitdiff
path: root/lib/libcurses/lib_bkgd.c
diff options
context:
space:
mode:
authorTodd C. Miller <millert@cvs.openbsd.org>1997-11-26 04:02:03 +0000
committerTodd C. Miller <millert@cvs.openbsd.org>1997-11-26 04:02:03 +0000
commitbda33b7e716d56bf1a9ecccb7e2543889f9ab1d3 (patch)
tree7bc4bcdf70ecc1d045693a309e96b304e1b49c33 /lib/libcurses/lib_bkgd.c
parentcd15e61d557c4704743905eae7b88ae927cf0394 (diff)
ncurses 4.1 + changes to work with our terminfo libs (instead of
the ncurses ones). Changes are #ifdef EXTERN_TERMINFO. Post 4.1 patches will be applied in a separate commit.
Diffstat (limited to 'lib/libcurses/lib_bkgd.c')
-rw-r--r--lib/libcurses/lib_bkgd.c31
1 files changed, 21 insertions, 10 deletions
diff --git a/lib/libcurses/lib_bkgd.c b/lib/libcurses/lib_bkgd.c
index aa6ff7a7ff1..3d4c0be6bd7 100644
--- a/lib/libcurses/lib_bkgd.c
+++ b/lib/libcurses/lib_bkgd.c
@@ -19,23 +19,34 @@
* *
***************************************************************************/
-#include "curses.priv.h"
+#include <curses.priv.h>
+
+MODULE_ID("Id: lib_bkgd.c,v 1.7 1997/04/12 17:44:37 tom Exp $")
int wbkgd(WINDOW *win, const chtype ch)
{
int x, y;
+chtype old_bkgd = getbkgd(win);
+chtype new_bkgd = ch;
+
+ T((T_CALLED("wbkgd(%p,%s)"), win, _tracechtype(new_bkgd)));
- T(("wbkgd(%p, %lx) called", win, ch));
- wbkgdset(win, ch);
+ if (TextOf(new_bkgd) == 0)
+ new_bkgd |= BLANK;
+ wbkgdset(win, new_bkgd);
+ wattrset(win, AttrOf(new_bkgd));
- for (y = 0; y <= win->_maxy; y++)
- for (x = 0; x <= win->_maxx; x++)
- if ((win->_line[y].text[x]&A_CHARTEXT) == ' ')
- win->_line[y].text[x] |= ch;
+ for (y = 0; y <= win->_maxy; y++) {
+ for (x = 0; x <= win->_maxx; x++) {
+ if (win->_line[y].text[x] == old_bkgd)
+ win->_line[y].text[x] = new_bkgd;
else
- win->_line[y].text[x] |= (ch&A_ATTRIBUTES);
+ win->_line[y].text[x] =
+ TextOf(win->_line[y].text[x])
+ | AttrOf(new_bkgd);
+ }
+ }
touchwin(win);
_nc_synchook(win);
- return OK;
+ returnCode(OK);
}
-