computeLabelSize refactorings
authorClaus Gittinger <cg@exept.de>
Wed, 21 Oct 2009 16:24:28 +0200
changeset 3998 39508f0084af
parent 3997 319d830f9fe2
child 3999 f605cc13731e
computeLabelSize refactorings
PopUpList.st
--- a/PopUpList.st	Wed Oct 21 16:24:26 2009 +0200
+++ b/PopUpList.st	Wed Oct 21 16:24:28 2009 +0200
@@ -922,52 +922,6 @@
 
 !PopUpList methodsFor:'private'!
 
-computeLabelSize
-    "compute the extent needed to hold the label plus the mark"
-
-    |mmH mmV savedLogo longest longestWidth labels|
-
-    (menu isNil 
-    or:[adjust == #right
-    or:[adjust == #center]]) ifTrue:[
-        super computeLabelSize
-    ] ifFalse:[
-        "hack: simulate logo change to longest menu entry"
-
-        font := font onDevice:device.
-        longest := logo.
-        logo isNil ifTrue:[
-            longestWidth := 0
-        ] ifFalse:[
-            longestWidth := font widthOf:logo.
-        ].
-        labels := menu value labels.
-        labels notNil ifTrue:[
-            labels do:[:entry |
-                |this|
-
-                this := font widthOf:entry printString.
-                this > longestWidth ifTrue:[
-                    longest := entry.
-                    longestWidth := this
-                ].
-            ].
-        ].
-        savedLogo := logo.
-        logo := longest printString.
-        super computeLabelSize.
-        logo := savedLogo.
-    ].
-    showHandle ifTrue:[
-        mmH := device horizontalPixelPerMillimeter.
-        mmV := device verticalPixelPerMillimeter.
-        labelWidth := labelWidth + hSpace + (mmH * 2.5) rounded + hSpace.
-        labelHeight := labelHeight max: (mmV * 2) rounded
-    ]
-
-    "Modified: / 6.3.1999 / 21:51:14 / cg"
-!
-
 createMenuFor:aList
     |index|
 
@@ -1049,6 +1003,52 @@
     ].
 
     "Modified: / 18.6.1998 / 23:54:34 / cg"
+!
+
+rawLabelSizeOf:aLogo
+    "compute the extent needed to hold the label plus the mark"
+
+    |ext mmH mmV longest longestWidth labels|
+
+    ext := super rawLabelSizeOf:aLogo.
+
+    (menu notNil 
+    and:[adjust ~~ #right
+    and:[adjust ~~ #center]]) ifTrue:[
+        "compute length of longest menu entry"
+
+        font := font onDevice:device.
+        longest := logo.
+        logo isNil ifTrue:[
+            longestWidth := 0
+        ] ifFalse:[
+            longestWidth := font widthOf:logo.
+        ].
+        labels := menu value labels.
+        labels notNil ifTrue:[
+            labels do:[:entry |
+                |this|
+
+                this := font widthOf:entry printString.
+                this > longestWidth ifTrue:[
+                    longest := entry.
+                    longestWidth := this
+                ].
+            ].
+        ].
+        ext := ext max:(super rawLabelSizeOf:(longest printString))
+    ].
+
+    showHandle ifTrue:[
+        mmH := device horizontalPixelPerMillimeter.
+        mmV := device verticalPixelPerMillimeter.
+        ^ (ext x + hSpace + (mmH * 2.5) rounded + hSpace)
+          @
+          (ext y max: (mmV * 2) rounded)
+    ].
+    ^ ext
+
+    "Modified: / 6.3.1999 / 21:51:14 / cg"
 ! !
 
 !PopUpList methodsFor:'private-controller access'!
@@ -1156,5 +1156,9 @@
 !PopUpList class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libwidg/PopUpList.st,v 1.80 2008-10-26 20:16:59 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libwidg/PopUpList.st,v 1.81 2009-10-21 14:24:28 cg Exp $'
+!
+
+version_CVS
+    ^ '$Header: /cvs/stx/stx/libwidg/PopUpList.st,v 1.81 2009-10-21 14:24:28 cg Exp $'
 ! !