summaryrefslogtreecommitdiff
path: root/lib/libpanel/p_hide.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_hide.c
parent600477a0b0b78aeded717538f05df29039a4c6b0 (diff)
merge of ncurses-4.1-971129
Diffstat (limited to 'lib/libpanel/p_hide.c')
-rw-r--r--lib/libpanel/p_hide.c90
1 files changed, 90 insertions, 0 deletions
diff --git a/lib/libpanel/p_hide.c b/lib/libpanel/p_hide.c
new file mode 100644
index 00000000000..9891e640212
--- /dev/null
+++ b/lib/libpanel/p_hide.c
@@ -0,0 +1,90 @@
+/* $OpenBSD: p_hide.c,v 1.1 1997/12/03 05:17:53 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_hide.c
+ * Remove a panel from the stack
+ */
+#include "panel.priv.h"
+
+MODULE_ID("Id: p_hide.c,v 1.1 1997/10/12 13:16:22 juergen Exp $")
+
+/*+-------------------------------------------------------------------------
+ __panel_unlink(pan) - unlink panel from stack
+--------------------------------------------------------------------------*/
+static void
+__panel_unlink(PANEL *pan)
+{
+ PANEL *prev;
+ PANEL *next;
+
+#ifdef TRACE
+ dStack("<u%d>",1,pan);
+ if(!_nc_panel_is_linked(pan))
+ return;
+#endif
+
+ _nc_override(pan,P_TOUCH);
+ _nc_free_obscure(pan);
+
+ prev = pan->below;
+ next = pan->above;
+
+ if(prev)
+ { /* if non-zero, we will not update the list head */
+ prev->above = next;
+ if(next)
+ next->below = prev;
+ }
+ else if(next)
+ next->below = prev;
+ if(pan == _nc_bottom_panel)
+ _nc_bottom_panel = next;
+ if(pan == _nc_top_panel)
+ _nc_top_panel = prev;
+
+ _nc_calculate_obscure();
+
+ pan->above = (PANEL *)0;
+ pan->below = (PANEL *)0;
+ dStack("<u%d>",9,pan);
+}
+
+int
+hide_panel(register PANEL *pan)
+{
+ if(!pan)
+ return(ERR);
+
+ dBug(("--> hide_panel %s", USER_PTR(pan->user)));
+
+ if(!_nc_panel_is_linked(pan))
+ {
+ pan->above = (PANEL *)0;
+ pan->below = (PANEL *)0;
+ return(ERR);
+ }
+
+ __panel_unlink(pan);
+ return(OK);
+}