p_hide.c revision 50276
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.2 1998/02/11 12:14:01 tom 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  _nc_override(pan,P_TOUCH);
57  _nc_free_obscure(pan);
58
59  prev = pan->below;
60  next = pan->above;
61
62  if(prev)
63    { /* if non-zero, we will not update the list head */
64      prev->above = next;
65      if(next)
66	next->below = prev;
67    }
68  else if(next)
69    next->below = prev;
70  if(pan == _nc_bottom_panel)
71    _nc_bottom_panel = next;
72  if(pan == _nc_top_panel)
73    _nc_top_panel = prev;
74
75  _nc_calculate_obscure();
76
77  pan->above = (PANEL *)0;
78  pan->below = (PANEL *)0;
79  dStack("<u%d>",9,pan);
80}
81
82int
83hide_panel(register PANEL *pan)
84{
85  if(!pan)
86    return(ERR);
87
88  dBug(("--> hide_panel %s", USER_PTR(pan->user)));
89
90  if(!_nc_panel_is_linked(pan))
91    {
92      pan->above = (PANEL *)0;
93      pan->below = (PANEL *)0;
94      return(ERR);
95    }
96
97  __panel_unlink(pan);
98  return(OK);
99}
100