]> ncurses.scripts.mit.edu Git - ncurses.git/blobdiff - panel/p_new.c
ncurses 5.1
[ncurses.git] / panel / p_new.c
index b4acc27983cbfe68fa79635453008eef4247a7f2..43542fea2154313e796b6b373420081eaab4c833 100644 (file)
  */
 #include "panel.priv.h"
 
-MODULE_ID("$Id: p_new.c,v 1.2 1998/02/11 12:14:01 tom Exp $")
+MODULE_ID("$Id: p_new.c,v 1.5 1999/11/22 18:02:41 juergen Exp $")
+
+#ifdef TRACE
+static char* stdscr_id;
+static char* new_id;
+#endif
 
 /*+-------------------------------------------------------------------------
   Get root (i.e. stdscr's) panel.
@@ -54,18 +59,16 @@ root_panel(void)
        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";
+       if (!stdscr_id)
+         stdscr_id = strdup("stdscr");
+       pan->user = stdscr_id;
 #else
        pan->user = (void*)0;
 #endif
-       _nc_panel_link_bottom(pan);
+       _nc_bottom_panel = _nc_top_panel = pan;
       }
     }
   return _nc_stdscr_pseudo_panel;
@@ -76,7 +79,11 @@ new_panel(WINDOW *win)
 {
   PANEL *pan = (PANEL*)0;
 
-  (void)root_panel();
+  if (!win)
+    return(pan);
+
+  if (!_nc_stdscr_pseudo_panel)
+    (void)root_panel();
   assert(_nc_stdscr_pseudo_panel);
 
   if (!(win->_flags & _ISPAD) && (pan = (PANEL*)malloc(sizeof(PANEL))))
@@ -84,15 +91,13 @@ new_panel(WINDOW *win)
       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";
+      if (!new_id)
+       new_id = strdup("new");
+      pan->user = new_id;
 #else
       pan->user = (char *)0;
 #endif
-      pan->obscure = (PANELCONS *)0;
       (void)show_panel(pan);
     }
   return(pan);