better handling of watching events so ignore actually works

This commit is contained in:
Joe Shochet 2005-08-03 21:43:19 +00:00
parent 570a6faf71
commit 22374c375a

View File

@ -43,7 +43,14 @@ class InputState(DirectObject.DirectObject):
self.accept(eventOn, self.set, [name, 1])
self.accept(eventOff, self.set, [name, 0])
self.state[name] = default
self.watching[name] = (eventOn, eventOff)
# self.watching is a dict of the form:
# {name : [(eventOn, eventOff), (eventOn, eventOff)...]}
eventList = self.watching.get(name)
if eventList:
eventList.append((eventOn, eventOff))
else:
# Start a new list
self.watching[name] = [(eventOn, eventOff)]
def force(self, name, value):
"""
@ -64,9 +71,10 @@ class InputState(DirectObject.DirectObject):
The opposite of watch(name, ...)
See Also: watch()
"""
eventOn, eventOff = self.watching[name]
DirectObject.DirectObject.ignore(self, eventOn)
DirectObject.DirectObject.ignore(self, eventOff)
for event in self.watching[name]:
eventOn, eventOff = event
DirectObject.DirectObject.ignore(self, eventOn)
DirectObject.DirectObject.ignore(self, eventOff)
del self.watching[name]
del self.state[name]