tuikit/core/window.py
changeset 119 dd91747504dd
parent 114 26c02bd94bd9
--- a/tuikit/core/window.py	Sat Feb 21 12:01:57 2015 +0100
+++ b/tuikit/core/window.py	Sun Feb 22 09:53:13 2015 +0100
@@ -41,15 +41,24 @@
         self.buffer.resize(w, h)
         self.redraw()
 
-    def redraw(self):
-        self.buffer.reset_origin()
-        Container.draw(self, self.buffer)
-#        self.buffer.puts('{0.w} {0.h}'.format(self.size), 10, 5)
-#        self.buffer.frame()
+    def draw_content_if_needed(self):
+        """Draw window contents into its own buffer."""
+        buffer = self.buffer
+        buffer.reset_origin()
+        for child in self._widgets:
+            with buffer.moved_origin(child.x, child.y):
+                with buffer.clip(buffer.origin.x, buffer.origin.y,
+                                 child.width, child.height):
+                    child.draw_if_needed(buffer)
+
+    def draw_if_needed(self, buffer):
+        """Refresh window content and draw it into `buffer` if required."""
+        self.draw_content_if_needed()
+        # Draw window unconditionally (for now)
+        self.draw(buffer)
 
     def draw(self, buffer):
-        """Draw this window into `buffer`."""
-        self.redraw()
+        """Draw window buffer into given`buffer`."""
         buffer.draw(self.buffer)