diff options
Diffstat (limited to 'Lib/stdwin/stdwinq.py')
-rwxr-xr-x | Lib/stdwin/stdwinq.py | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/Lib/stdwin/stdwinq.py b/Lib/stdwin/stdwinq.py new file mode 100755 index 0000000..af72986 --- /dev/null +++ b/Lib/stdwin/stdwinq.py @@ -0,0 +1,53 @@ +# Replacements for getevent() and pollevent(), +# and new functions ungetevent() and sync(). + + +# Every library module should ideally use this instead of +# stdwin.{get,poll}event(), so applications can use the services +# of ungetevent() and sync(). + + +import stdwin + + +# Events read ahead are stored in this queue. +# +queue = [] + + +# Replacement for getevent(). +# +def getevent(): + if queue: + event = queue[0] + del queue[0] + return event + else: + return stdwin.getevent() + + +# Replacement for pollevent(). +# +def pollevent(): + if queue: + return getevent() + else: + return stdwin.pollevent() + + +# Push an event back in the queue. +# +def ungetevent(event): + queue.insert(0, event) + + +# Synchronize the display. It turns out that this is the way to +# force STDWIN to call XSync(), which some (esoteric) applications need. +# (This is stronger than just flushing -- it actually waits for a +# positive response from the X server on the last command issued.) +# +def sync(): + while 1: + event = stdwin.pollevent() + if not event: break + queue.append(event) |