tuikit/core/window.py
changeset 109 105b1affc3c2
parent 97 0c2e0c09ba5c
child 111 b055add74b18
--- a/tuikit/core/window.py	Fri Mar 28 19:58:59 2014 +0100
+++ b/tuikit/core/window.py	Wed Sep 03 19:08:21 2014 +0200
@@ -17,6 +17,8 @@
         """New buffer for the window will be created unless given existing
         `buffer` as parameter."""
         Container.__init__(self)
+        self.allow_focus = True
+        self.trap_focus = True
         self._buffer = None
         self.buffer = buffer or Buffer()
 
@@ -57,8 +59,16 @@
         Container.__init__(self)
         self.timer = timer
 
+    def draw(self, buffer):
+        Container.draw(self, buffer)
+        self.log.debug('%s has focus.', self.get_focused_widget().name)
+
     def resize(self, w, h):
-        self.children[0].resize(w, h)
+        self._widgets[0].resize(w, h)
+
+    def keypress(self, keyname, char, mod):
+        self.log.debug('keypress(%r, %r, %r)', keyname, char, mod)
+        return Container.keypress(self, keyname, char, mod)
 
     def handle_event(self, event_name, *args):
         """Handle input event to managed windows."""
@@ -67,3 +77,12 @@
             handler(*args)
         else:
             raise Exception('Unknown event: %r %r' % (event_name, args))
+
+    def get_focused_widget(self):
+        """Traverse the widget hierarchy to bottom
+        and return actually focused Widget."""
+        node = self
+        while isinstance(node, Container) and node.focus_widget:
+            node = node.focus_widget
+        return node
+