minsize --> getminsize.
Added keyboard downcalls.
(I mean keyboard focus policy and activate/deactivate)
diff --git a/Lib/lib-stdwin/Split.py b/Lib/lib-stdwin/Split.py
index 80e1e74..a5a6542 100644
--- a/Lib/lib-stdwin/Split.py
+++ b/Lib/lib-stdwin/Split.py
@@ -1,11 +1,12 @@
 # Generic Split implementation.
 # Use as a base class for other splits.
 # Derived classes should at least implement the methods that call
-# unimpl() below: minsize(), getbounds() and setbounds().
+# unimpl() below: getminsize(), getbounds() and setbounds().
 
 Error = 'Split.Error'	# Exception
 
 import rect
+from stdwinevents import *
 
 class Split():
 	#
@@ -20,7 +21,8 @@
 		self.keybd_interest = []
 		self.timer_interest = []
 		self.altdraw_interest = []
-		self.mouse_focus = 0
+		self.mouse_focus = None
+		self.keybd_focus = None
 		return self
 	#
 	# Downcalls from parent to child
@@ -35,10 +37,14 @@
 		del self.timer_interest[:]
 		del self.altdraw_interest[:]
 		self.mouse_focus = None
+		self.keybd_focus = None
 	#
-	def minsize(self, m): return unimpl()	# Should ask children
-	def getbounds(self): return unimpl()
-	def setbounds(self, bounds): unimpl()	# Should tell children
+	def getminsize(self, (m, (width, height))):
+		return unimpl()			# Should ask children
+	def getbounds(self):
+		return unimpl()
+	def setbounds(self, bounds):
+		unimpl()			# Should tell children
 	#
 	def realize(self):
 		for child in self.children:
@@ -53,15 +59,41 @@
 		for child in self.altdraw_interest:
 			child.altdraw(detail)
 	#
+	# Keyboard focus handling (used internally)
+	# XXX This is not enough if two levels of splits
+	# XXX surround text fields!
+	#
+	def set_keybd_focus(self, child):
+		if self.keybd_focus <> child:
+			if self.keybd_focus:
+				self.keybd_focus.deactivate()
+				self.keybd_focus = None
+			if child:
+				child.activate()
+				self.keybd_focus = child
+	def next_keybd_focus(self):
+		if not self.keybd_interest:
+			self.set_keybd_focus(None)
+			return
+		if self.keybd_focus in self.keybd_interest:
+			i = self.keybd_interest.index(self.keybd_focus)
+			i = (i+1) % len(self.keybd_interest)
+		else:
+			i = 0
+		self.set_keybd_focus(self.keybd_interest[i])
+	#
 	# Downcalls only made after certain upcalls
 	#
 	def mouse_down(self, detail):
 		if self.mouse_focus:
 			self.mouse_focus.mouse_down(detail)
+			return
 		p = detail[0]
 		for child in self.mouse_interest:
 			if rect.pointinrect(p, child.getbounds()):
 				self.mouse_focus = child
+				if child in self.keybd_interest:
+					self.set_keybd_focus(child)
 				child.mouse_down(detail)
 	def mouse_move(self, detail):
 		if self.mouse_focus:
@@ -69,11 +101,26 @@
 	def mouse_up(self, detail):
 		if self.mouse_focus:
 			self.mouse_focus.mouse_up(detail)
-			self.mouse_focus = 0
+			self.mouse_focus = None
+	#
+	def activate(self):
+		if self.keybd_focus:
+			self.keybd_focus.activate()
+		else:
+			self.next_keybd_focus()
+	def deactivate(self):
+		if self.keybd_focus:
+			self.keybd_focus.deactivate()
 	#
 	def keybd(self, type_detail):
-		for child in self.keybd_interest:
-			child.keybd(type_detail)
+		if not self.keybd_focus:
+			self.set_keybd_focus(self.keybd_interest[0])
+		type, detail = type_detail
+		if type = WE_COMMAND and detail = WC_TAB and \
+					len(self.keybd_interest) > 1:
+			self.next_keybd_focus()
+			return
+		self.keybd_focus.keybd(type_detail)
 	#
 	def timer(self):
 		for child in self.timer_interest:
@@ -98,13 +145,17 @@
 		if child in self.altdraw_interest:
 			self.altdraw_interest.remove(child)
 		if child = self.mouse_focus:
-			self.mouse_focus = 0
+			self.mouse_focus = None
+		if child = self.keybd_focus:
+			self.keybd_focus = None
 	#
 	def need_mouse(self, child):
 		if child not in self.mouse_interest:
 			self.mouse_interest.append(child)
 			self.parent.need_mouse(self)
 	def no_mouse(self, child):
+		if child = self.mouse_focus:
+			self.mouse_focus = None
 		if child in self.mouse_interest:
 			self.mouse_interest.remove(child)
 			if not self.mouse_interest:
@@ -114,7 +165,11 @@
 		if child not in self.keybd_interest:
 			self.keybd_interest.append(child)
 			self.parent.need_keybd(self)
+		if not self.keybd_focus:
+			self.set_keybd_focus(child)
 	def no_keybd(self, child):
+		if child = self.keybd_focus:
+			self.keybd_focus = None # Don't call child.deactivate()
 		if child in self.keybd_interest:
 			self.keybd_interest.remove(child)
 			if not self.keybd_interest: