diff options
author | Andrey A. Chernov <ache@FreeBSD.org> | 1997-07-30 17:21:39 +0000 |
---|---|---|
committer | Andrey A. Chernov <ache@FreeBSD.org> | 1997-07-30 17:21:39 +0000 |
commit | c8a57a4fe56f3245fcb57b55188c8a336340b078 (patch) | |
tree | 7f7f89b59e18742d35d82f795df7418c5e33545e /lib/libncurses/lib_refresh.c | |
parent | ed29ca4685d39742de8539c10654fb23eb026e6a (diff) |
Fix logical background handling by merging it from ncurses 4.1
No new user-visible functions added
Notes
Notes:
svn path=/head/; revision=27773
Diffstat (limited to 'lib/libncurses/lib_refresh.c')
-rw-r--r-- | lib/libncurses/lib_refresh.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/lib/libncurses/lib_refresh.c b/lib/libncurses/lib_refresh.c index 72ab095d15b7..994802525a14 100644 --- a/lib/libncurses/lib_refresh.c +++ b/lib/libncurses/lib_refresh.c @@ -40,6 +40,23 @@ int m, n; T(("wnoutrefresh(%x) called", win)); + /* + * This function will break badly if we try to refresh a pad. + */ + if ((win == 0) + || (win->_flags & _ISPAD)) + return(ERR); + + /* + * If 'newscr' has a different background than the window that we're + * trying to refresh, we'll have to copy the whole thing. + */ + if (win->_bkgd != newscr->_bkgd) { + touchwin(win); + newscr->_bkgd = win->_bkgd; + } + newscr->_attrs = win->_attrs; + win->_flags &= ~_HASMOVED; for (i = 0, m = begy; i <= win->_maxy; i++, m++) { if (win->_firstchar[i] != _NOCHANGE) { |