]> git.ipfire.org Git - thirdparty/Python/cpython.git/commit
gh-152502: Detect the curses mouse interface and is_* methods portably (GH-152705)
authorSerhiy Storchaka <storchaka@gmail.com>
Tue, 30 Jun 2026 19:24:07 +0000 (22:24 +0300)
committerGitHub <noreply@github.com>
Tue, 30 Jun 2026 19:24:07 +0000 (19:24 +0000)
commit7bbea4f4868ef89b07b986d7a0d4b585e8271f27
tree60f38f9a6eb8a58521daab04d451a85341d33d84
parenta3dc7849a3a171f9615f233fce5300f983db6908
gh-152502: Detect the curses mouse interface and is_* methods portably (GH-152705)

The mouse interface (getmouse(), has_mouse(), the BUTTON* constants,
window.mouse_trafo(), ...) and the window is_*() state-query methods were gated
on ncurses-specific macros, so they were dropped on other curses implementations
that provide them, such as NetBSD curses and PDCurses.

Gate them instead on configure capability probes (for functions NetBSD curses
provides, since it defines no identifying macro) or on NCURSES_EXT_FUNCS or the
PDCURSES macro (for functions only ncurses and PDCurses provide).  Probe for
getmouse() with its X/Open getmouse(MEVENT *) signature, since PDCurses declares
an incompatible getmouse(void) unless built for the ncurses mouse API, which
PDC_NCMOUSE now always selects.

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Doc/library/curses.rst
Include/py_curses.h
Misc/NEWS.d/next/Library/2026-06-30-14-30-00.gh-issue-152502.Mq7Kx2.rst [new file with mode: 0644]
Modules/_cursesmodule.c
Modules/clinic/_cursesmodule.c.h
configure
configure.ac
pyconfig.h.in