mirror of
https://github.com/python/cpython.git
synced 2025-08-30 05:35:08 +00:00
bpo-25720: Fix the method for checking pad state of curses WINDOW (#4164)
Modify the code to use ncurses is_pad() instead of checking WINDOW _flags field. If your platform does not provide the is_pad(), the existing way that checks the field will be enabled. Note: This change does not drop support for platforms where do not have both WINDOW _flags field and is_pad().
This commit is contained in:
parent
280c22a82a
commit
8bc7d63560
6 changed files with 90 additions and 17 deletions
|
@ -934,6 +934,12 @@ int py_mvwdelch(WINDOW *w, int y, int x)
|
|||
}
|
||||
#endif
|
||||
|
||||
#if defined(HAVE_CURSES_IS_PAD)
|
||||
#define py_is_pad(win) is_pad(win)
|
||||
#elif defined(WINDOW_HAS_FLAGS)
|
||||
#define py_is_pad(win) ((win) ? ((win)->_flags & _ISPAD) != 0 : FALSE)
|
||||
#endif
|
||||
|
||||
/* chgat, added by Fabian Kreutz <fabian.kreutz at gmx.net> */
|
||||
|
||||
static PyObject *
|
||||
|
@ -1073,10 +1079,11 @@ PyCursesWindow_EchoChar(PyCursesWindowObject *self, PyObject *args)
|
|||
if (!PyCurses_ConvertToChtype(self, temp, &ch))
|
||||
return NULL;
|
||||
|
||||
#ifdef WINDOW_HAS_FLAGS
|
||||
if (self->win->_flags & _ISPAD)
|
||||
#ifdef py_is_pad
|
||||
if (py_is_pad(self->win)) {
|
||||
return PyCursesCheckERR(pechochar(self->win, ch | attr),
|
||||
"echochar");
|
||||
}
|
||||
else
|
||||
#endif
|
||||
return PyCursesCheckERR(wechochar(self->win, ch | attr),
|
||||
|
@ -1603,10 +1610,10 @@ PyCursesWindow_NoOutRefresh(PyCursesWindowObject *self, PyObject *args)
|
|||
int pminrow,pmincol,sminrow,smincol,smaxrow,smaxcol;
|
||||
int rtn;
|
||||
|
||||
#ifndef WINDOW_HAS_FLAGS
|
||||
#ifndef py_is_pad
|
||||
if (0)
|
||||
#else
|
||||
if (self->win->_flags & _ISPAD)
|
||||
if (py_is_pad(self->win))
|
||||
#endif
|
||||
{
|
||||
switch(PyTuple_Size(args)) {
|
||||
|
@ -1766,10 +1773,10 @@ PyCursesWindow_Refresh(PyCursesWindowObject *self, PyObject *args)
|
|||
int pminrow,pmincol,sminrow,smincol,smaxrow,smaxcol;
|
||||
int rtn;
|
||||
|
||||
#ifndef WINDOW_HAS_FLAGS
|
||||
#ifndef py_is_pad
|
||||
if (0)
|
||||
#else
|
||||
if (self->win->_flags & _ISPAD)
|
||||
if (py_is_pad(self->win))
|
||||
#endif
|
||||
{
|
||||
switch(PyTuple_Size(args)) {
|
||||
|
@ -1835,9 +1842,10 @@ PyCursesWindow_SubWin(PyCursesWindowObject *self, PyObject *args)
|
|||
}
|
||||
|
||||
/* printf("Subwin: %i %i %i %i \n", nlines, ncols, begin_y, begin_x); */
|
||||
#ifdef WINDOW_HAS_FLAGS
|
||||
if (self->win->_flags & _ISPAD)
|
||||
#ifdef py_is_pad
|
||||
if (py_is_pad(self->win)) {
|
||||
win = subpad(self->win, nlines, ncols, begin_y, begin_x);
|
||||
}
|
||||
else
|
||||
#endif
|
||||
win = subwin(self->win, nlines, ncols, begin_y, begin_x);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue