# HG changeset patch # User Jeremy Thurgood # Date 1329227180 -7200 # Node ID 58d78038a19742d3506526868c17f6c7e9a35e5c # Parent c8b683dd56d3eb6fc32a7a109810b42e26e9b824 Better modal wrapping. diff -r c8b683dd56d3 -r 58d78038a197 pyntnclick/widgets/base.py --- 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)