diff options
Diffstat (limited to 'contrib/ncurses/ncurses/base/lib_newwin.c')
-rw-r--r-- | contrib/ncurses/ncurses/base/lib_newwin.c | 46 |
1 files changed, 18 insertions, 28 deletions
diff --git a/contrib/ncurses/ncurses/base/lib_newwin.c b/contrib/ncurses/ncurses/base/lib_newwin.c index 08921f256f02..3cd8238b1e2e 100644 --- a/contrib/ncurses/ncurses/base/lib_newwin.c +++ b/contrib/ncurses/ncurses/base/lib_newwin.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright (c) 1998,1999,2000 Free Software Foundation, Inc. * + * Copyright (c) 1998,1999,2000,2001 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 * @@ -40,7 +40,7 @@ #include <curses.priv.h> -MODULE_ID("$Id: lib_newwin.c,v 1.27 2000/12/10 02:43:27 tom Exp $") +MODULE_ID("$Id: lib_newwin.c,v 1.33 2001/12/19 01:06:30 tom Exp $") NCURSES_EXPORT(int) _nc_freewin(WINDOW *win) @@ -51,19 +51,18 @@ _nc_freewin(WINDOW *win) if (win != 0) { for (p = _nc_windows, q = 0; p != 0; q = p, p = p->next) { - if (p->win == win) { + if (&(p->win) == win) { if (q == 0) _nc_windows = p->next; else q->next = p->next; - free(p); if (!(win->_flags & _SUBWIN)) { for (i = 0; i <= win->_maxy; i++) FreeIfNeeded(win->_line[i].text); } free(win->_line); - free(win); + free(p); if (win == curscr) curscr = 0; @@ -82,11 +81,10 @@ _nc_freewin(WINDOW *win) } NCURSES_EXPORT(WINDOW *) -newwin -(int num_lines, int num_columns, int begy, int begx) +newwin(int num_lines, int num_columns, int begy, int begx) { WINDOW *win; - chtype *ptr; + NCURSES_CH_T *ptr; int i; T((T_CALLED("newwin(%d,%d,%d,%d)"), num_lines, num_columns, begy, begx)); @@ -106,24 +104,22 @@ newwin returnWin(0); for (i = 0; i < num_lines; i++) { - win->_line[i].text = typeCalloc(chtype, (unsigned) num_columns); + win->_line[i].text = typeCalloc(NCURSES_CH_T, (unsigned) num_columns); if (win->_line[i].text == 0) { (void) _nc_freewin(win); returnWin(0); } - for (ptr = win->_line[i].text; ptr < win->_line[i].text + - num_columns;) - *ptr++ = ' '; + for (ptr = win->_line[i].text; + ptr < win->_line[i].text + num_columns; + ptr++) + SetChar(*ptr, BLANK_TEXT, BLANK_ATTR); } - T(("newwin: returned window is %p", win)); - returnWin(win); } NCURSES_EXPORT(WINDOW *) -derwin -(WINDOW *orig, int num_lines, int num_columns, int begy, int begx) +derwin(WINDOW *orig, int num_lines, int num_columns, int begy, int begx) { WINDOW *win; int i; @@ -133,7 +129,7 @@ derwin begy, begx)); /* - ** make sure window fits inside the original one + * make sure window fits inside the original one */ if (begy < 0 || begx < 0 || orig == 0 || num_lines < 0 || num_columns < 0) returnWin(0); @@ -157,21 +153,18 @@ derwin win->_pary = begy; win->_parx = begx; win->_attrs = orig->_attrs; - win->_bkgd = orig->_bkgd; + win->_nc_bkgd = orig->_nc_bkgd; for (i = 0; i < num_lines; i++) win->_line[i].text = &orig->_line[begy++].text[begx]; win->_parent = orig; - T(("derwin: returned window is %p", win)); - returnWin(win); } NCURSES_EXPORT(WINDOW *) -subwin -(WINDOW *w, int l, int c, int y, int x) +subwin(WINDOW *w, int l, int c, int y, int x) { T((T_CALLED("subwin(%p, %d, %d, %d, %d)"), w, l, c, y, x)); T(("parent has begy = %d, begx = %d", w->_begy, w->_begx)); @@ -187,8 +180,7 @@ dimension_limit(int value) } NCURSES_EXPORT(WINDOW *) -_nc_makenew -(int num_lines, int num_columns, int begy, int begx, int flags) +_nc_makenew(int num_lines, int num_columns, int begy, int begx, int flags) { int i; WINDOWLIST *wp; @@ -203,8 +195,7 @@ _nc_makenew if ((wp = typeCalloc(WINDOWLIST, 1)) == 0) return 0; - if ((win = typeCalloc(WINDOW, 1)) == 0) - return 0; + win = &(wp->win); if ((win->_line = typeCalloc(struct ldat, ((unsigned) num_lines))) == 0) { free(win); @@ -221,7 +212,7 @@ _nc_makenew win->_flags = flags; win->_attrs = A_NORMAL; - win->_bkgd = BLANK; + SetChar(win->_nc_bkgd, BLANK_TEXT, BLANK_ATTR); win->_clear = is_pad ? FALSE : (num_lines == screen_lines && num_columns == screen_columns); @@ -284,7 +275,6 @@ _nc_makenew } wp->next = _nc_windows; - wp->win = win; _nc_windows = wp; T((T_CREATE("window %p"), win)); |