39 """Resize buffer when window gets resized.""" |
39 """Resize buffer when window gets resized.""" |
40 Container.resize(self, w, h) |
40 Container.resize(self, w, h) |
41 self.buffer.resize(w, h) |
41 self.buffer.resize(w, h) |
42 self.redraw() |
42 self.redraw() |
43 |
43 |
44 def redraw(self): |
44 def draw_content_if_needed(self): |
45 self.buffer.reset_origin() |
45 """Draw window contents into its own buffer.""" |
46 Container.draw(self, self.buffer) |
46 buffer = self.buffer |
47 # self.buffer.puts('{0.w} {0.h}'.format(self.size), 10, 5) |
47 buffer.reset_origin() |
48 # self.buffer.frame() |
48 for child in self._widgets: |
|
49 with buffer.moved_origin(child.x, child.y): |
|
50 with buffer.clip(buffer.origin.x, buffer.origin.y, |
|
51 child.width, child.height): |
|
52 child.draw_if_needed(buffer) |
|
53 |
|
54 def draw_if_needed(self, buffer): |
|
55 """Refresh window content and draw it into `buffer` if required.""" |
|
56 self.draw_content_if_needed() |
|
57 # Draw window unconditionally (for now) |
|
58 self.draw(buffer) |
49 |
59 |
50 def draw(self, buffer): |
60 def draw(self, buffer): |
51 """Draw this window into `buffer`.""" |
61 """Draw window buffer into given`buffer`.""" |
52 self.redraw() |
|
53 buffer.draw(self.buffer) |
62 buffer.draw(self.buffer) |
54 |
63 |
55 |
64 |
56 class WindowManager(Container): |
65 class WindowManager(Container): |
57 |
66 |