Mercurial > cpython-lru_cache-weakref
diff Modules/stdwinmodule.c @ 114:1efb8ed6afd3 legacy-trunk
Added pollevent(); returns None if no event available.
Don't throw away key events with no window.
| author | Guido van Rossum <guido@python.org> |
|---|---|
| date | Wed, 16 Jan 1991 14:06:18 +0000 |
| parents | a6934380c6e7 |
| children | 82ef94b8b902 |
line wrap: on
line diff
--- a/Modules/stdwinmodule.c Wed Jan 16 14:04:51 1991 +0000 +++ b/Modules/stdwinmodule.c Wed Jan 16 14:06:18 1991 +0000 @@ -1282,8 +1282,8 @@ } static object * -stdwin_getevent(sw, args) - object *sw; +stdwin_get_poll_event(poll, args) + int poll; object *args; { EVENT e; @@ -1294,15 +1294,24 @@ err_setstr(RuntimeError, "cannot getevent() while drawing"); return NULL; } - again: - wgetevent(&e); +/* again: */ + if (poll) { + if (!wpollevent(&e)) { + INCREF(None); + return None; + } + } + else + wgetevent(&e); if (e.type == WE_COMMAND && e.u.command == WC_CANCEL) { /* Turn keyboard interrupts into exceptions */ err_set(KeyboardInterrupt); return NULL; } +/* if (e.window == NULL && (e.type == WE_COMMAND || e.type == WE_CHAR)) goto again; +*/ if (e.type == WE_COMMAND && e.u.command == WC_CLOSE) { /* Turn WC_CLOSE commands into WE_CLOSE events */ e.type = WE_CLOSE; @@ -1323,11 +1332,15 @@ w = None; else w = (object *)windowlist[tag]; +#ifdef sgi + /* XXX Trap for unexplained weird bug */ + if ((long)w == (long)0x80000001) { + err_setstr(SystemError, + "bad pointer in stdwin.getevent()"); + return NULL; + } +#endif } -if ((long)w == (long)0x80000001) { -err_setstr(SystemError, "bad pointer in stdwin.getevent()"); -return NULL; -} INCREF(w); settupleitem(v, 1, w); switch (e.type) { @@ -1378,6 +1391,22 @@ } static object * +stdwin_getevent(sw, args) + object *sw; + object *args; +{ + return stdwin_get_poll_event(0, args); +} + +static object * +stdwin_pollevent(sw, args) + object *sw; + object *args; +{ + return stdwin_get_poll_event(1, args); +} + +static object * stdwin_setdefwinpos(sw, args) object *sw; object *args; @@ -1584,6 +1613,7 @@ {"menucreate", stdwin_menucreate}, {"message", stdwin_message}, {"open", stdwin_open}, + {"pollevent", stdwin_pollevent}, {"resetselection", stdwin_resetselection}, {"rotatecutbuffers", stdwin_rotatecutbuffers}, {"setcutbuffer", stdwin_setcutbuffer},
