diff --git a/Lib/stdwin/Buttons.py b/Lib/stdwin/Buttons.py
index d991c96..a218a99 100755
--- a/Lib/stdwin/Buttons.py
+++ b/Lib/stdwin/Buttons.py
@@ -35,12 +35,10 @@
 	#
 	# Size enquiry
 	#
-	def minsize(self, m):
-		try:
-			self.text = self.text
-		except NameError:
-			self.text = ''
-		return m.textwidth(self.text) + 6, m.lineheight() + 6
+	def getminsize(self, (m, (width, height))):
+		width = max(width, m.textwidth(self.text) + 6)
+		height = max(height, m.lineheight() + 6)
+		return width, height
 	#
 	def getbounds(self):
 		return self.bounds
@@ -143,6 +141,16 @@
 		d.invert(self.hilitebounds)
 
 
+# A Strut is a label with no width of its own.
+
+class StrutAppearance() = LabelAppearance():
+	#
+	def getminsize(self, (m, (width, height))):
+		height = max(height, m.lineheight() + 6)
+		return width, height
+	#
+
+
 # ButtonAppearance displays a centered string in a box.
 # selected --> bold border
 # disabled --> crossed out
@@ -167,9 +175,12 @@
 #
 class CheckAppearance() = LabelAppearance():
 	#
-	def minsize(self, m):
-		width, height = m.textwidth(self.text) + 6, m.lineheight() + 6
-		return width + height + m.textwidth(' '), height
+	def getminsize(self, (m, (width, height))):
+		minwidth = m.textwidth(self.text) + 6
+		minheight = m.lineheight() + 6
+		width = max(width, minwidth + minheight + m.textwidth(' '))
+		height = max(height, minheight)
+		return width, height
 	#
 	def drawpict(self, d):
 		d.box(self.boxbounds)
@@ -393,6 +404,7 @@
 # Ready-made button classes.
 #
 class Label() = NoReactivity(), LabelAppearance(), Define(): pass
+class Strut() = NoReactivity(), StrutAppearance(), Define(): pass
 class PushButton() = TriggerReactivity(), ButtonAppearance(), Define(): pass
 class CheckButton() = CheckReactivity(), CheckAppearance(), Define(): pass
 class RadioButton() = RadioReactivity(), RadioAppearance(), Define(): pass
