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(eventOn, self.set, [name, 1])
self.accept(eventOff, self.set, [name, 0]) self.accept(eventOff, self.set, [name, 0])
self.state[name] = default 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): def force(self, name, value):
""" """
@ -64,7 +71,8 @@ class InputState(DirectObject.DirectObject):
The opposite of watch(name, ...) The opposite of watch(name, ...)
See Also: watch() See Also: watch()
""" """
eventOn, eventOff = self.watching[name] for event in self.watching[name]:
eventOn, eventOff = event
DirectObject.DirectObject.ignore(self, eventOn) DirectObject.DirectObject.ignore(self, eventOn)
DirectObject.DirectObject.ignore(self, eventOff) DirectObject.DirectObject.ignore(self, eventOff)
del self.watching[name] del self.watching[name]