]> ncurses.scripts.mit.edu Git - ncurses.git/blobdiff - panel/p_new.c
ncurses 5.3
[ncurses.git] / panel / p_new.c
index f2f208d6ec7b68cb2a9ebb9eaa302d4fbdd5b8fb..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            *
  *                                                                          *
  * 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"
 
  */
 #include "panel.priv.h"
 
-MODULE_ID("$Id: p_new.c,v 1.4 1999/09/29 15:22:32 juergen 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.
 
 /*+-------------------------------------------------------------------------
   Get root (i.e. stdscr's) panel.
@@ -57,7 +62,9 @@ root_panel(void)
        pan->below   = (PANEL*)0;
        pan->above   = (PANEL*)0;
 #ifdef TRACE
        pan->below   = (PANEL*)0;
        pan->above   = (PANEL*)0;
 #ifdef TRACE
-       pan->user = "stdscr";
+       if (!stdscr_id)
+         stdscr_id = strdup("stdscr");
+       pan->user = stdscr_id;
 #else
        pan->user = (void*)0;
 #endif
 #else
        pan->user = (void*)0;
 #endif
@@ -67,12 +74,16 @@ root_panel(void)
   return _nc_stdscr_pseudo_panel;
 }
 
   return _nc_stdscr_pseudo_panel;
 }
 
-PANEL *
-new_panel(WINDOW *win)
+NCURSES_EXPORT(PANEL *)
+new_panel (WINDOW *win)
 {
   PANEL *pan = (PANEL*)0;
 
 {
   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))))
   assert(_nc_stdscr_pseudo_panel);
 
   if (!(win->_flags & _ISPAD) && (pan = (PANEL*)malloc(sizeof(PANEL))))
@@ -81,7 +92,9 @@ new_panel(WINDOW *win)
       pan->above = (PANEL *)0;
       pan->below = (PANEL *)0;
 #ifdef TRACE
       pan->above = (PANEL *)0;
       pan->below = (PANEL *)0;
 #ifdef TRACE
-      pan->user = "new";
+      if (!new_id)
+       new_id = strdup("new");
+      pan->user = new_id;
 #else
       pan->user = (char *)0;
 #endif
 #else
       pan->user = (char *)0;
 #endif