---------- Forwarded message ---------
From: Giorgos Xou <[email protected]>
Date: Tue, Jun 16, 2026 at 4:35 AM
Subject: Re: move_panel not working with pads
To: Thomas Dickey <[email protected]>


On Mon, Jun 15, 2026 at 07:11:11PM -0400, Thomas Dickey wrote:
> On Mon, Jun 15, 2026 at 06:12:27PM -0400, Bill Gray wrote:
> > On 6/15/26 16:56, Thomas Dickey wrote:
> > > On Mon, Jun 15, 2026 at 02:57:45PM -0400, Bill Gray wrote:
> > > >     Hmmm... please post the test code you're using for this?  Have
you tried
> > > > it with PDCursesMod?  (Its panel library is a near-total rewrite,
but its
> > > > move_panel() does use mvwin() internally.)

No, I haven't tested it against PDCursesMod nor PDCurses, it was just a
speculation
considering it uses mvwin internally too.


> > >
> > > yes... a test-program is needed to see how it compares with the
> > > various implementations :-)

Here's a simple test-program i guess :-D

```
    #include <curses.h>
    #include <panel.h>


    int main( void)
    {
        int ch = -1;
        int y = 0, x = 0;
        WINDOW *pad1;
        PANEL  *panel1;

        initscr    ();
        noecho     ();
        start_color();

        init_pair(1, COLOR_BLUE, COLOR_RED);
        keypad(stdscr, TRUE);

        refresh();

        pad1 = newpad(10,10);

        wbkgd   (pad1, COLOR_PAIR(1));
        waddstr (pad1,"Test.");
        prefresh(pad1, 0, 0, 1, 2, 4 , 9);

        panel1 = new_panel(pad1);

        while(ch != 'q' && ch != 'Q')
        {
            ch = getch();

            if      (ch == KEY_UP   ) ++y;
            else if (ch == KEY_DOWN ) --y;
            else if (ch == KEY_RIGHT) ++x;
            else if (ch == KEY_LEFT ) --x;

            move_panel(panel1, y, x);
            update_panels();
        }
        endwin( );
        return(0);
    }
```

> >
> >    It occurs to me to wonder : is the panel library warranteed to work
if
> > you feed it a pad (or subpad or sub-window) instead of a plain old
window?
> > I've never tried it.

Had the same thoughts, never tried it too.

> >
> >    Is there a use case for calling new_panel( ) with a pad?

Pads are really useful with anything involving scrollable text (such as
logs, lists, fancy-tuifimanager stuff etc.).

As you already know, the main appeal of panels is the fact that they
solve the flickering issue of stacked windows in a more elegant way
than manually doing so.

Therefore pads with panels are practically useful for anything that
already previously involved plain old stacked-windows but with
too-much text.

A few practical examples I can think of using pads with panels are
thinks like:
- https://www.reddit.com/r/neovim/comments/1u49mnw/
- https://www.reddit.com/r/commandline/comments/1tbfeua/
- https://github.com/reekta92/graf
- plus, fancy modern-TUI animations?


>
> maybe - but pads differ from windows by being more readily movable
>
> >
> > -- Bill
> >
> > > > -- Bill
> > > >
> > > > On 6/15/26 14:20, Giorgos Xou wrote:
> > > > > move_panel internally uses mvwin, which doesn't work with pads
(pdcurses
> > > > > seems to be affected by this as well). Maybe pnoutrefresh could
be used
> > > > > internally for that specific case or some kind of an alternative
new
> > > > > mvpad function?
> > > > >
> > > > > (It just happened that I was again looking deep into how panels
work
> > > > > internally and just happened to stumble upon this issue.)
> > > > >
> > > > > *Cross-refs: *
> > > > > 3. ncurses 6.3 - patch 20211106 <
https://github.com/mirror/ncurses/commit/f399f54c6c4ea2143afcbf704ce9af0be52b63fc
>
> > > > > 2. hide_panel/show_panel not working with pads.
> > > > > <
https://lists.gnu.org/archive/html/bug-ncurses/2021-10/msg00037.html>
> > > > > 1. https://github.com/wmcbrine/PDCurses/issues/124
> > > > > <https://github.com/wmcbrine/PDCurses/issues/124>
> > > >
> > > >
> > >
> >
>
> --
> Thomas E. Dickey <[email protected]>
> https://invisible-island.net


PS. For some reason html "reply via email to" didn't work and I had to
figure out how (this cool thing that is called) neomutt works. so I've
no idea how this mail will be sent or if it actually was sent
correctly.

Reply via email to