# HG changeset patch # User Stefano Rivera # Date 1315751630 -7200 # Node ID 3cc917814579bc8fb139c3259785046fc7148949 # Parent 7fa000c4b3c7602253ad4937b44bdbfbd2e4059b Container subclasses Widget diff -r 7fa000c4b3c7 -r 3cc917814579 mamba/engine.py --- a/mamba/engine.py Sun Sep 11 16:21:36 2011 +0200 +++ b/mamba/engine.py Sun Sep 11 16:33:50 2011 +0200 @@ -39,7 +39,7 @@ def __init__(self): self.surface = pygame.Surface(SCREEN) - self.container = Container() + self.container = Container(pygame.Rect((0, 0), SCREEN)) def on_enter(self): """Called when this becomes the current habitat.""" diff -r 7fa000c4b3c7 -r 3cc917814579 mamba/widgets/base.py --- a/mamba/widgets/base.py Sun Sep 11 16:21:36 2011 +0200 +++ b/mamba/widgets/base.py Sun Sep 11 16:33:50 2011 +0200 @@ -16,28 +16,30 @@ def add_callback(self, eventtype, callback, *args): self.callbacks[eventtype].append((callback, args)) - def event(self, event): - for callback, args in self.callbacks[event.type]: - callback(event, self, *args) + def event(self, ev): + for callback, args in self.callbacks[ev.type]: + callback(ev, self, *args) def draw(self, surface): "Override me" pass -class Container(object): +class Container(Widget): - def __init__(self): + def __init__(self, rect): + super(Container, self).__init__(rect) self.children = [] - def event(self, event): - if event.type in (MOUSEMOTION, MOUSEBUTTONUP, MOUSEBUTTONDOWN): + def event(self, ev): + if ev.type in (MOUSEMOTION, MOUSEBUTTONUP, MOUSEBUTTONDOWN): for child in self.children: - if child.rect.collidepoint(event.pos): - child.event(event) - elif event.type == KEYDOWN: + if child.rect.collidepoint(ev.pos): + child.event(ev) + if ev.type == KEYDOWN: for child in self.children: - child.event(event) + child.event(ev) + super(Container, self).event(ev) def add(self, widget): self.children.append(widget)