aboutsummaryrefslogtreecommitdiff
path: root/lib/libncurses/lib_refresh.c
diff options
context:
space:
mode:
authorAndrey A. Chernov <ache@FreeBSD.org>1997-07-30 17:21:39 +0000
committerAndrey A. Chernov <ache@FreeBSD.org>1997-07-30 17:21:39 +0000
commitc8a57a4fe56f3245fcb57b55188c8a336340b078 (patch)
tree7f7f89b59e18742d35d82f795df7418c5e33545e /lib/libncurses/lib_refresh.c
parented29ca4685d39742de8539c10654fb23eb026e6a (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.c17
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) {