--- 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)