NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: lib/55220: Possible color problem in curses and/or py-curses
The following reply was made to PR lib/55220; it has been noted by GNATS.
From: Brett Lymn <blymn%internode.on.net@localhost>
To: gnats-bugs%netbsd.org@localhost
Cc: blymn%netbsd.org@localhost, gnats-admin%netbsd.org@localhost, netbsd-bugs%netbsd.org@localhost,
Thomas Klausner <wiz%NetBSD.org@localhost>
Subject: Re: lib/55220: Possible color problem in curses and/or py-curses
Date: Fri, 3 Dec 2021 07:51:43 +1030
On Tue, Oct 26, 2021 at 09:10:01AM +0000, Thomas Klausner wrote:
>
> The position where I'm at is reverse (in my case, gray on black). When
> I move the cursor, the new byte under the cursor position gets that
> color scheme, but the old one keeps it (it stays gray on black). I
> don't think this is intended behaviour.
>
> Can you please check that?
>
I agree, I don't think this is intended but I don't think it is a curses
problem. If I run this test code:
#!/usr/pkg/bin/python3.8
#
import curses
stdscr = curses.initscr()
curses.start_color()
win = curses.newwin(20, 80, 0, 0)
win.addstr(0, 0, "Current testing", curses.A_UNDERLINE)
win.getch()
curses.init_pair(1, curses.COLOR_RED, curses.COLOR_WHITE)
curses.init_pair(2, curses.COLOR_GREEN, curses.COLOR_WHITE)
win.addstr(1, 0, "Color testing", curses.color_pair(1))
win.getch()
win.chgat(1, 3, 4, curses.color_pair(2))
win.getch()
curses.endwin()
Then the win.chgat call results in the 4 characters are set to a black
background with white writing (default colour pair) instead of green on
a white background. Ramping up the debug in curses I see:
1638479121.598015: mvwchgat: x: 3 y: 1 count: 4 attr: 0x0 color pair 0
Which is also what I see when running debug on fileobj too - the
attributes and colour are _always_ 0 which translates to attribute
A_NORMAL and white text on a black background. Having a look at the
py-curses library code in the chgat handling there is:
color = (short)((attr >> 8) & 0xff);
attr = attr - (color << 8);
This really doesn't map well to the NetBSD curses colour and attributes
so it isn't surprising that the NetBSD curses is always getting 0's.
So, it looks like the py-curses needs to be fixed.
--
Brett Lymn
--
Sent from my NetBSD device.
"We are were wolves",
"You mean werewolves?",
"No we were wolves, now we are something else entirely",
"Oh"
Home |
Main Index |
Thread Index |
Old Index