Mercurial > boomslang
changeset 694:58d78038a197 pyntnclick
Better modal wrapping.
author | Jeremy Thurgood <firxen@gmail.com> |
---|---|
date | Tue, 14 Feb 2012 15:46:20 +0200 |
parents | c8b683dd56d3 |
children | 20f65f716048 |
files | pyntnclick/widgets/base.py |
diffstat | 1 files changed, 11 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/pyntnclick/widgets/base.py Tue Feb 14 15:36:28 2012 +0200 +++ b/pyntnclick/widgets/base.py Tue Feb 14 15:46:20 2012 +0200 @@ -24,6 +24,9 @@ # To track which widget the mouse is over self.mouseover_widget = self + def set_parent(self, parent): + self.parent = parent + def add_callback(self, eventtype, callback, *args): self.callbacks[eventtype].append((callback, args)) @@ -117,13 +120,13 @@ return True def add(self, widget): - widget.parent = self + widget.set_parent(self) self.children.append(widget) self.rect = self.rect.union(widget.rect) return widget def remove(self, widget): - widget.parent = None + widget.set_parent(None) self.children.remove(widget) def remove_all(self): @@ -221,8 +224,14 @@ super(ModalWrapper, self).__init__(widget.rect, widget.gd) self.close_callback = close_callback self.add(widget) + self.add_callback(MOUSEBUTTONDOWN, self.close) widget.add_callback(MOUSEBUTTONDOWN, self.close) + def set_parent(self, parent): + super(ModalWrapper, self).set_parent(parent) + if parent: + self.rect = self.parent.rect + def close(self, ev, widget): if self.parent: self.parent.remove(self)