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)