tech-userlevel archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: curses: create panel from stdscr?



In article <20171107211717.GB711%internode.on.net@localhost>,
Brett Lymn  <blymn%internode.on.net@localhost> wrote:
>On Mon, Nov 06, 2017 at 07:09:06PM +0300, Valery Ushakov wrote:
>> 
>> It's intended to be compatible with Extended Terminal Interface (ETI).
>> When I wrote it I looked at Solaris and SCO documentation from early
>> 90s.  E.g.  calling top_panel() on a hidden panel behaves differently.
>> ETI says it's an error, ncurses shows the panel.  There may be other
>> differences as well.
>> 
>
>There is actually a book that defines the ETI, I have it at home
>somewhere.  The bits I implemented used that book as a reference.
>Unfortunately, ncurses does a lot of things that are not as per the
>specification.  I did try to report them upstream but there seemed to be
>a lack of interest in fixing things - I guess more due to breaking
>things than anything else.  This does leave us in the invidious position
>of our correctness being interpreted as bugs because we don't do what
>ncurses does....it is a constant, losing, battle.
>
>> 
>> Panels basically just add Z-order to curses windows.  What would be
>> meaningful operations on a panel that corresponds to stdscr?  It must
>> always be visible, it must always be at the bottom, it cannot be
>> moved, etc, etc.  What's worse is that it will probably introduce
>> consistency problems into the API.
>> 
>
>Yes, even though we are correct and it makes no real sense to allow a
>panel on stdscr we probably should do it otherwise we will be forever
>closing bug reports and also parts of pkgsrc will require ncurses simply
>because the native curses "does not work".
>
>It is wrong and a pain but ncurses has the larger market share so
>whatever we do different is considered a but so we may as well just suck
>it up and make our libpanel have the same brokenness.

Even if we become bug compatible, we should keep a mode (via environment
or program setting) that warns when we are asked to do something
unspecified or different than the standard, or even behaves the way the
standard mandates.

christos



Home | Main Index | Thread Index | Old Index