X-Git-Url: https://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=ncurses%2Fbase%2Flib_newwin.c;h=7d3b02bead4a8123041c1788728c3c4b07f151ba;hp=e7a30bf937ce3501e9263399e5708490044dd88e;hb=404cc3f5b0751dd219565139f825c5a4d445f651;hpb=d998cb49bfb53bd99900fd4ed94519579bea99de diff --git a/ncurses/base/lib_newwin.c b/ncurses/base/lib_newwin.c index e7a30bf9..7d3b02be 100644 --- a/ncurses/base/lib_newwin.c +++ b/ncurses/base/lib_newwin.c @@ -43,7 +43,7 @@ #include #include -MODULE_ID("$Id: lib_newwin.c,v 1.54 2009/04/18 21:02:34 tom Exp $") +MODULE_ID("$Id: lib_newwin.c,v 1.57 2009/05/09 23:40:03 tom Exp $") #define window_is(name) ((sp)->_##name == win) @@ -88,11 +88,11 @@ _nc_freewin(WINDOW *win) if (win != 0) { if (_nc_try_global(curses) == 0) { q = 0; - for (each_window(p)) { + for (each_window(SP, p)) { if (&(p->win) == win) { remove_window_from_screen(win); if (q == 0) - _nc_windows = p->next; + WindowList(SP) = p->next; else q->next = p->next; @@ -133,7 +133,9 @@ NCURSES_SP_NAME(newwin) (NCURSES_SP_DCLx if (num_columns == 0) num_columns = screen_columns(SP_PARM) - begx; - if ((win = _nc_makenew(num_lines, num_columns, begy, begx, 0)) == 0) + win = NCURSES_SP_NAME(_nc_makenew) (NCURSES_SP_ARGx + num_lines, num_columns, begy, begx, 0); + if (win == 0) returnWin(0); for (i = 0; i < num_lines; i++) { @@ -164,6 +166,9 @@ newwin(int num_lines, int num_columns, int begy, int begx) NCURSES_EXPORT(WINDOW *) derwin(WINDOW *orig, int num_lines, int num_columns, int begy, int begx) { +#if NCURSES_SP_FUNCS + SCREEN *sp = CURRENT_SCREEN; +#endif WINDOW *win; int i; int flags = _SUBWIN; @@ -189,8 +194,10 @@ derwin(WINDOW *orig, int num_lines, int num_columns, int begy, int begx) if (orig->_flags & _ISPAD) flags |= _ISPAD; - if ((win = _nc_makenew(num_lines, num_columns, orig->_begy + begy, - orig->_begx + begx, flags)) == 0) + win = NCURSES_SP_NAME(_nc_makenew) (NCURSES_SP_ARGx num_lines, num_columns, + orig->_begy + begy, + orig->_begx + begx, flags); + if (win == 0) returnWin(0); win->_pary = begy; @@ -235,7 +242,8 @@ NCURSES_SP_NAME(_nc_makenew) (NCURSES_SP_DCLx WINDOW *win; bool is_pad = (flags & _ISPAD); - T((T_CALLED("_nc_makenew(%d,%d,%d,%d)"), num_lines, num_columns, begy, begx)); + T((T_CALLED("_nc_makenew(%p,%d,%d,%d,%d)"), + SP_PARM, num_lines, num_columns, begy, begx)); if (SP_PARM == 0) returnWin(0); @@ -329,9 +337,9 @@ NCURSES_SP_NAME(_nc_makenew) (NCURSES_SP_DCLx win->_flags |= _SCROLLWIN; } - wp->next = _nc_windows; + wp->next = WindowList(SP_PARM); wp->screen = SP_PARM; - _nc_windows = wp; + WindowList(SP_PARM) = wp; T((T_CREATE("window %p"), win)); @@ -365,3 +373,23 @@ _nc_screen_of(WINDOW *win) } return (sp); } + +#if NCURSES_SP_FUNCS +NCURSES_EXPORT(WINDOW *) +_nc_curscr_of(SCREEN *sp) +{ + return sp == 0 ? 0 : sp->_curscr; +} + +NCURSES_EXPORT(WINDOW *) +_nc_newscr_of(SCREEN *sp) +{ + return sp == 0 ? 0 : sp->_newscr; +} + +NCURSES_EXPORT(WINDOW *) +_nc_stdscr_of(SCREEN *sp) +{ + return sp == 0 ? 0 : sp->_stdscr; +} +#endif