1fdd4e1e0SJan Lentfer /**************************************************************************** 2*3468e90cSJohn Marino * Copyright (c) 1998-2010,2012 Free Software Foundation, Inc. * 3fdd4e1e0SJan Lentfer * * 4fdd4e1e0SJan Lentfer * Permission is hereby granted, free of charge, to any person obtaining a * 5fdd4e1e0SJan Lentfer * copy of this software and associated documentation files (the * 6fdd4e1e0SJan Lentfer * "Software"), to deal in the Software without restriction, including * 7fdd4e1e0SJan Lentfer * without limitation the rights to use, copy, modify, merge, publish, * 8fdd4e1e0SJan Lentfer * distribute, distribute with modifications, sublicense, and/or sell * 9fdd4e1e0SJan Lentfer * copies of the Software, and to permit persons to whom the Software is * 10fdd4e1e0SJan Lentfer * furnished to do so, subject to the following conditions: * 11fdd4e1e0SJan Lentfer * * 12fdd4e1e0SJan Lentfer * The above copyright notice and this permission notice shall be included * 13fdd4e1e0SJan Lentfer * in all copies or substantial portions of the Software. * 14fdd4e1e0SJan Lentfer * * 15fdd4e1e0SJan Lentfer * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * 16fdd4e1e0SJan Lentfer * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * 17fdd4e1e0SJan Lentfer * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * 18fdd4e1e0SJan Lentfer * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * 19fdd4e1e0SJan Lentfer * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * 20fdd4e1e0SJan Lentfer * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * 21fdd4e1e0SJan Lentfer * THE USE OR OTHER DEALINGS IN THE SOFTWARE. * 22fdd4e1e0SJan Lentfer * * 23fdd4e1e0SJan Lentfer * Except as contained in this notice, the name(s) of the above copyright * 24fdd4e1e0SJan Lentfer * holders shall not be used in advertising or otherwise to promote the * 25fdd4e1e0SJan Lentfer * sale, use or other dealings in this Software without prior written * 26fdd4e1e0SJan Lentfer * authorization. * 27fdd4e1e0SJan Lentfer ****************************************************************************/ 28fdd4e1e0SJan Lentfer 29fdd4e1e0SJan Lentfer /**************************************************************************** 30fdd4e1e0SJan Lentfer * Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1995 * 31fdd4e1e0SJan Lentfer * and: Eric S. Raymond <esr@snark.thyrsus.com> * 3200d8f3c4SJohn Marino * and: Juergen Pfeifer 1996-1999,2008 * 3300d8f3c4SJohn Marino * and: Thomas E. Dickey * 34fdd4e1e0SJan Lentfer ****************************************************************************/ 35fdd4e1e0SJan Lentfer 36fdd4e1e0SJan Lentfer /* panel.c -- implementation of panels library, some core routines */ 37fdd4e1e0SJan Lentfer #include "panel.priv.h" 38fdd4e1e0SJan Lentfer 39*3468e90cSJohn Marino MODULE_ID("$Id: panel.c,v 1.26 2012/02/23 10:02:15 tom Exp $") 40fdd4e1e0SJan Lentfer 411d102085SJan Lentfer /*+------------------------------------------------------------------------- 421d102085SJan Lentfer _nc_retrace_panel (pan) 431d102085SJan Lentfer --------------------------------------------------------------------------*/ 441d102085SJan Lentfer #ifdef TRACE 451d102085SJan Lentfer NCURSES_EXPORT(PANEL *) 461d102085SJan Lentfer _nc_retrace_panel(PANEL * pan) 471d102085SJan Lentfer { 4800d8f3c4SJohn Marino T((T_RETURN("%p"), (void *)pan)); 491d102085SJan Lentfer return pan; 501d102085SJan Lentfer } 511d102085SJan Lentfer #endif 521d102085SJan Lentfer 531d102085SJan Lentfer /*+------------------------------------------------------------------------- 541d102085SJan Lentfer _nc_my_visbuf(ptr) 551d102085SJan Lentfer --------------------------------------------------------------------------*/ 56fdd4e1e0SJan Lentfer #ifdef TRACE 57fdd4e1e0SJan Lentfer #ifndef TRACE_TXT 58fdd4e1e0SJan Lentfer NCURSES_EXPORT(const char *) 59fdd4e1e0SJan Lentfer _nc_my_visbuf(const void *ptr) 60fdd4e1e0SJan Lentfer { 61fdd4e1e0SJan Lentfer char temp[32]; 621d102085SJan Lentfer 63fdd4e1e0SJan Lentfer if (ptr != 0) 64*3468e90cSJohn Marino _nc_SPRINTF(temp, _nc_SLIMIT(sizeof(temp)) "ptr:%p", ptr); 65fdd4e1e0SJan Lentfer else 66*3468e90cSJohn Marino _nc_STRCPY(temp, "<null>", sizeof(temp)); 67fdd4e1e0SJan Lentfer return _nc_visbuf(temp); 68fdd4e1e0SJan Lentfer } 69fdd4e1e0SJan Lentfer #endif 70fdd4e1e0SJan Lentfer #endif 71fdd4e1e0SJan Lentfer 72fdd4e1e0SJan Lentfer /*+------------------------------------------------------------------------- 73fdd4e1e0SJan Lentfer dPanel(text,pan) 74fdd4e1e0SJan Lentfer --------------------------------------------------------------------------*/ 75fdd4e1e0SJan Lentfer #ifdef TRACE 76fdd4e1e0SJan Lentfer NCURSES_EXPORT(void) 771d102085SJan Lentfer _nc_dPanel(const char *text, const PANEL * pan) 78fdd4e1e0SJan Lentfer { 79fdd4e1e0SJan Lentfer _tracef("%s id=%s b=%s a=%s y=%d x=%d", 80fdd4e1e0SJan Lentfer text, USER_PTR(pan->user), 81fdd4e1e0SJan Lentfer (pan->below) ? USER_PTR(pan->below->user) : "--", 82fdd4e1e0SJan Lentfer (pan->above) ? USER_PTR(pan->above->user) : "--", 83fdd4e1e0SJan Lentfer PSTARTY(pan), PSTARTX(pan)); 84fdd4e1e0SJan Lentfer } 85fdd4e1e0SJan Lentfer #endif 86fdd4e1e0SJan Lentfer 87fdd4e1e0SJan Lentfer /*+------------------------------------------------------------------------- 88fdd4e1e0SJan Lentfer dStack(fmt,num,pan) 89fdd4e1e0SJan Lentfer --------------------------------------------------------------------------*/ 90fdd4e1e0SJan Lentfer #ifdef TRACE 91fdd4e1e0SJan Lentfer NCURSES_EXPORT(void) 921d102085SJan Lentfer _nc_dStack(const char *fmt, int num, const PANEL * pan) 93fdd4e1e0SJan Lentfer { 94fdd4e1e0SJan Lentfer char s80[80]; 95fdd4e1e0SJan Lentfer 9600d8f3c4SJohn Marino GetPanelHook(pan); 9700d8f3c4SJohn Marino 98*3468e90cSJohn Marino _nc_SPRINTF(s80, _nc_SLIMIT(sizeof(s80)) fmt, num, pan); 99fdd4e1e0SJan Lentfer _tracef("%s b=%s t=%s", s80, 100fdd4e1e0SJan Lentfer (_nc_bottom_panel) ? USER_PTR(_nc_bottom_panel->user) : "--", 101fdd4e1e0SJan Lentfer (_nc_top_panel) ? USER_PTR(_nc_top_panel->user) : "--"); 102fdd4e1e0SJan Lentfer if (pan) 103fdd4e1e0SJan Lentfer _tracef("pan id=%s", USER_PTR(pan->user)); 104fdd4e1e0SJan Lentfer pan = _nc_bottom_panel; 105fdd4e1e0SJan Lentfer while (pan) 106fdd4e1e0SJan Lentfer { 107fdd4e1e0SJan Lentfer dPanel("stk", pan); 108fdd4e1e0SJan Lentfer pan = pan->above; 109fdd4e1e0SJan Lentfer } 110fdd4e1e0SJan Lentfer } 111fdd4e1e0SJan Lentfer #endif 112fdd4e1e0SJan Lentfer 113fdd4e1e0SJan Lentfer /*+------------------------------------------------------------------------- 114fdd4e1e0SJan Lentfer Wnoutrefresh(pan) - debugging hook for wnoutrefresh 115fdd4e1e0SJan Lentfer --------------------------------------------------------------------------*/ 116fdd4e1e0SJan Lentfer #ifdef TRACE 117fdd4e1e0SJan Lentfer NCURSES_EXPORT(void) 118fdd4e1e0SJan Lentfer _nc_Wnoutrefresh(const PANEL * pan) 119fdd4e1e0SJan Lentfer { 120fdd4e1e0SJan Lentfer dPanel("wnoutrefresh", pan); 121fdd4e1e0SJan Lentfer wnoutrefresh(pan->win); 122fdd4e1e0SJan Lentfer } 123fdd4e1e0SJan Lentfer #endif 124fdd4e1e0SJan Lentfer 125fdd4e1e0SJan Lentfer /*+------------------------------------------------------------------------- 126fdd4e1e0SJan Lentfer Touchpan(pan) 127fdd4e1e0SJan Lentfer --------------------------------------------------------------------------*/ 128fdd4e1e0SJan Lentfer #ifdef TRACE 129fdd4e1e0SJan Lentfer NCURSES_EXPORT(void) 130fdd4e1e0SJan Lentfer _nc_Touchpan(const PANEL * pan) 131fdd4e1e0SJan Lentfer { 132fdd4e1e0SJan Lentfer dPanel("Touchpan", pan); 133fdd4e1e0SJan Lentfer touchwin(pan->win); 134fdd4e1e0SJan Lentfer } 135fdd4e1e0SJan Lentfer #endif 136fdd4e1e0SJan Lentfer 137fdd4e1e0SJan Lentfer /*+------------------------------------------------------------------------- 138fdd4e1e0SJan Lentfer Touchline(pan,start,count) 139fdd4e1e0SJan Lentfer --------------------------------------------------------------------------*/ 140fdd4e1e0SJan Lentfer #ifdef TRACE 141fdd4e1e0SJan Lentfer NCURSES_EXPORT(void) 1421d102085SJan Lentfer _nc_Touchline(const PANEL * pan, int start, int count) 143fdd4e1e0SJan Lentfer { 144fdd4e1e0SJan Lentfer char s80[80]; 1451d102085SJan Lentfer 146*3468e90cSJohn Marino _nc_SPRINTF(s80, _nc_SLIMIT(sizeof(s80)) "Touchline s=%d c=%d", start, count); 147fdd4e1e0SJan Lentfer dPanel(s80, pan); 148fdd4e1e0SJan Lentfer touchline(pan->win, start, count); 149fdd4e1e0SJan Lentfer } 150fdd4e1e0SJan Lentfer #endif 151fdd4e1e0SJan Lentfer 152fdd4e1e0SJan Lentfer #ifndef TRACE 153fdd4e1e0SJan Lentfer # ifndef __GNUC__ 154fdd4e1e0SJan Lentfer /* Some C compilers need something defined in a source file */ 1551d102085SJan Lentfer extern void _nc_dummy_panel(void); 1561d102085SJan Lentfer void 1571d102085SJan Lentfer _nc_dummy_panel(void) 1581d102085SJan Lentfer { 1591d102085SJan Lentfer } 160fdd4e1e0SJan Lentfer # endif 161fdd4e1e0SJan Lentfer #endif 162