summaryrefslogtreecommitdiff
path: root/lib/libpanel/p_new.c
diff options
context:
space:
mode:
authorTodd C. Miller <millert@cvs.openbsd.org>1997-12-03 05:17:59 +0000
committerTodd C. Miller <millert@cvs.openbsd.org>1997-12-03 05:17:59 +0000
commit7c742f381e7808d0b12c17b534305751f3ebb0cb (patch)
tree107e7dced85dc3de5216ee99d054dd38922d28cc /lib/libpanel/p_new.c
parent600477a0b0b78aeded717538f05df29039a4c6b0 (diff)
merge of ncurses-4.1-971129
Diffstat (limited to 'lib/libpanel/p_new.c')
-rw-r--r--lib/libpanel/p_new.c90
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);
+}