aboutsummaryrefslogtreecommitdiff
path: root/contrib/ncurses/ncurses/base/lib_mvwin.c
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/ncurses/ncurses/base/lib_mvwin.c')
-rw-r--r--contrib/ncurses/ncurses/base/lib_mvwin.c112
1 files changed, 55 insertions, 57 deletions
diff --git a/contrib/ncurses/ncurses/base/lib_mvwin.c b/contrib/ncurses/ncurses/base/lib_mvwin.c
index 9774d9f58dfe..28b78f86842c 100644
--- a/contrib/ncurses/ncurses/base/lib_mvwin.c
+++ b/contrib/ncurses/ncurses/base/lib_mvwin.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc. *
+ * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -31,8 +31,6 @@
* and: Eric S. Raymond <esr@snark.thyrsus.com> *
****************************************************************************/
-
-
/*
** lib_mvwin.c
**
@@ -42,68 +40,68 @@
#include <curses.priv.h>
-MODULE_ID("$Id: lib_mvwin.c,v 1.7 1998/02/11 12:13:55 tom Exp $")
+MODULE_ID("$Id: lib_mvwin.c,v 1.9 2000/12/10 02:43:27 tom Exp $")
-int mvwin(WINDOW *win, int by, int bx)
+NCURSES_EXPORT(int)
+mvwin(WINDOW *win, int by, int bx)
{
- T((T_CALLED("mvwin(%p,%d,%d)"), win, by, bx));
+ T((T_CALLED("mvwin(%p,%d,%d)"), win, by, bx));
- if (!win || (win->_flags & _ISPAD))
- returnCode(ERR);
+ if (!win || (win->_flags & _ISPAD))
+ returnCode(ERR);
- /* Copying subwindows is allowed, but it is expensive... */
- if (win->_flags & _SUBWIN) {
- int err = ERR;
- WINDOW *parent = win->_parent;
- if (parent)
- { /* Now comes the complicated and costly part, you should really
- * try to avoid to move subwindows. Because a subwindow shares
- * the text buffers with its parent, one can't do a simple
- * memmove of the text buffers. One has to create a copy, then
- * to relocate the subwindow and then to do a copy.
- */
- if ((by - parent->_begy == win->_pary) &&
- (bx - parent->_begx == win->_parx))
- err=OK; /* we don't actually move */
- else {
- WINDOW* clone = dupwin(win);
+ /* Copying subwindows is allowed, but it is expensive... */
+ if (win->_flags & _SUBWIN) {
+ int err = ERR;
+ WINDOW *parent = win->_parent;
+ if (parent) { /* Now comes the complicated and costly part, you should really
+ * try to avoid to move subwindows. Because a subwindow shares
+ * the text buffers with its parent, one can't do a simple
+ * memmove of the text buffers. One has to create a copy, then
+ * to relocate the subwindow and then to do a copy.
+ */
+ if ((by - parent->_begy == win->_pary) &&
+ (bx - parent->_begx == win->_parx))
+ err = OK; /* we don't actually move */
+ else {
+ WINDOW *clone = dupwin(win);
if (clone) {
- /* now we have the clone, so relocate win */
-
- werase(win); /* Erase the original place */
- wbkgd(win,parent->_bkgd);/* fill with parents background */
- wsyncup(win); /* Tell the parent(s) */
-
- err = mvderwin(win,
- by - parent->_begy,
- bx - parent->_begx);
- if (err!=ERR) {
- err = copywin(clone,win,
- 0, 0, 0, 0, win->_maxy, win->_maxx, 0);
- if (ERR!=err)
- wsyncup(win);
- }
- if (ERR==delwin(clone))
- err=ERR;
+ /* now we have the clone, so relocate win */
+
+ werase(win); /* Erase the original place */
+ wbkgd(win, parent->_bkgd); /* fill with parents background */
+ wsyncup(win); /* Tell the parent(s) */
+
+ err = mvderwin(win,
+ by - parent->_begy,
+ bx - parent->_begx);
+ if (err != ERR) {
+ err = copywin(clone, win,
+ 0, 0, 0, 0, win->_maxy, win->_maxx, 0);
+ if (ERR != err)
+ wsyncup(win);
+ }
+ if (ERR == delwin(clone))
+ err = ERR;
}
- }
}
- returnCode(err);
}
+ returnCode(err);
+ }
- if (by + win->_maxy > screen_lines - 1
- || bx + win->_maxx > screen_columns - 1
- || by < 0
- || bx < 0)
- returnCode(ERR);
+ if (by + win->_maxy > screen_lines - 1
+ || bx + win->_maxx > screen_columns - 1
+ || by < 0
+ || bx < 0)
+ returnCode(ERR);
- /*
- * Whether or not the window is moved, touch the window's contents so
- * that a following call to 'wrefresh()' will paint the window at the
- * new location. This ensures that if the caller has refreshed another
- * window at the same location, that this one will be displayed.
- */
- win->_begy = by;
- win->_begx = bx;
- returnCode(touchwin(win));
+ /*
+ * Whether or not the window is moved, touch the window's contents so
+ * that a following call to 'wrefresh()' will paint the window at the
+ * new location. This ensures that if the caller has refreshed another
+ * window at the same location, that this one will be displayed.
+ */
+ win->_begy = by;
+ win->_begx = bx;
+ returnCode(touchwin(win));
}