]> ncurses.scripts.mit.edu Git - ncurses.git/blobdiff - panel/p_new.c
ncurses 5.3
[ncurses.git] / panel / p_new.c
index b4acc27983cbfe68fa79635453008eef4247a7f2..3dfd80691704f440fc2b0e636da22ac1bcfdc2cb 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc.                        *
+ * Copyright (c) 1998,2000 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            *
  */
 #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.6 2000/12/10 02:20:44 tom Exp $")
+
+#ifdef TRACE
+static char* stdscr_id;
+static char* new_id;
+#endif
 
 /*+-------------------------------------------------------------------------
   Get root (i.e. stdscr's) panel.
@@ -54,29 +59,31 @@ 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;
 }
 
-PANEL *
-new_panel(WINDOW *win)
+NCURSES_EXPORT(PANEL *)
+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);