p_below.c revision 262685
175584Sru/****************************************************************************
275584Sru * Copyright (c) 1998-2010,2012 Free Software Foundation, Inc.              *
375584Sru *                                                                          *
475584Sru * Permission is hereby granted, free of charge, to any person obtaining a  *
575584Sru * copy of this software and associated documentation files (the            *
675584Sru * "Software"), to deal in the Software without restriction, including      *
775584Sru * without limitation the rights to use, copy, modify, merge, publish,      *
875584Sru * distribute, distribute with modifications, sublicense, and/or sell       *
975584Sru * copies of the Software, and to permit persons to whom the Software is    *
1075584Sru * furnished to do so, subject to the following conditions:                 *
1175584Sru *                                                                          *
1275584Sru * The above copyright notice and this permission notice shall be included  *
1375584Sru * in all copies or substantial portions of the Software.                   *
1475584Sru *                                                                          *
1575584Sru * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
1675584Sru * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
1775584Sru * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
1875584Sru * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
19151497Sru * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
2075584Sru * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
2175584Sru * THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
2275584Sru *                                                                          *
2375584Sru * Except as contained in this notice, the name(s) of the above copyright   *
2475584Sru * holders shall not be used in advertising or otherwise to promote the     *
2575584Sru * sale, use or other dealings in this Software without prior written       *
2675584Sru * authorization.                                                           *
2775584Sru ****************************************************************************/
2875584Sru
2975584Sru/****************************************************************************
3075584Sru *  Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1995                    *
3175584Sru *     and: Eric S. Raymond <esr@snark.thyrsus.com>                         *
3275584Sru *     and: Juergen Pfeifer                         1997-1999,2008          *
3375584Sru ****************************************************************************/
3475584Sru
3575584Sru/* p_below.c
3675584Sru */
3775584Sru#include "panel.priv.h"
3875584Sru
3975584SruMODULE_ID("$Id: p_below.c,v 1.9 2012/03/10 23:43:41 tom Exp $")
4075584Sru
4175584Sru#if NCURSES_SP_FUNCS
4275584SruNCURSES_EXPORT(PANEL *)
43ceiling_panel(SCREEN * sp)
44{
45  T((T_CALLED("ceiling_panel(%p)"), (void *)sp));
46  if (sp)
47    {
48      struct panelhook *ph = NCURSES_SP_NAME(_nc_panelhook) (sp);
49
50      /* if top and bottom are equal, we have no or only the pseudo panel */
51      returnPanel(EMPTY_STACK()? (PANEL *) 0 : _nc_top_panel);
52    }
53  else
54    {
55      if (0 == CURRENT_SCREEN)
56	returnPanel(0);
57      else
58	returnPanel(ceiling_panel(CURRENT_SCREEN));
59    }
60}
61#endif
62
63NCURSES_EXPORT(PANEL *)
64panel_below(const PANEL * pan)
65{
66  PANEL *result;
67
68  T((T_CALLED("panel_below(%p)"), (const void *)pan));
69  if (pan)
70    {
71      GetHook(pan);
72      /* we must not return the pseudo panel */
73      result = Is_Pseudo(pan->below) ? (PANEL *) 0 : pan->below;
74    }
75  else
76    {
77#if NCURSES_SP_FUNCS
78      result = ceiling_panel(CURRENT_SCREEN);
79#else
80      /* if top and bottom are equal, we have no or only the pseudo panel */
81      result = EMPTY_STACK()? (PANEL *) 0 : _nc_top_panel;
82#endif
83    }
84  returnPanel(result);
85}
86