X-Git-Url: http://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=panel%2Fp_show.c;h=3503bec1909e102cf7182bb02b3a49a16d4e01cf;hp=10781efb73a2b9708560a28f7b339574a35405a2;hb=f259fb41d8f08b7e042eb928b839b59c8e39098c;hpb=661078ddbde3ce0f3b06e95642fbb9b5fef7dca1 diff --git a/panel/p_show.c b/panel/p_show.c index 10781efb..3503bec1 100644 --- a/panel/p_show.c +++ b/panel/p_show.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998 Free Software Foundation, Inc. * + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 1998-2009,2010 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 * @@ -32,45 +33,41 @@ ****************************************************************************/ /* p_show.c - * Place a panel on top of the stack; may already be in the stack + * Place a panel on top of the stack; may already be in the stack */ #include "panel.priv.h" -MODULE_ID("$Id: p_show.c,v 1.2 1998/02/11 12:14:01 tom Exp $") +MODULE_ID("$Id: p_show.c,v 1.17 2021/06/17 21:20:30 tom Exp $") -static void -panel_link_top(PANEL *pan) +PANEL_EXPORT(int) +show_panel(PANEL * pan) { -#ifdef TRACE - dStack("",1,pan); - if(_nc_panel_is_linked(pan)) - return; -#endif + int err = ERR; - pan->above = (PANEL *)0; - pan->below = (PANEL *)0; - if(_nc_top_panel) + T((T_CALLED("show_panel(%p)"), (void *)pan)); + + if (pan) { + GetHook(pan); + + if (Is_Top(pan)) + returnCode(OK); + + dBug(("--> show_panel %s", USER_PTR(pan->user, 1))); + + HIDE_PANEL(pan, err, OK); + + dStack("", 1, pan); + assert(_nc_bottom_panel == _nc_stdscr_pseudo_panel); + _nc_top_panel->above = pan; pan->below = _nc_top_panel; - } - _nc_top_panel = pan; - if(!_nc_bottom_panel) - _nc_bottom_panel = pan; - _nc_calculate_obscure(); - dStack("",9,pan); -} + pan->above = (PANEL *) 0; + _nc_top_panel = pan; -int -show_panel(PANEL *pan) -{ - if(!pan) - return(ERR); - if(pan == _nc_top_panel) - return(OK); - dBug(("--> show_panel %s", USER_PTR(pan->user))); - if(_nc_panel_is_linked(pan)) - (void)hide_panel(pan); - panel_link_top(pan); - return(OK); + err = OK; + + dStack("", 9, pan); + } + returnCode(err); }