Kaydet (Commit) 88bbd73d authored tarafından Neal Norwitz's avatar Neal Norwitz

SF bug #1400822, Extended version of _curses over{lay,write} does not work

Fix signatures to conform to doc (also fixed ungetmouse()).

Will backport.
üst fc76d633
...@@ -5,7 +5,8 @@ ...@@ -5,7 +5,8 @@
# does call every method and function. # does call every method and function.
# #
# Functions not tested: {def,reset}_{shell,prog}_mode, getch(), getstr(), # Functions not tested: {def,reset}_{shell,prog}_mode, getch(), getstr(),
# getmouse(), ungetmouse(), init_color() # init_color()
# Only called, not tested: getmouse(), ungetmouse()
# #
import curses, sys, tempfile, os import curses, sys, tempfile, os
...@@ -106,6 +107,8 @@ def window_funcs(stdscr): ...@@ -106,6 +107,8 @@ def window_funcs(stdscr):
stdscr.notimeout(1) stdscr.notimeout(1)
win2.overlay(win) win2.overlay(win)
win2.overwrite(win) win2.overwrite(win)
win2.overlay(win, 1, 2, 3, 3, 2, 1)
win2.overwrite(win, 1, 2, 3, 3, 2, 1)
stdscr.redrawln(1,2) stdscr.redrawln(1,2)
stdscr.scrollok(1) stdscr.scrollok(1)
...@@ -201,6 +204,9 @@ def module_funcs(stdscr): ...@@ -201,6 +204,9 @@ def module_funcs(stdscr):
if hasattr(curses, 'getmouse'): if hasattr(curses, 'getmouse'):
curses.mousemask(curses.BUTTON1_PRESSED) curses.mousemask(curses.BUTTON1_PRESSED)
curses.mouseinterval(10) curses.mouseinterval(10)
# just verify these don't cause errors
m = curses.getmouse()
curses.ungetmouse(*m)
def unit_tests(): def unit_tests():
from curses import ascii from curses import ascii
......
...@@ -552,6 +552,7 @@ Kirill Simonov ...@@ -552,6 +552,7 @@ Kirill Simonov
Nathan Paul Simons Nathan Paul Simons
Janne Sinkkonen Janne Sinkkonen
George Sipe George Sipe
J. Sipprell
Kragen Sitaker Kragen Sitaker
Christopher Smith Christopher Smith
Gregory P. Smith Gregory P. Smith
......
...@@ -216,6 +216,10 @@ Core and builtins ...@@ -216,6 +216,10 @@ Core and builtins
Extension Modules Extension Modules
----------------- -----------------
- Bug #1400822, _curses over{lay,write} doesn't work when passing 6 ints.
Also fix ungetmouse() which did not accept arguments properly.
The code now conforms to the documented signature.
- Bug #1400115, Fix segfault when calling curses.panel.userptr() - Bug #1400115, Fix segfault when calling curses.panel.userptr()
without prior setting of the userptr. without prior setting of the userptr.
......
...@@ -1163,7 +1163,7 @@ PyCursesWindow_Overlay(PyCursesWindowObject *self, PyObject *args) ...@@ -1163,7 +1163,7 @@ PyCursesWindow_Overlay(PyCursesWindowObject *self, PyObject *args)
return NULL; return NULL;
break; break;
case 7: case 7:
if (!PyArg_ParseTuple(args, "(O!iiiiii);window object, int, int, int, int, int, int", if (!PyArg_ParseTuple(args, "O!iiiiii;window object, int, int, int, int, int, int",
&PyCursesWindow_Type, &temp, &sminrow, &smincol, &PyCursesWindow_Type, &temp, &sminrow, &smincol,
&dminrow, &dmincol, &dmaxrow, &dmaxcol)) &dminrow, &dmincol, &dmaxrow, &dmaxcol))
return NULL; return NULL;
...@@ -1201,7 +1201,7 @@ PyCursesWindow_Overwrite(PyCursesWindowObject *self, PyObject *args) ...@@ -1201,7 +1201,7 @@ PyCursesWindow_Overwrite(PyCursesWindowObject *self, PyObject *args)
return NULL; return NULL;
break; break;
case 7: case 7:
if (!PyArg_ParseTuple(args, "(O!iiiiii);window object, int, int, int, int, int, int", if (!PyArg_ParseTuple(args, "O!iiiiii;window object, int, int, int, int, int, int",
&PyCursesWindow_Type, &temp, &sminrow, &smincol, &PyCursesWindow_Type, &temp, &sminrow, &smincol,
&dminrow, &dmincol, &dmaxrow, &dmaxcol)) &dminrow, &dmincol, &dmaxrow, &dmaxcol))
return NULL; return NULL;
...@@ -1674,7 +1674,7 @@ PyCurses_UngetMouse(PyObject *self, PyObject *args) ...@@ -1674,7 +1674,7 @@ PyCurses_UngetMouse(PyObject *self, PyObject *args)
MEVENT event; MEVENT event;
PyCursesInitialised PyCursesInitialised
if (!PyArg_ParseTuple(args, "(hiiil)", if (!PyArg_ParseTuple(args, "hiiil",
&event.id, &event.id,
&event.x, &event.y, &event.z, &event.x, &event.y, &event.z,
(int *) &event.bstate)) (int *) &event.bstate))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment