Skip to content

PDCursesMod 4.5.0 - 2024 Dec 31

Latest
Compare
Choose a tag to compare
@Bill-Gray Bill-Gray released this 26 Jan 00:19
· 2 commits to master since this release
38c7571

(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-opaque SCREEN struct. The first two
    replace PDC_getcbreak() and PDC_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 and winsertln(), 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 513 wchar_ts. 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() in mvwin() 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 Curses wborder_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
    of OK (0) and ERR (-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.