First cut at ETI libpanel. Lacks man pages and tests.
Not hooked into the build yet.
This commit is contained in:
parent
b7ab9303c7
commit
5858a2db3d
31
lib/libpanel/Makefile
Normal file
31
lib/libpanel/Makefile
Normal file
@ -0,0 +1,31 @@
|
||||
# $NetBSD: Makefile,v 1.1 2015/10/26 23:09:49 uwe Exp $
|
||||
|
||||
WARNS= 4
|
||||
|
||||
LIB= panel
|
||||
|
||||
INCS= panel.h
|
||||
|
||||
SRCS= #
|
||||
|
||||
SRCS+= _deck.c
|
||||
|
||||
SRCS+= above.c
|
||||
SRCS+= below.c
|
||||
SRCS+= bottom.c
|
||||
SRCS+= del.c
|
||||
SRCS+= getuser.c
|
||||
SRCS+= hidden.c
|
||||
SRCS+= hide.c
|
||||
SRCS+= move.c
|
||||
SRCS+= new.c
|
||||
SRCS+= replace.c
|
||||
SRCS+= setuser.c
|
||||
SRCS+= show.c
|
||||
SRCS+= top.c
|
||||
SRCS+= update.c
|
||||
SRCS+= window.c
|
||||
|
||||
#LIBDPLIBS+= curses ${.CURDIR}/../libcurses
|
||||
|
||||
.include <bsd.lib.mk>
|
34
lib/libpanel/_deck.c
Normal file
34
lib/libpanel/_deck.c
Normal file
@ -0,0 +1,34 @@
|
||||
/* $NetBSD: _deck.c,v 1.1 2015/10/26 23:09:49 uwe Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2015 Valery Ushakov
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__RCSID("$NetBSD: _deck.c,v 1.1 2015/10/26 23:09:49 uwe Exp $");
|
||||
|
||||
#include "panel_impl.h"
|
||||
|
||||
struct deck _deck __dso_hidden = TAILQ_HEAD_INITIALIZER(_deck);
|
||||
PANEL _stdscr_panel __dso_hidden;
|
45
lib/libpanel/above.c
Normal file
45
lib/libpanel/above.c
Normal file
@ -0,0 +1,45 @@
|
||||
/* $NetBSD: above.c,v 1.1 2015/10/26 23:09:49 uwe Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2015 Valery Ushakov
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__RCSID("$NetBSD: above.c,v 1.1 2015/10/26 23:09:49 uwe Exp $");
|
||||
|
||||
#include "panel_impl.h"
|
||||
|
||||
|
||||
PANEL *
|
||||
panel_above(PANEL *p)
|
||||
{
|
||||
|
||||
if (__predict_false(p == NULL))
|
||||
return NULL;
|
||||
|
||||
if (__predict_false(PANEL_HIDDEN(p)))
|
||||
return NULL;
|
||||
|
||||
return PANEL_ABOVE(p);
|
||||
}
|
50
lib/libpanel/below.c
Normal file
50
lib/libpanel/below.c
Normal file
@ -0,0 +1,50 @@
|
||||
/* $NetBSD: below.c,v 1.1 2015/10/26 23:09:49 uwe Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2015 Valery Ushakov
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__RCSID("$NetBSD: below.c,v 1.1 2015/10/26 23:09:49 uwe Exp $");
|
||||
|
||||
#include "panel_impl.h"
|
||||
|
||||
|
||||
PANEL *
|
||||
panel_below(PANEL *p)
|
||||
{
|
||||
PANEL *below;
|
||||
|
||||
if (__predict_false(p == NULL))
|
||||
return NULL;
|
||||
|
||||
if (__predict_false(PANEL_HIDDEN(p)))
|
||||
return NULL;
|
||||
|
||||
below = PANEL_BELOW(p);
|
||||
if (below == &_stdscr_panel)
|
||||
return NULL;
|
||||
else
|
||||
return below;
|
||||
}
|
48
lib/libpanel/bottom.c
Normal file
48
lib/libpanel/bottom.c
Normal file
@ -0,0 +1,48 @@
|
||||
/* $NetBSD: bottom.c,v 1.1 2015/10/26 23:09:49 uwe Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2015 Valery Ushakov
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__RCSID("$NetBSD: bottom.c,v 1.1 2015/10/26 23:09:49 uwe Exp $");
|
||||
|
||||
#include "panel_impl.h"
|
||||
|
||||
|
||||
int
|
||||
bottom_panel(PANEL *p)
|
||||
{
|
||||
|
||||
if (__predict_false(p == NULL))
|
||||
return ERR;
|
||||
|
||||
if (__predict_false(PANEL_HIDDEN(p)))
|
||||
return ERR;
|
||||
|
||||
(void) hide_panel(p);
|
||||
|
||||
DECK_INSERT_BOTTOM(p);
|
||||
return OK;
|
||||
}
|
63
lib/libpanel/del.c
Normal file
63
lib/libpanel/del.c
Normal file
@ -0,0 +1,63 @@
|
||||
/* $NetBSD: del.c,v 1.1 2015/10/26 23:09:49 uwe Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2015 Valery Ushakov
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__RCSID("$NetBSD: del.c,v 1.1 2015/10/26 23:09:49 uwe Exp $");
|
||||
|
||||
#include "panel_impl.h"
|
||||
|
||||
#include <assert.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
|
||||
int
|
||||
del_panel(PANEL *p)
|
||||
{
|
||||
|
||||
if (__predict_false(p == NULL))
|
||||
return ERR;
|
||||
|
||||
(void) hide_panel(p);
|
||||
free(p);
|
||||
|
||||
/*
|
||||
* If the last panel is removed, remove the phantom stdscr
|
||||
* panel as well.
|
||||
*
|
||||
* A program that wants to switch to a different screen with
|
||||
* set_term(3), or ends and recreates curses session with
|
||||
* endwin(3)/initscr(3), must delete all panels first, since
|
||||
* their windows will become invalid. When it will create its
|
||||
* first new panel afterwards, it will pick up new stdscr.
|
||||
*/
|
||||
if (TAILQ_LAST(&_deck, deck) == &_stdscr_panel) {
|
||||
(void) hide_panel(&_stdscr_panel);
|
||||
assert(TAILQ_EMPTY(&_deck));
|
||||
}
|
||||
|
||||
return OK;
|
||||
}
|
41
lib/libpanel/getuser.c
Normal file
41
lib/libpanel/getuser.c
Normal file
@ -0,0 +1,41 @@
|
||||
/* $NetBSD: getuser.c,v 1.1 2015/10/26 23:09:49 uwe Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2015 Valery Ushakov
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__RCSID("$NetBSD: getuser.c,v 1.1 2015/10/26 23:09:49 uwe Exp $");
|
||||
|
||||
#include "panel_impl.h"
|
||||
|
||||
|
||||
char *
|
||||
panel_userptr(PANEL *p)
|
||||
{
|
||||
if (p == NULL)
|
||||
return NULL;
|
||||
|
||||
return p->user;
|
||||
}
|
45
lib/libpanel/hidden.c
Normal file
45
lib/libpanel/hidden.c
Normal file
@ -0,0 +1,45 @@
|
||||
/* $NetBSD: hidden.c,v 1.1 2015/10/26 23:09:49 uwe Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2015 Valery Ushakov
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__RCSID("$NetBSD: hidden.c,v 1.1 2015/10/26 23:09:49 uwe Exp $");
|
||||
|
||||
#include "panel_impl.h"
|
||||
|
||||
|
||||
int
|
||||
panel_hidden(PANEL *p)
|
||||
{
|
||||
|
||||
if (p == NULL)
|
||||
return ERR;
|
||||
|
||||
if (PANEL_HIDDEN(p))
|
||||
return TRUE;
|
||||
else
|
||||
return FALSE;
|
||||
}
|
56
lib/libpanel/hide.c
Normal file
56
lib/libpanel/hide.c
Normal file
@ -0,0 +1,56 @@
|
||||
/* $NetBSD: hide.c,v 1.1 2015/10/26 23:09:49 uwe Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2015 Valery Ushakov
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__RCSID("$NetBSD: hide.c,v 1.1 2015/10/26 23:09:49 uwe Exp $");
|
||||
|
||||
#include "panel_impl.h"
|
||||
|
||||
|
||||
int
|
||||
hide_panel(PANEL *p)
|
||||
{
|
||||
PANEL *other;
|
||||
|
||||
if (__predict_false(p == NULL))
|
||||
return ERR;
|
||||
|
||||
if (__predict_false(PANEL_HIDDEN(p)))
|
||||
return OK;
|
||||
|
||||
DECK_REMOVE(p);
|
||||
|
||||
/*
|
||||
* The panel is no longer in the deck, so update_panels() will
|
||||
* not handle it. Touch exposed areas now.
|
||||
*/
|
||||
FOREACH_PANEL (other) {
|
||||
touchoverlap(p->win, other->win);
|
||||
}
|
||||
|
||||
return OK;
|
||||
}
|
58
lib/libpanel/move.c
Normal file
58
lib/libpanel/move.c
Normal file
@ -0,0 +1,58 @@
|
||||
/* $NetBSD: move.c,v 1.1 2015/10/26 23:09:49 uwe Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2015 Valery Ushakov
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__RCSID("$NetBSD: move.c,v 1.1 2015/10/26 23:09:49 uwe Exp $");
|
||||
|
||||
#include "panel_impl.h"
|
||||
|
||||
|
||||
int
|
||||
move_panel(PANEL *p, int y, int x)
|
||||
{
|
||||
int oldy, oldx;
|
||||
|
||||
if (__predict_false(p == NULL))
|
||||
return ERR;
|
||||
|
||||
getbegyx(p->win, oldy, oldx);
|
||||
if (__predict_false(y == oldy && x == oldx))
|
||||
return OK;
|
||||
|
||||
if (!PANEL_HIDDEN(p)) {
|
||||
PANEL *other;
|
||||
|
||||
/* touch exposed areas at the old location now */
|
||||
FOREACH_PANEL (other) {
|
||||
if (other != p) {
|
||||
touchoverlap(p->win, other->win);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return mvwin(p->win, y, x);
|
||||
}
|
75
lib/libpanel/new.c
Normal file
75
lib/libpanel/new.c
Normal file
@ -0,0 +1,75 @@
|
||||
/* $NetBSD: new.c,v 1.1 2015/10/26 23:09:49 uwe Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2015 Valery Ushakov
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__RCSID("$NetBSD: new.c,v 1.1 2015/10/26 23:09:49 uwe Exp $");
|
||||
|
||||
#include "panel_impl.h"
|
||||
|
||||
#include <assert.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
|
||||
static PANEL *
|
||||
_new_panel(WINDOW *w)
|
||||
{
|
||||
PANEL *p;
|
||||
|
||||
p = (PANEL *)malloc(sizeof(PANEL));
|
||||
if (p == NULL)
|
||||
return NULL;
|
||||
|
||||
p->win = w;
|
||||
p->user = NULL;
|
||||
|
||||
DECK_INSERT_TOP(p);
|
||||
return p;
|
||||
}
|
||||
|
||||
|
||||
PANEL *
|
||||
new_panel(WINDOW *w)
|
||||
{
|
||||
if (__predict_false(w == NULL))
|
||||
return NULL;
|
||||
|
||||
if (__predict_false(w == stdscr))
|
||||
return NULL;
|
||||
|
||||
/*
|
||||
* Ensure there's phantom panel for stdscr at (below) the
|
||||
* bottom. We explicitly re-assign stdscr in case it changed.
|
||||
*/
|
||||
if (TAILQ_EMPTY(&_deck)) {
|
||||
assert(PANEL_HIDDEN(&_stdscr_panel));
|
||||
|
||||
_stdscr_panel.win = stdscr;
|
||||
DECK_INSERT_TOP(&_stdscr_panel);
|
||||
}
|
||||
|
||||
return _new_panel(w);
|
||||
}
|
62
lib/libpanel/panel.h
Normal file
62
lib/libpanel/panel.h
Normal file
@ -0,0 +1,62 @@
|
||||
/* $NetBSD: panel.h,v 1.1 2015/10/26 23:09:49 uwe Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2015 Valery Ushakov
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef _PANEL_H_
|
||||
#define _PANEL_H_
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
#include <curses.h>
|
||||
|
||||
typedef struct __panel PANEL;
|
||||
|
||||
__BEGIN_DECLS
|
||||
|
||||
PANEL *new_panel(WINDOW *);
|
||||
int del_panel(PANEL *);
|
||||
|
||||
int replace_panel(PANEL *, WINDOW *);
|
||||
WINDOW *panel_window(PANEL *);
|
||||
|
||||
int set_panel_userptr(PANEL *, char *);
|
||||
char *panel_userptr(PANEL *);
|
||||
|
||||
int hide_panel(PANEL *);
|
||||
int show_panel(PANEL *);
|
||||
int panel_hidden(PANEL *);
|
||||
|
||||
int top_panel(PANEL *);
|
||||
int bottom_panel(PANEL *);
|
||||
|
||||
PANEL *panel_above(PANEL *);
|
||||
PANEL *panel_below(PANEL *);
|
||||
|
||||
int move_panel(PANEL *, int, int);
|
||||
|
||||
void update_panels(void);
|
||||
__END_DECLS
|
||||
|
||||
#endif /* _PANEL_H_ */
|
92
lib/libpanel/panel_impl.h
Normal file
92
lib/libpanel/panel_impl.h
Normal file
@ -0,0 +1,92 @@
|
||||
/* $NetBSD: panel_impl.h,v 1.1 2015/10/26 23:09:49 uwe Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2015 Valery Ushakov
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef _PANEL_IMPL_H_
|
||||
#define _PANEL_IMPL_H_
|
||||
|
||||
#include "panel.h"
|
||||
|
||||
#include <sys/queue.h>
|
||||
|
||||
#define DECK_HEAD(head) TAILQ_HEAD(head, __panel)
|
||||
#define DECK_ENTRY TAILQ_ENTRY(__panel)
|
||||
|
||||
|
||||
/*
|
||||
* Panels are just curses windows with Z-order added.
|
||||
* See update_panels() for details.
|
||||
*/
|
||||
struct __panel {
|
||||
WINDOW *win;
|
||||
void *user;
|
||||
DECK_ENTRY zorder;
|
||||
};
|
||||
|
||||
|
||||
/* Deck of panels in Z-order from bottom to top. */
|
||||
DECK_HEAD(deck);
|
||||
extern struct deck _deck __dso_hidden;
|
||||
|
||||
/* Fake stdscr panel at the bottom, not user visible */
|
||||
extern PANEL _stdscr_panel __dso_hidden;
|
||||
|
||||
|
||||
/*
|
||||
* Hidden panels are not in the deck. <sys/queue.h> macros don't have
|
||||
* a concept of an entry not on the list, so provide a kludge that
|
||||
* digs into internals.
|
||||
*/
|
||||
#define TAILQ_REMOVE_NP(head, elm, field) do { \
|
||||
TAILQ_REMOVE((head), (elm), field); \
|
||||
(elm)->field.tqe_next = NULL; \
|
||||
(elm)->field.tqe_prev = NULL; \
|
||||
} while (/*CONSTCOND*/ 0)
|
||||
|
||||
#define TAILQ_LINKED_NP(elm, field) \
|
||||
(((elm)->field.tqe_prev) != NULL)
|
||||
|
||||
|
||||
#define DECK_INSERT_TOP(p) do { \
|
||||
TAILQ_INSERT_TAIL(&_deck, (p), zorder); \
|
||||
} while (/*CONSTCOND*/ 0)
|
||||
|
||||
#define DECK_INSERT_BOTTOM(p) do { \
|
||||
TAILQ_INSERT_AFTER(&_deck, &_stdscr_panel, (p), zorder); \
|
||||
} while (/*CONSTCOND*/ 0)
|
||||
|
||||
#define DECK_REMOVE(p) do { \
|
||||
TAILQ_REMOVE_NP(&_deck, (p), zorder); \
|
||||
} while (/*CONSTCOND*/ 0)
|
||||
|
||||
|
||||
#define PANEL_ABOVE(p) (TAILQ_NEXT((p), zorder))
|
||||
#define PANEL_BELOW(p) (TAILQ_PREV((p), deck, zorder))
|
||||
#define PANEL_HIDDEN(p) (!TAILQ_LINKED_NP((p), zorder))
|
||||
|
||||
#define FOREACH_PANEL(var) TAILQ_FOREACH(var, &_deck, zorder)
|
||||
|
||||
#endif /* _PANEL_IMPL_H_ */
|
53
lib/libpanel/replace.c
Normal file
53
lib/libpanel/replace.c
Normal file
@ -0,0 +1,53 @@
|
||||
/* $NetBSD: replace.c,v 1.1 2015/10/26 23:09:49 uwe Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2015 Valery Ushakov
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__RCSID("$NetBSD: replace.c,v 1.1 2015/10/26 23:09:49 uwe Exp $");
|
||||
|
||||
#include "panel_impl.h"
|
||||
|
||||
|
||||
int
|
||||
replace_panel(PANEL *p, WINDOW *w)
|
||||
{
|
||||
|
||||
if (__predict_false(p == NULL || w == NULL))
|
||||
return ERR;
|
||||
|
||||
if (!PANEL_HIDDEN(p)) {
|
||||
PANEL *other;
|
||||
|
||||
/* touch exposed areas at the old location now */
|
||||
FOREACH_PANEL (other) {
|
||||
if (other != p)
|
||||
touchoverlap(p->win, other->win);
|
||||
}
|
||||
}
|
||||
|
||||
p->win = w;
|
||||
return OK;
|
||||
}
|
42
lib/libpanel/setuser.c
Normal file
42
lib/libpanel/setuser.c
Normal file
@ -0,0 +1,42 @@
|
||||
/* $NetBSD: setuser.c,v 1.1 2015/10/26 23:09:49 uwe Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2015 Valery Ushakov
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__RCSID("$NetBSD: setuser.c,v 1.1 2015/10/26 23:09:49 uwe Exp $");
|
||||
|
||||
#include "panel_impl.h"
|
||||
|
||||
|
||||
int
|
||||
set_panel_userptr(PANEL *p, char *u)
|
||||
{
|
||||
if (p == NULL)
|
||||
return ERR;
|
||||
|
||||
p->user = u;
|
||||
return OK;
|
||||
}
|
5
lib/libpanel/shlib_version
Normal file
5
lib/libpanel/shlib_version
Normal file
@ -0,0 +1,5 @@
|
||||
# $NetBSD: shlib_version,v 1.1 2015/10/26 23:09:49 uwe Exp $
|
||||
# Remember to update distrib/sets/lists/base/shl.* when changing
|
||||
#
|
||||
major=1
|
||||
minor=0
|
47
lib/libpanel/show.c
Normal file
47
lib/libpanel/show.c
Normal file
@ -0,0 +1,47 @@
|
||||
/* $NetBSD: show.c,v 1.1 2015/10/26 23:09:49 uwe Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2015 Valery Ushakov
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__RCSID("$NetBSD: show.c,v 1.1 2015/10/26 23:09:49 uwe Exp $");
|
||||
|
||||
#include "panel_impl.h"
|
||||
|
||||
|
||||
int
|
||||
show_panel(PANEL *p)
|
||||
{
|
||||
|
||||
if (__predict_false(p == NULL))
|
||||
return ERR;
|
||||
|
||||
/* unlike top_panel() */
|
||||
if (__predict_false(!PANEL_HIDDEN(p)))
|
||||
return ERR;
|
||||
|
||||
DECK_INSERT_TOP(p);
|
||||
return OK;
|
||||
}
|
49
lib/libpanel/top.c
Normal file
49
lib/libpanel/top.c
Normal file
@ -0,0 +1,49 @@
|
||||
/* $NetBSD: top.c,v 1.1 2015/10/26 23:09:49 uwe Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2015 Valery Ushakov
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__RCSID("$NetBSD: top.c,v 1.1 2015/10/26 23:09:49 uwe Exp $");
|
||||
|
||||
#include "panel_impl.h"
|
||||
|
||||
|
||||
int
|
||||
top_panel(PANEL *p)
|
||||
{
|
||||
|
||||
if (__predict_false(p == NULL))
|
||||
return ERR;
|
||||
|
||||
/* unlike show_panel() */
|
||||
if (__predict_false(PANEL_HIDDEN(p)))
|
||||
return ERR;
|
||||
|
||||
/* XXX: use common internal functions instead */
|
||||
(void) hide_panel(p);
|
||||
(void) show_panel(p);
|
||||
return OK;
|
||||
}
|
62
lib/libpanel/update.c
Normal file
62
lib/libpanel/update.c
Normal file
@ -0,0 +1,62 @@
|
||||
/* $NetBSD: update.c,v 1.1 2015/10/26 23:09:49 uwe Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2015 Valery Ushakov
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__RCSID("$NetBSD: update.c,v 1.1 2015/10/26 23:09:49 uwe Exp $");
|
||||
|
||||
#include "panel_impl.h"
|
||||
|
||||
|
||||
void
|
||||
update_panels(void)
|
||||
{
|
||||
PANEL *p;
|
||||
|
||||
/*
|
||||
* For each panel tell panels above it they need to refresh
|
||||
* regions that overlap (are above) this panel. This ensures
|
||||
* that even if a panel below was touched, it's still
|
||||
* overwritten by a panel above.
|
||||
*
|
||||
* Note that we also need to do this during "destructive"
|
||||
* operations (hide, move, replace window - which see).
|
||||
*/
|
||||
FOREACH_PANEL (p) {
|
||||
PANEL *above = p;
|
||||
while ((above = PANEL_ABOVE(above)) != NULL) {
|
||||
touchoverlap(p->win, above->win);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* This is what effects Z-order: the window updated later
|
||||
* overwrites contents of the windows below (before) it.
|
||||
*/
|
||||
FOREACH_PANEL (p) {
|
||||
wnoutrefresh(p->win);
|
||||
}
|
||||
}
|
43
lib/libpanel/window.c
Normal file
43
lib/libpanel/window.c
Normal file
@ -0,0 +1,43 @@
|
||||
/* $NetBSD: window.c,v 1.1 2015/10/26 23:09:49 uwe Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2015 Valery Ushakov
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__RCSID("$NetBSD: window.c,v 1.1 2015/10/26 23:09:49 uwe Exp $");
|
||||
|
||||
#include "panel_impl.h"
|
||||
|
||||
|
||||
WINDOW *
|
||||
panel_window(PANEL *p)
|
||||
{
|
||||
|
||||
if (p == NULL)
|
||||
return NULL;
|
||||
|
||||
return p->win;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user