diff options
author | Todd C. Miller <millert@cvs.openbsd.org> | 1997-12-03 05:17:59 +0000 |
---|---|---|
committer | Todd C. Miller <millert@cvs.openbsd.org> | 1997-12-03 05:17:59 +0000 |
commit | 7c742f381e7808d0b12c17b534305751f3ebb0cb (patch) | |
tree | 107e7dced85dc3de5216ee99d054dd38922d28cc /lib/libpanel/p_new.c | |
parent | 600477a0b0b78aeded717538f05df29039a4c6b0 (diff) |
merge of ncurses-4.1-971129
Diffstat (limited to 'lib/libpanel/p_new.c')
-rw-r--r-- | lib/libpanel/p_new.c | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/lib/libpanel/p_new.c b/lib/libpanel/p_new.c new file mode 100644 index 00000000000..80c02a5a452 --- /dev/null +++ b/lib/libpanel/p_new.c @@ -0,0 +1,90 @@ +/* $OpenBSD: p_new.c,v 1.1 1997/12/03 05:17:54 millert Exp $ */ + +/*************************************************************************** +* COPYRIGHT NOTICE * +**************************************************************************** +* panels is copyright (C) 1995 * +* Zeyd M. Ben-Halim * +* zmbenhal@netcom.com * +* Eric S. Raymond * +* esr@snark.thyrsus.com * +* * +* All praise to the original author, Warren Tucker. * +* * +* Permission is hereby granted to reproduce and distribute panels * +* by any means and for any fee, whether alone or as part of a * +* larger distribution, in source or in binary form, PROVIDED * +* this notice is included with any such distribution, and is not * +* removed from any of its header files. Mention of panels in any * +* applications linked with it is highly appreciated. * +* * +* panels comes AS IS with no warranty, implied or expressed. * +* * +***************************************************************************/ + +/* p_new.c + * Creation of a new panel + */ +#include "panel.priv.h" + +MODULE_ID("Id: p_new.c,v 1.1 1997/10/12 13:16:22 juergen Exp $") + +/*+------------------------------------------------------------------------- + Get root (i.e. stdscr's) panel. + Establish the pseudo panel for stdscr if necessary. +--------------------------------------------------------------------------*/ +static PANEL* +root_panel(void) +{ + if(_nc_stdscr_pseudo_panel == (PANEL*)0) + { + + assert(stdscr && !_nc_bottom_panel && !_nc_top_panel); + _nc_stdscr_pseudo_panel = (PANEL*)malloc(sizeof(PANEL)); + if (_nc_stdscr_pseudo_panel != 0) { + PANEL* pan = _nc_stdscr_pseudo_panel; + WINDOW* win = stdscr; + pan->win = win; + getbegyx(win, pan->wstarty, pan->wstartx); + pan->wendy = pan->wstarty + getmaxy(win); + pan->wendx = pan->wstartx + getmaxx(win); + pan->below = (PANEL*)0; + pan->above = (PANEL*)0; + pan->obscure = (PANELCONS*)0; +#ifdef TRACE + pan->user = "stdscr"; +#else + pan->user = (void*)0; +#endif + _nc_panel_link_bottom(pan); + } + } + return _nc_stdscr_pseudo_panel; +} + +PANEL * +new_panel(WINDOW *win) +{ + PANEL *pan = (PANEL*)0; + + (void)root_panel(); + assert(_nc_stdscr_pseudo_panel); + + if (!(win->_flags & _ISPAD) && (pan = (PANEL*)malloc(sizeof(PANEL)))) + { + pan->win = win; + pan->above = (PANEL *)0; + pan->below = (PANEL *)0; + getbegyx(win, pan->wstarty, pan->wstartx); + pan->wendy = pan->wstarty + getmaxy(win); + pan->wendx = pan->wstartx + getmaxx(win); +#ifdef TRACE + pan->user = "new"; +#else + pan->user = (char *)0; +#endif + pan->obscure = (PANELCONS *)0; + (void)show_panel(pan); + } + return(pan); +} |