Releases: Bill-Gray/PDCursesMod
PDCursesMod 4.5.0 - 2024 Dec 31
(See docs/HISTORY.md
for more details, and/or the Git log for extreme detail.)
Major new features
-
Added an OS/2 GUI port, provided by chasonr. 23b1fbe 267f92a
-
The ncurses 'menu' library can be compiled and used with PDCursesMod,
and the ncurses program 'demo_menus' built to test it out. (The
'forms' library can be built in 8-bit character mode -- it currently
uses ncurses internals for wide mode -- but doesn't appear to
actually work yet.) 07bc4ac 1ad9562
Minor new features
-
The DRM and Linux framebuffer port now allows for screen rotation.
Hit Alt-/ for a 90-degree rotation. This should pave the way for
support on phones and other rotatable displays (and already helps if
you have a monitor in portrait mode). 0e41ba5 1b7b432 -
Added
is_cbreak()
,is_echo()
,is_nl()
,is_raw()
functions to
access members of the non-opaqueSCREEN
struct. The first two
replacePDC_getcbreak()
andPDC_getecho()
. 98b6969 -
Windows can be created, moved, and resized that go off the right
and bottom edges of the screen, a la ncurses. (I think this was
an acknowledgment of the fact that after resizing a screen, windows
might go over those edges anyway.) Windows still cannot go off the
left or top edges. bc51d18 -
Added a new 'test' program for the issues mentioned above with
scrolling andwinsertln()
,wdeleteln()
,winsdelln()
. 98c7405 -
Three new small test programs to investigate various aspects of
how curses works (or doesn't work). 5cef1e3 -
The 'tests' programs can now be built, on some platforms, with
'make -f Makefile tests'. 200b548 e611673 63138ea
80fdfe7 218aa8c -
Switched from defaulting to ncurses-6.4 tests to ncurses-6.5.
-
WinGUI now defaults to resizable windows, similar to SDLn, WinCon,
and X11. 58807ea -
winsnstr()
handled 513 bytes from the input, instead of the clearly
intended 513wchar_t
s. This worked, but was an unnecessarily low
limitation. It is now fixed, and the function can now handle
arbitrarily long strings via recursion. Added some code to test this
in 'show_col.c'. 3f8dfa9 18ef78d -
PDC_wcwidth( )
updated from Unicode 14.0.0 to 16.0.0 93e32ef a5f13c2
Bug fixes
-
In rare cases, blinking on the framebuffer port could be disabled
due to an integer rollover. eaee2a6 -
In WinGUI, we could potentially read memory out of bounds. From
slipher. 70d2724 -
In WinGUI, theoretically 'monospaced' fonts were not necessarily
monospaced. Reverted to drawing each character separately. b99fed1 -
In WinGUI, when redrawing a string of characters, the preceding and
subsequent glyphs were also redrawn. This was apparently needed at
one time to avoid stray pixels, but appears to be unnecessary now.
8466f73 -
In WinGUI and WinCon,
PDC_clearclipboard()
would fail if the clipboard
was not open. From Mark Hessling. a071130 -
If
napms()
was called with a negative value, it would lock. 65dfa7e -
Framebuffer/DRM port didn't redraw upon changing fonts if the new font
was the same size as the old one. c714cd9 -
wsetscrreg()
required the cursor for the window to be positioned
between the 'top' and 'bottom' of the new scroll region. 5a0d5be -
wdeleteln()
would delete the line currently under the cursor, then
bring up lines down to the end of the current scroll region, inserting
a blank line there. It really should delete all the way to the bottom
of the window. See also wmcbrine/PDCurses/issues/165. b02f94f -
The 'picsview' demo had a possible buffer overrun error. Reported and
fix proposed by Michael Knap. fcd2dd0 -
Plan9 port ran into a compile error due to different timekeeping
functions. Also was missing a few demos and term.h. 1e8472c -
Removed an
assert()
inmvwin()
when the window was moved outside the
screen area. Some programs (including 'test_pan') assume they can try
moving a window, then check the return value to see if it was actually
on screen. c801354 -
PDC_set_box_type()
has been removed, because it's an unneeded redundancy.
You can get double-lined or thick-lined boxes, and/or rounded corners,
via the standard Curseswborder_set()
function, and it'll work with
ncurses and other libraries. 'test_pan' revised to provide an example
of how that's done. f8d87ed549 099fa28 -
printw()
overflowed a buffer when asked to output more than 512 bytes.
ddf80d0 -
napms()
rounded up to the nearest clock tick on DOS and DOSVGA; it now
rounds to the nearest clock tick (with at least one tick being used).
Modified the documentation to reflect this. 785113f -
PDC_wcstombs()
could overflow a buffer in the UTF8 decoding. 7d704dd -
DOS and DOSVGA builds failed on Digital Mars. Several small fixes were
required. 981893b d22725b 32f2266 fd1ddf8 -
Fixes for Borland Turbo C compilation. a59f452 26128c2
d6b7e99 -
panel_hidden()
is now portable, returning TRUE (1) and FALSE (0) instead
ofOK
(0) andERR
(-1) This may break existing applications, so you possibly
want to check for the PDCursesMod build (PDC_BUILD < 4500
). Or see
demos/testpan.c
for a solution portable to ncurses and PDCurses.
PDCursesMod 4.4.0 - 2023 Nov 30
(See docs/HISTORY.md
for more details, and/or the Git log for extreme detail.)
Note that because of SCREEN
and WINDOW
now being opaque, the WA_
flags and some A_
flags changing, and KEY_MAX
being redefined, this is not binary compatible with 4.3.x. However, you'll get a link error if you get versions mixed up, so this shouldn't cause any real trouble.
Major new features
-
The
SCREEN
andWINDOW
structures are now opaque. 1167188 3259719 -
The
WA_
flags are now distinct, in builds with 64-bitchtype
s andattr_t
s (the default). This led to considerable documentation changes and an attempt to make the distinction betweenWA_
macros (for use withwattr_t
) andA_
macros (for use withchtype
) clearer. Most implementations of curses havewattr_t
==chtype
, including PDCurses* and ncurses, but you can't really rely on it. 78658c9 -
The
FILE
arguments passed tonewterm()
are now actually used on the VT platform. Changes by Pavel Stehule. 9c16db9
Minor new features
-
SDL1, SDL2, and GL support double and triple mouse clicks. Change provided by Lyle Tafoya.
a4e563d -
'panels' library almost completely rewritten. The new version is better at figuring out what parts need to be updated, and is generally easier to understand. 8830b71.
-
Added some small test programs for very specific feature/bug tests. e6a5ede
Bug fixes
PDCursesMod 4.3.7
PDCursesMod 4.3.7 - 2023 June 17
(See docs/HISTORY.md
for more details, and/or the Git log for extreme detail.)
Major new features
- SDL2 GL port, from Julius Ikkala. This is (on most systems) faster than the "traditional" SDL2 port. Many commits, starting at 4678131.
Minor new features
-
Support on Windows for Unicode input in the SMP (codepoints above 0xFFFF, for instance emojis.) 2050706 75b62ea
-
WinCon: supports full unicode output including SMP. 3ec63c9 7089b2e fac87bd
-
WinCon, WinGUI can be cross-compiled for Windows on Arm. 158e8ae
-
'newtest': extended the SLK testing. 'newtest' and 'testcurs' now use wget_wch( ) in wide builds, so the actual character is shown on input tests (instead of the multibyte stream). 'testcurs' gradient example (showing colors beyond 256 palette entries) is a little more logically set out. c744e3e 7089b57
-
WinCon can support a 'default' (transparent) background. 81cbefb
-
'curspriv.h' modified to allow C++ compilation. 52a2fdf
-
Clarified compatibility for ACS_ and WACS_ box characters, and added many missing aliases. From a suggestion by Simon Sobisch. e8f7b33
-
Fixed warnings with OpenWATCOM. We now compile with -we ("treat warnings as errors"). f27369e abbd8f5 89e3426
-
If you try to compile the DOS version with WIDE=Y, you get an error message explaining that wide characters don't work on that platform. d07b884
-
Now using ncurses-6.4 tests instead of 6.3.
Bug fixes
-
WinCon: Key modifiers were incorrectly cleared without a key event. 9229f08
-
VT: Ctrl-Alt-letter input was off by one. Hit, say, Ctrl-Alt-T, and you'd get Ctrl-Alt-U. 6556858
-
Fixed some casting issues with GetProcAddress( ) in Windows and a deprecation warning with MinGW, with considerable help from Arnold Trembley and Chuck Haatvedt. Further work may be required (it works, but pedantic compilation can get you warnings). bbae4bb 28cbcfc
-
CMake's list of demos is now up to date for DOS, DOSVGA, WinCon, WinGUI. Others to follow. 4f3dc96
-
Pasting text from the clipboard was done with a buffer lacking room for a null terminator, resulting in a memory overwrite. Reported by nhmall (issue #295). 0a4e1e9
-
realloc( ptr, 0); was assumed to free ptr and return NULL. This is usually true, but isn't guaranteed and isn't true on FreeBSD, and caused an assert to be triggered in endwin(). abbb6de
-
'terminfo' functions were not included in the DOSVGA builds, nor in WinCon when using the Microsoft VC makefile. Also, the WinCon Digital Mars makefile was broken. c51efbb
-
'picsview' and 'mbrot' demos now work correctly with ncurses. Some unnecessary distinctions between PDCurses* and ncurses were removed. 8972791
PDCursesMod 4.3.6
PDCursesMod 4.3.6 - 2023 April 12
(See docs/HISTORY.md
for more details, and/or the Git log for extreme detail.)
- SDL2 can now show Unicode past 0xffff (Supplemental Multilingual Planes). 602bc38
- VT port supports output redirection. a6618d9 6925d0f 65939aa
- WinGUI support DPI awareness, for better font display on high-res screens. 012e3d9
Bug fixes
- Partial fix so that getch( ) will return byte codes, expanding characters beyond 256 into multi-byte strings. bd50b2b
- Scrolling a window could result in a crash when the window was freed. 72521a1
- Decoding UTF8 was broken for SMP. ad7cd29
- Text selection & copying could cause memory corruption with 4 byte UTF-8
codepoints when WIDE=Y. bff53ab - Lots of small bug fixes and improvements... again, see
docs/HISTORY.md
and/or the git log for more details.
PDCursesMod 4.3.5
(See docs/HISTORY.md
for more details, and/or the Git log for extreme detail.)
- WinGUI is again single-threaded, resulting in considerably simpler code and fixing some resizing issues. See pull request #240. 6962ab6
- Framebuffer port can now use either the (deprecated) Linux framebuffer system or the DRM (Direct Rendering Manager) system. DRM is not supported on some older systems and the Linux framebuffer is not supported on newer ones. DRM also can be used with *BSD; the Linux framebuffer really is a Linux-only solution. e9bc09c
- delwin() now returns ERR if you attempt to delete a window with active subwindows, or a window that wasn't allocated by PDCursesMod or which has already been freed. c643c0d 3b14813
- delscreen() deletes all windows associated with a SCREEN. 26e473c
- Added ncurses extensions for opaque WINDOW structs, from Markus Uhlin. 7bb822b 22fecc1
- PDC_free_memory_allocations() (see below) was unnecessary; if we follow the specifications for delscreen(), as we now do, all that memory gets freed in the natural course of things. 0223039 60138ca
- Both SDLs could have problems in finding fonts on some Linuxes. Fixes from Mark Hessling. 1e4bcc9 9cf041e
- getch() and wget_wch() could return erroneous values in WinCon for values greater than 127. e54d03f e86d9c3
- Lots of small bug fixes and improvements... again, see
docs/HISTORY.md
for more details.
PDCurses 4.3.4
(See docs/HISTORY.md
for more details, and/or the Git log for extreme detail.)
- Files created by
getwin()
andputwin()
should now be usable between future versions of PDCursesMod, across most OSes and compilers, and (with limitations) even between wide/narrow and 32-bit/64-bitchtype
builds. endwin()
was not signal-safe. (Memory was freed and buffered file output was done; both are signal-unsafe.) See 'upstream' issue wmcbrine/PDCurses#134 for details.- We now use
wcwidth()
, instead of our own internal version, on Linux. This avoids some redundancy and may enable better results in non-Unicode environments, if any. - Also updated our
PDC_wcwidth()
from Unicode 5.0 to Unicode 14.0.0. - WinGUI could block if there was no key delay.
- Alternative character set glyphs were sometimes shown when they ought not to be, or vice versa.
- You can free all remaining internal memory with the new
PDC_free_memory_allocations()
function. This is not strictly necessary, since all memory is freed on exit anyway. But it can help when using Valgrind or similar memory diagnostic tools; you can eliminate any possible PDCursesMod leaks. - Lots of small bug fixes and improvements... again, see
docs/HISTORY.md
for more details.
PDCursesMod 4.3.3
(See docs/HISTORY.md
for more details, and/or the Git log for extreme detail.)
- The OS/2 code was replaced with William McBrine's version from "upstream" PDCurses, with a few modifications to accommodate changes that have occurred in PDCursesMod. This basically just means the OS/2 port works again (it was thoroughly broken).
- Two new demos,
mbrot
(lets you explore the Mandelbrot set in text mode, and tests out somencurses
extensions for color manipulation) andcalendar
(shows a calendar). - Fixed a problem with capturing/failing to capture Ctrls-C, Z, S, and Q on the VT and Linux framebuffer platforms.
- Screen resizing no longer requires a call to
resize_term(0,0)
. It's not needed inncurses
, and nobody remembered why it was required in PDCurses/PDCursesMod. (Note that it's still required in PDCurses.) - Clipboard handling in DOS, DOSVGA, VT, SDL1, framebuffer, and Plan9 is handled in a common manner. On those platforms, clipboard text is simply stored in a
malloc()
ed buffer and can be retrieved from it. Previously, the clipboard functions were dummy stubs on some of those platforms. - A few other fixes... as noted, see the Git log and/or HISTORY.md.
PDCursesMod 4.3.2
(See docs/HISTORY.md
for more details, and/or the Git log for extreme detail.)
- The "mangling" of
initscr()
to avoid versioning errors (see 'curses.h') is now done instead toendwin()
. It makes no difference to PDCurses, but some other build processes relied on seeing an unmangledinitscr()
. - 32-bit
chtype
, non-wide builds get 4096 color pairs and all twelve attribute bits that you'd get with 64-bitchtype
s. - Color pair management sped up immensely (note that this wasn't an issue anyway unless you had hundreds or thousands of color pairs in use.)
testcurs
showsA_DIM
text, and supergradients where possible (not just for 64-bit builds).- Almost all
ncurses
demos are built. - The default framebuffer font now contains all ACS and WACS glyphs.
- X11, VT, Linux framebuffer, and WinCon/WinGUI ports all compile without warnings with full warnings turned on.
- Added
widetest
demo to exercisegetcchar()
andsetcchar()
. PDC_set_function_key()
now works on most platforms, and the code is less messy/error-prone.- Lots of bug fixes... again, see
docs/HISTORY.md
for more details.
PDCursesMod 4.3.1
(See docs/HISTORY.md
for more details, and/or the Git log for extreme detail.)
- New 'fb' (Linux framebuffer) port. Should be useful on embedded systems and those not running X, or even necessarily a console.
mmask_t
now defaults to 64 bits. Fixes some problems with colliding triple-click and mouse-move masks and provides bits for future use.- Added safeguards against linking code compiled for one binary PDCursesMod API to a library built for another.
- Palette changes are updated immediately.
- Eliminated the now unnecessary
CHTYPE_64
andCHTYPE_LONG
macros. You can still setCHTYPE_32
to get old-style 32-bitchtype
s (andmmask_t
s). - Added four
ncurses
demos. - Lots of bug fixes... again, see
docs/HISTORY.md
for more details.
PDCursesMod 4.3.0
(See docs/HISTORY.md
for more details, and/or the Git log for extreme detail. This is a pretty big release.)
- X11 and both SDLs now support full colors and strikeout and underlined text, a la WinGUI and VT.
- Added many
ncurses
extension functions for color management, and demos to exercise them. - Added some GitHub® CI tests.
- Restored ability to build
ncurses_tests
(this had been broken for a long time). - SDLs and VT can be compiled as shared libraries and installed/uninstalled.
- Added a lot of
assert
s forNULL
parameters. Many functions in curses allow you to pass aNULL
parameter, but doing so usually means an error has occurred and (at least while debugging) such should not go silently ignored. - Many small improvements and bug fixes... again, see
docs/HISTORY.md
for more details.