p_hide.c revision 56639
1/****************************************************************************
2 * Copyright (c) 1998 Free Software Foundation, Inc.                        *
3 *                                                                          *
4 * Permission is hereby granted, free of charge, to any person obtaining a  *
5 * copy of this software and associated documentation files (the            *
6 * "Software"), to deal in the Software without restriction, including      *
7 * without limitation the rights to use, copy, modify, merge, publish,      *
8 * distribute, distribute with modifications, sublicense, and/or sell       *
9 * copies of the Software, and to permit persons to whom the Software is    *
10 * furnished to do so, subject to the following conditions:                 *
11 *                                                                          *
12 * The above copyright notice and this permission notice shall be included  *
13 * in all copies or substantial portions of the Software.                   *
14 *                                                                          *
15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
16 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
17 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
18 * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
19 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
20 * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
21 * THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
22 *                                                                          *
23 * Except as contained in this notice, the name(s) of the above copyright   *
24 * holders shall not be used in advertising or otherwise to promote the     *
25 * sale, use or other dealings in this Software without prior written       *
26 * authorization.                                                           *
27 ****************************************************************************/
28
29/****************************************************************************
30 *  Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1995                    *
31 *     and: Eric S. Raymond <esr@snark.thyrsus.com>                         *
32 ****************************************************************************/
33
34/* p_hide.c
35 * Remove a panel from the stack
36 */
37#include "panel.priv.h"
38
39MODULE_ID("$Id: p_hide.c,v 1.3 1999/09/29 15:22:32 juergen Exp $")
40
41/*+-------------------------------------------------------------------------
42	__panel_unlink(pan) - unlink panel from stack
43--------------------------------------------------------------------------*/
44static void
45__panel_unlink(PANEL *pan)
46{
47  PANEL *prev;
48  PANEL *next;
49
50#ifdef TRACE
51  dStack("<u%d>",1,pan);
52  if(!_nc_panel_is_linked(pan))
53    return;
54#endif
55
56  PANEL_UPDATE(pan,(PANEL*)0);
57
58  prev = pan->below;
59  next = pan->above;
60
61  if(prev)
62    { /* if non-zero, we will not update the list head */
63      prev->above = next;
64      if(next)
65	next->below = prev;
66    }
67  else if(next)
68    next->below = prev;
69  if(pan == _nc_bottom_panel)
70    _nc_bottom_panel = next;
71  if(pan == _nc_top_panel)
72    _nc_top_panel = prev;
73
74  pan->above = (PANEL *)0;
75  pan->below = (PANEL *)0;
76  dStack("<u%d>",9,pan);
77}
78
79int
80hide_panel(register PANEL *pan)
81{
82  if(!pan)
83    return(ERR);
84
85  dBug(("--> hide_panel %s", USER_PTR(pan->user)));
86
87  if(!_nc_panel_is_linked(pan))
88    {
89      pan->above = (PANEL *)0;
90      pan->below = (PANEL *)0;
91      return(ERR);
92    }
93
94  __panel_unlink(pan);
95  return(OK);
96}
97