.
authorclaus
Tue, 06 Jun 1995 06:16:07 +0200
changeset 130 338e856bddc9
parent 129 a0728fb8d54e
child 131 208fa92f434d
.
ArrButton.st
ArrowButton.st
Button.st
ButtonC.st
ButtonController.st
ChckTggle.st
CheckToggle.st
DialogBox.st
EFGroup.st
ETxtView.st
EditField.st
EditTextView.st
EnterBox.st
EnterFieldGroup.st
FSelBox.st
FileSelectionBox.st
FontPanel.st
FramedBox.st
HMiniScr.st
HPanelV.st
HScrBar.st
HScroller.st
HVScrView.st
HVScrollableView.st
HorizontalMiniScroller.st
HorizontalPanelView.st
HorizontalScrollBar.st
HorizontalScroller.st
InfoBox.st
LSelBox.st
Label.st
ListSelectionBox.st
Make.proto
MenuView.st
MiniScr.st
MiniScroller.st
OptBox.st
OptionBox.st
PullDMenu.st
PullDownMenu.st
RButtGrp.st
RadioButtonGroup.st
ScrView.st
ScrollBar.st
ScrollableView.st
Scroller.st
SelListV.st
SelectionInListView.st
TextColl.st
TextCollector.st
Toggle.st
VPanelV.st
VarVPanel.st
VariableVerticalPanel.st
VerticalPanelView.st
YesNoBox.st
--- a/ArrButton.st	Fri May 19 18:41:01 1995 +0200
+++ b/ArrButton.st	Tue Jun 06 06:16:07 1995 +0200
@@ -29,7 +29,7 @@
 COPYRIGHT (c) 1993 by Claus Gittinger
 	      All Rights Reserved
 
-$Header: /cvs/stx/stx/libwidg/Attic/ArrButton.st,v 1.12 1995-05-17 12:24:24 claus Exp $
+$Header: /cvs/stx/stx/libwidg/Attic/ArrButton.st,v 1.13 1995-06-06 04:12:19 claus Exp $
 '!
 
 !ArrowButton class methodsFor:'documentation'!
@@ -50,7 +50,7 @@
 
 version
 "
-$Header: /cvs/stx/stx/libwidg/Attic/ArrButton.st,v 1.12 1995-05-17 12:24:24 claus Exp $
+$Header: /cvs/stx/stx/libwidg/Attic/ArrButton.st,v 1.13 1995-06-06 04:12:19 claus Exp $
 "
 !
 
@@ -77,6 +77,12 @@
 
 	arrowButtonEnteredForegroundColor           foregroundColor when mouse pointer entered
 	arrowButtonEnteredBackgroundColor           backgroundColor when mouse pointer entered
+
+    See examples.
+
+    See also: Button  Toggle  CheckToggle  CheckBox
+	      ScrollBar
+
 "
 !
 
@@ -216,7 +222,12 @@
      (i.e. they are computed instead of drawn from a bitmap)
     "
     style ~~ #st80 ifTrue:[
-	form := Form fromFile:UpArrowFormFile resolution:100 on:aDevice.
+	UpArrowFormFile notNil ifTrue:[
+	    form := Form fromFile:UpArrowFormFile resolution:100 on:aDevice.
+	    form isNil ifTrue:[
+		'ARRBUTTON: no bitmapFile: ' infoPrint. UpArrowFormFile infoPrintNL.
+	    ]
+	]
     ].
 
     "
@@ -290,7 +301,12 @@
      (i.e. they are computed instead of drawn from a bitmap)
     "
     style ~~ #st80 ifTrue:[
-	form := Form fromFile:DownArrowFormFile resolution:100 on:aDevice.
+	DownArrowFormFile notNil ifTrue:[
+	    form := Form fromFile:DownArrowFormFile resolution:100 on:aDevice.
+	    form isNil ifTrue:[
+		'ARRBUTTON: no bitmapFile: ' infoPrint. DownArrowFormFile infoPrintNL.
+	    ]
+	]
     ].
 
     "
@@ -363,7 +379,12 @@
      (i.e. they are computed instead of drawn from a bitmap)
     "
     style ~~ #st80 ifTrue:[
-	form := Form fromFile:LeftArrowFormFile resolution:100 on:aDevice.
+	LeftArrowFormFile notNil ifTrue:[
+	    form := Form fromFile:LeftArrowFormFile resolution:100 on:aDevice.
+	    form isNil ifTrue:[
+		'ARRBUTTON: no bitmapFile: ' infoPrint. LeftArrowFormFile infoPrintNL.
+	    ]
+	]
     ].
 
     "
@@ -436,7 +457,12 @@
      (i.e. they are computed instead of drawn from a bitmap)
     "
     style ~~ #st80 ifTrue:[
-	form := Form fromFile:RightArrowFormFile resolution:100 on:aDevice.
+	RightArrowFormFile notNil ifTrue:[
+	    form := Form fromFile:RightArrowFormFile resolution:100 on:aDevice.
+	    form isNil ifTrue:[
+		'ARRBUTTON: no bitmapFile: ' infoPrint. RightArrowFormFile infoPrintNL.
+	    ]
+	]
     ].
 
     "
--- a/ArrowButton.st	Fri May 19 18:41:01 1995 +0200
+++ b/ArrowButton.st	Tue Jun 06 06:16:07 1995 +0200
@@ -29,7 +29,7 @@
 COPYRIGHT (c) 1993 by Claus Gittinger
 	      All Rights Reserved
 
-$Header: /cvs/stx/stx/libwidg/ArrowButton.st,v 1.12 1995-05-17 12:24:24 claus Exp $
+$Header: /cvs/stx/stx/libwidg/ArrowButton.st,v 1.13 1995-06-06 04:12:19 claus Exp $
 '!
 
 !ArrowButton class methodsFor:'documentation'!
@@ -50,7 +50,7 @@
 
 version
 "
-$Header: /cvs/stx/stx/libwidg/ArrowButton.st,v 1.12 1995-05-17 12:24:24 claus Exp $
+$Header: /cvs/stx/stx/libwidg/ArrowButton.st,v 1.13 1995-06-06 04:12:19 claus Exp $
 "
 !
 
@@ -77,6 +77,12 @@
 
 	arrowButtonEnteredForegroundColor           foregroundColor when mouse pointer entered
 	arrowButtonEnteredBackgroundColor           backgroundColor when mouse pointer entered
+
+    See examples.
+
+    See also: Button  Toggle  CheckToggle  CheckBox
+	      ScrollBar
+
 "
 !
 
@@ -216,7 +222,12 @@
      (i.e. they are computed instead of drawn from a bitmap)
     "
     style ~~ #st80 ifTrue:[
-	form := Form fromFile:UpArrowFormFile resolution:100 on:aDevice.
+	UpArrowFormFile notNil ifTrue:[
+	    form := Form fromFile:UpArrowFormFile resolution:100 on:aDevice.
+	    form isNil ifTrue:[
+		'ARRBUTTON: no bitmapFile: ' infoPrint. UpArrowFormFile infoPrintNL.
+	    ]
+	]
     ].
 
     "
@@ -290,7 +301,12 @@
      (i.e. they are computed instead of drawn from a bitmap)
     "
     style ~~ #st80 ifTrue:[
-	form := Form fromFile:DownArrowFormFile resolution:100 on:aDevice.
+	DownArrowFormFile notNil ifTrue:[
+	    form := Form fromFile:DownArrowFormFile resolution:100 on:aDevice.
+	    form isNil ifTrue:[
+		'ARRBUTTON: no bitmapFile: ' infoPrint. DownArrowFormFile infoPrintNL.
+	    ]
+	]
     ].
 
     "
@@ -363,7 +379,12 @@
      (i.e. they are computed instead of drawn from a bitmap)
     "
     style ~~ #st80 ifTrue:[
-	form := Form fromFile:LeftArrowFormFile resolution:100 on:aDevice.
+	LeftArrowFormFile notNil ifTrue:[
+	    form := Form fromFile:LeftArrowFormFile resolution:100 on:aDevice.
+	    form isNil ifTrue:[
+		'ARRBUTTON: no bitmapFile: ' infoPrint. LeftArrowFormFile infoPrintNL.
+	    ]
+	]
     ].
 
     "
@@ -436,7 +457,12 @@
      (i.e. they are computed instead of drawn from a bitmap)
     "
     style ~~ #st80 ifTrue:[
-	form := Form fromFile:RightArrowFormFile resolution:100 on:aDevice.
+	RightArrowFormFile notNil ifTrue:[
+	    form := Form fromFile:RightArrowFormFile resolution:100 on:aDevice.
+	    form isNil ifTrue:[
+		'ARRBUTTON: no bitmapFile: ' infoPrint. RightArrowFormFile infoPrintNL.
+	    ]
+	]
     ].
 
     "
--- a/Button.st	Fri May 19 18:41:01 1995 +0200
+++ b/Button.st	Tue Jun 06 06:16:07 1995 +0200
@@ -39,7 +39,7 @@
 COPYRIGHT (c) 1989 by Claus Gittinger
 	      All Rights Reserved
 
-$Header: /cvs/stx/stx/libwidg/Button.st,v 1.23 1995-05-17 12:24:30 claus Exp $
+$Header: /cvs/stx/stx/libwidg/Button.st,v 1.24 1995-06-06 04:12:27 claus Exp $
 '!
 
 !Button class methodsFor:'documentation'!
@@ -60,7 +60,7 @@
 
 version
 "
-$Header: /cvs/stx/stx/libwidg/Button.st,v 1.23 1995-05-17 12:24:30 claus Exp $
+$Header: /cvs/stx/stx/libwidg/Button.st,v 1.24 1995-06-06 04:12:27 claus Exp $
 "
 !
 
@@ -152,6 +152,10 @@
 
       buttonReturnButtonHasImage    <Boolean> if true, return-buttons draw a return-key image
       buttonReturnButtonHasBorder   <Boolean> if true, return-buttons show a border
+
+    See examples.
+
+    See also: Toggle  CheckToggle  CheckBox
 "
 !
 
@@ -180,6 +184,9 @@
     button panels are usually not a good GUI design;
     they will attract the users attention - possibly to things
     which are not worth it.
+    Finally, if you use fancy colors, always thing of those without
+    color displays - the styleSheet allows those people to adjust things,
+    while hard-coded colors cannot be fixed without changing the code.
 
     default settings:
 
@@ -319,7 +326,25 @@
       top extent:100@100.
 
       b := Button in:top.
-      b passiveLogo:(Image fromFile:'bitmaps/SmalltalkX.xbm').
+      b logo:(Image fromFile:'bitmaps/SmalltalkX.xbm').
+      b action:[Transcript flash].
+      b foregroundColor:(Color red:0 green:80 blue:20) darkened.
+      b backgroundColor:(Color grey:10).
+      b enteredForegroundColor:(Color red).
+      b activeForegroundColor:(Color red).
+      b activeBackgroundColor:(Color grey:10).
+      top open.
+
+
+    more playing with colors:
+
+      |top b|
+
+      top := StandardSystemView new.
+      top extent:100@100.
+
+      b := Button in:top.
+      b logo:(Image fromFile:'bitmaps/SmalltalkX.xbm').
       b action:[Transcript flash].
       b foregroundColor:(Color red:0 green:80 blue:20) darkened.
       b backgroundColor:(Color grey:10).
@@ -330,8 +355,9 @@
 
 
     fire on press (buttons in scrollbars do this, while normal buttons
-    fire on release, to give the user a chance to change her mind
-    and leave the button):
+    fire on release.
+    (to give the user a chance to change her mind
+     and leave the button, you should not change the default behavior):
 
       |top b|
 
@@ -404,11 +430,11 @@
       |adaptor1 adaptor2 b panel top|
 
       adaptor1 := PluggableAdaptor new 
-			getBlock:[:m | true] 
+			getBlock:[:m | false] 
 			putBlock:[:m :v | Transcript show:'eat: '; showCr:v]
 			updateBlock:nil.
       adaptor2 := PluggableAdaptor new 
-			getBlock:[:m | true] 
+			getBlock:[:m | false] 
 			putBlock:[:m :v | Transcript show:'drink: '; showCr:v]
 			updateBlock:nil.
 
@@ -418,10 +444,10 @@
       panel := HorizontalPanelView 
 		origin:0.0 @ 0.0 corner:1.0 @ 50 in:top.
 
-      b := Toggle label:'eat me' in:panel.
+      b := Button label:'eat me' in:panel.
       b model:adaptor1.
 
-      b := Toggle label:'drink me' in:panel.
+      b := Button label:'drink me' in:panel.
       b model:adaptor2.
 
       top open.
@@ -437,16 +463,17 @@
       panel := HorizontalPanelView 
 		origin:0.0 @ 0.0 corner:1.0 @ 50 in:top.
 
-      b := Toggle label:'eat me' in:panel.
+      b := Button label:'eat me' in:panel.
       b action:[:v | Transcript show:'eat: '; showCr:v].
 
-      b := Toggle label:'drink me' in:panel.
+      b := Button label:'drink me' in:panel.
       b action:[:v | Transcript show:'drink: '; showCr:v].
 
       top open.
 
 
-    (using a plug to simulate a complex model ...)
+    accessing multiple aspects of a complex model
+    (using a plug here to simulate that model ...)
 
       |myModel b panel top|
 
@@ -471,6 +498,41 @@
       top open.
 
 
+    aquiring the label from the model
+    (this functionality is inherited from Label)
+
+      |myModel b panel top currentLabel|
+
+      currentLabel := 'foo'.
+
+      myModel := Plug new.
+      myModel respondTo:#getLabel with:[currentLabel].
+      myModel respondTo:#b0Pressed with:[].
+      myModel respondTo:#b1Pressed with:[currentLabel := 'bar'.
+					 myModel changed:#labelAspect].
+      myModel respondTo:#b2Pressed with:[currentLabel := 'foo'.
+					 myModel changed:#labelAspect].
+
+      top := StandardSystemView new.
+      top extent:300@100.
+
+      panel := HorizontalPanelView 
+		origin:0.0 @ 0.0  
+		corner:1.0 @ 50
+		in:top.
+
+      b := Button label:'press me' in:panel.
+      b model:myModel; change:#b0Pressed; 
+	labelMessage:#getLabel; aspect:#labelAspect.
+
+      b := Button label:'press for bar' in:panel.
+      b model:myModel; change:#b1Pressed.
+
+      b := Button label:'press for foo' in:panel.
+      b model:myModel; change:#b2Pressed.
+
+      top open.
+
     see 'doc/coding-examples' and 'doc/misc/quick_view_intro.doc' 
     for more variations on this theme.
 "
@@ -478,17 +540,6 @@
 
 !Button class methodsFor:'defaults'!
 
-XXdefaultAspectSymbol
-    "in contrast to labels, by default, Buttons do not react on changes 
-     in the model (i.e. the buttons label stays constant).
-     However, if you set the aspectSymbol, it will ...
-     This has been done since most buttons have a constant label and therefore
-     there is no need to define a corresponding method in the model for return
-     of a label string"
-
-    ^ nil
-!
-
 updateStyleCache
     |defaultLevel|
 
@@ -757,7 +808,7 @@
      actually, the stuf below should not be needed
      - the styleSheet should provide values for nonGreyscale displays too
     "
-    nm := StyleSheet name asSymbol.
+    nm := styleSheet name.
     (nm == #iris) ifTrue:[
 	hasGreyscales ifTrue:[
 	    DefaultEnteredBackgroundColor isNil ifTrue:[
@@ -815,7 +866,7 @@
     ].
 
     DefaultReturnButtonHasImage ifTrue:[
-	(StyleSheet is3D and:[hasGreyscales]) ifTrue:[
+	(styleSheet is3D and:[hasGreyscales]) ifTrue:[
 	    shadowForm := self class returnShadowFormOn:device.
 	    lightForm := self class returnLightFormOn:device.
 	    formColor := viewBackground.
@@ -869,7 +920,7 @@
 is3D
     "return true, if the receiver is a 3D style view"
 
-    StyleSheet name == #mswindows ifTrue:[^ true].
+    styleSheet name == #mswindows ifTrue:[^ true].
     ^ super is3D
 !
 
@@ -1147,8 +1198,8 @@
 
 !Button methodsFor:'queries'!
 
-preferedExtent
-    "return my prefered extent - this is the minimum size I would like to have"
+preferredExtent
+    "return my preferred extent - this is the minimum size I would like to have"
 
     |extra|
 
@@ -1161,7 +1212,7 @@
 	^ (labelWidth + extra) @ (labelHeight + extra)
     ].
 
-    ^ super preferedExtent
+    ^ super preferredExtent
 ! !
 
 !Button methodsFor:'private'!
@@ -1198,7 +1249,7 @@
 	self computeLabelOrigin.
 	(relativeExtent isNil and:[extentRule isNil]) ifTrue:[
 	    extra := (onLevel abs max:offLevel abs) * 2.
-	    StyleSheet is3D ifFalse:[
+	    styleSheet is3D ifFalse:[
 "/                (logo isKindOf:Form) ifFalse:[
 		    "add space for a rectangle around"
 		    extra := extra + 2
@@ -1281,7 +1332,7 @@
 
 	formShadowColor isNil ifTrue:[
 	    self paint:fg on:bg.
-	    self background:bg.
+"/            self background:bg.
 	    self displayOpaqueForm:shadowForm x:x y:y.
 	    ^ self
 	].
--- a/ButtonC.st	Fri May 19 18:41:01 1995 +0200
+++ b/ButtonC.st	Tue Jun 06 06:16:07 1995 +0200
@@ -39,7 +39,7 @@
 
 version
 "
-$Header: /cvs/stx/stx/libwidg/Attic/ButtonC.st,v 1.10 1995-05-17 12:24:35 claus Exp $
+$Header: /cvs/stx/stx/libwidg/Attic/ButtonC.st,v 1.11 1995-06-06 04:12:33 claus Exp $
 "
 !
 
@@ -285,7 +285,7 @@
 		 force output - so that button is drawn correctly in case
 		 of any long-computation (at high priority)
 		"
-		view device synchronizeOutput.
+		view device flush.
 	    ].
 
 	    self performAction.
@@ -330,7 +330,7 @@
 		     force output - so that button is drawn correctly in case
 		     of any long-computation (at high priority)
 		    "
-		    view device synchronizeOutput.
+		    view device flush.
 		].
 
 		self performAction.
--- a/ButtonController.st	Fri May 19 18:41:01 1995 +0200
+++ b/ButtonController.st	Tue Jun 06 06:16:07 1995 +0200
@@ -39,7 +39,7 @@
 
 version
 "
-$Header: /cvs/stx/stx/libwidg/ButtonController.st,v 1.10 1995-05-17 12:24:35 claus Exp $
+$Header: /cvs/stx/stx/libwidg/ButtonController.st,v 1.11 1995-06-06 04:12:33 claus Exp $
 "
 !
 
@@ -285,7 +285,7 @@
 		 force output - so that button is drawn correctly in case
 		 of any long-computation (at high priority)
 		"
-		view device synchronizeOutput.
+		view device flush.
 	    ].
 
 	    self performAction.
@@ -330,7 +330,7 @@
 		     force output - so that button is drawn correctly in case
 		     of any long-computation (at high priority)
 		    "
-		    view device synchronizeOutput.
+		    view device flush.
 		].
 
 		self performAction.
--- a/ChckTggle.st	Fri May 19 18:41:01 1995 +0200
+++ b/ChckTggle.st	Tue Jun 06 06:16:07 1995 +0200
@@ -12,7 +12,11 @@
 
 Toggle subclass:#CheckToggle
 	 instanceVariableNames:''
-	 classVariableNames:'DefaultCheckForm'
+	 classVariableNames:'DefaultCheckForm 
+			     DefaultCheckColor 
+			     DefaultActiveBGColor DefaultBGColor
+			     DefaultActiveLevel DefaultPassiveLevel
+			     DefaultBorderWidth'
 	 poolDictionaries:''
 	 category:'Views-Interactors'
 !
@@ -21,7 +25,7 @@
 COPYRIGHT (c) 1991 by Claus Gittinger
 	      All Rights Reserved
 
-$Header: /cvs/stx/stx/libwidg/Attic/ChckTggle.st,v 1.10 1995-05-17 12:24:38 claus Exp $
+$Header: /cvs/stx/stx/libwidg/Attic/ChckTggle.st,v 1.11 1995-06-06 04:12:38 claus Exp $
 '!
 
 !CheckToggle class methodsFor:'documentation'!
@@ -42,7 +46,7 @@
 
 version
 "
-$Header: /cvs/stx/stx/libwidg/Attic/ChckTggle.st,v 1.10 1995-05-17 12:24:38 claus Exp $
+$Header: /cvs/stx/stx/libwidg/Attic/ChckTggle.st,v 1.11 1995-06-06 04:12:38 claus Exp $
 "
 !
 
@@ -52,6 +56,30 @@
     However, they show an ok-marker if on; nothing if off.
     CheckButtons are mostly used as part of a checkBox (since normally,
     you want to have some label along the check)
+
+    StyleSheet values:
+
+	checkToggleCheckColor   <Color>         color to draw check-image with.
+						defaults to value of #buttonActiveForegroundColor.
+
+	checkToggleActiveBackgroundColor
+				<Color>         default to value of #buttonActiveBackgroundColor
+	checkToggleBackgroundColor
+				<Color>         default to value of #buttonBackgroundColor
+
+	checkToggleBitmapFile   <String>        name of bitmap file for check-image
+
+	checkToggleStyle        <Symbol>        default checkForm style.
+						used if above is nil or file not readable
+						can be #cross or #check; defaults to #check 
+
+	checkToggleAvtiveLevel  <Number>        active level - defaults to value of #buttonPassiveLevel
+	checkTogglePassiveLevel <Number>        active level - defaults to value of #buttonPassiveLevel
+	checkToggleBorderWidth  <Number>        borderWidth - defaults buttons default
+
+    See examples.
+
+    See also: CheckBox  RadioButton  RadiouButtonGroup
 "
 !
 
@@ -136,6 +164,27 @@
 	Transcript showCr:'  read -> ' , readFlag printString.
 	Transcript showCr:'  write -> ' , writeFlag printString.
 	Transcript showCr:'  execute -> ' , executeFlag printString.
+
+
+    checkToggles in a group
+
+	|top panel check1 check2 check3 grp|
+
+	top := StandardSystemView new.
+	top extent:200@300.
+
+	panel := VerticalPanelView origin:0.0@0.0 corner:1.0@1.0 in:top.
+
+	check1 := CheckToggle in:panel.
+	check2 := CheckToggle in:panel.
+	check3 := CheckToggle in:panel.
+
+	grp := RadioButtonGroup new.
+	grp add:check1.
+	grp add:check2.
+	grp add:check3.
+
+	top open
 "
 ! !
 
@@ -144,12 +193,20 @@
 updateStyleCache
     |checkFileName bits|
 
+    DefaultCheckColor := StyleSheet colorAt:'checkToggleCheckColor'.
+    DefaultBGColor := StyleSheet colorAt:'checkToggleBackgroundColor'.
+    DefaultActiveBGColor := StyleSheet colorAt:'checkToggleActiveBackgroundColor'.
+    DefaultActiveLevel := StyleSheet at:'checkToggleActiveLevel'.
+    DefaultPassiveLevel := StyleSheet at:'checkTogglePassiveLevel'.
+    DefaultBorderWidth := StyleSheet at:'checkToggleBorderWidth'.
+
     checkFileName := StyleSheet at:'checkToggleBitmapFile' default:'CheckOn.xbm'.
     checkFileName notNil ifTrue:[
 	DefaultCheckForm := Form fromFile:checkFileName 
 			       resolution:100
 				       on:Display.
-    ] ifFalse:[
+    ].
+    DefaultCheckForm isNil ifTrue:[
 	(StyleSheet at:'checkToggleStyle' default:#check) == #cross ifTrue:[
 	    bits := #[2r10000000 2r00000001
 		      2r01000000 2r00000010
@@ -177,12 +234,12 @@
 		      2r00000000 2r00001000
 		      2r00000000 2r00001000
 		      2r00000000 2r00010000
-		      2r01000000 2r00010000
-		      2r00100000 2r00100000
-		      2r00010000 2r00100000
-		      2r00001000 2r01000000
-		      2r00000100 2r01000000
-		      2r00000010 2r10000000
+		      2r01000000 2r00110000
+		      2r00100000 2r01100000
+		      2r00011000 2r01100000
+		      2r00001110 2r11000000
+		      2r00000111 2r11000000
+		      2r00000011 2r10000000
 		      2r00000001 2r10000000
 		      2r00000000 2r00000000]
 	].
@@ -191,7 +248,9 @@
 !
 
 checkFormOn:aDevice
-    "return the form used when checkToggle is turned on"
+    "return the form used when checkToggle is turned on.
+     Provided as public entry, to allow other views
+     to share the same check-image."
 
     ^ DefaultCheckForm on:aDevice.
 ! !
@@ -205,19 +264,26 @@
 !
 
 initStyle
+    |clr|
+
     super initStyle.
 
     onLevel := offLevel.
+    DefaultActiveLevel notNil ifTrue:[onLevel := DefaultActiveLevel].
+    DefaultPassiveLevel notNil ifTrue:[onLevel := DefaultPassiveLevel].
+
     activeLogo := DefaultCheckForm on:device.
     passiveLogo := nil.
 
-    self activeForegroundColor:(StyleSheet at:'checkToggleCheckColor' default:activeFgColor).
+    DefaultCheckColor notNil ifTrue:[self activeForegroundColor:DefaultCheckColor].
+    DefaultActiveBGColor notNil ifTrue:[self activeBackgroundColor:DefaultActiveBGColor].
+    DefaultBGColor notNil ifTrue:[self backgroundColor:DefaultBGColor].
+
     showLamp := false.
-    StyleSheet name == #mswindows ifTrue:[
-	self borderWidth:1; level:0.
-	onLevel := offLevel := 0.
-	activeBgColor := bgColor := Color white.
-    ]
+
+    DefaultBorderWidth notNil ifTrue:[self borderWidth:DefaultBorderWidth].
+
+    offLevel ~~ level ifTrue:[self level:offLevel].
 ! !
 
 !CheckToggle methodsFor:'redrawing'!
--- a/CheckToggle.st	Fri May 19 18:41:01 1995 +0200
+++ b/CheckToggle.st	Tue Jun 06 06:16:07 1995 +0200
@@ -12,7 +12,11 @@
 
 Toggle subclass:#CheckToggle
 	 instanceVariableNames:''
-	 classVariableNames:'DefaultCheckForm'
+	 classVariableNames:'DefaultCheckForm 
+			     DefaultCheckColor 
+			     DefaultActiveBGColor DefaultBGColor
+			     DefaultActiveLevel DefaultPassiveLevel
+			     DefaultBorderWidth'
 	 poolDictionaries:''
 	 category:'Views-Interactors'
 !
@@ -21,7 +25,7 @@
 COPYRIGHT (c) 1991 by Claus Gittinger
 	      All Rights Reserved
 
-$Header: /cvs/stx/stx/libwidg/CheckToggle.st,v 1.10 1995-05-17 12:24:38 claus Exp $
+$Header: /cvs/stx/stx/libwidg/CheckToggle.st,v 1.11 1995-06-06 04:12:38 claus Exp $
 '!
 
 !CheckToggle class methodsFor:'documentation'!
@@ -42,7 +46,7 @@
 
 version
 "
-$Header: /cvs/stx/stx/libwidg/CheckToggle.st,v 1.10 1995-05-17 12:24:38 claus Exp $
+$Header: /cvs/stx/stx/libwidg/CheckToggle.st,v 1.11 1995-06-06 04:12:38 claus Exp $
 "
 !
 
@@ -52,6 +56,30 @@
     However, they show an ok-marker if on; nothing if off.
     CheckButtons are mostly used as part of a checkBox (since normally,
     you want to have some label along the check)
+
+    StyleSheet values:
+
+	checkToggleCheckColor   <Color>         color to draw check-image with.
+						defaults to value of #buttonActiveForegroundColor.
+
+	checkToggleActiveBackgroundColor
+				<Color>         default to value of #buttonActiveBackgroundColor
+	checkToggleBackgroundColor
+				<Color>         default to value of #buttonBackgroundColor
+
+	checkToggleBitmapFile   <String>        name of bitmap file for check-image
+
+	checkToggleStyle        <Symbol>        default checkForm style.
+						used if above is nil or file not readable
+						can be #cross or #check; defaults to #check 
+
+	checkToggleAvtiveLevel  <Number>        active level - defaults to value of #buttonPassiveLevel
+	checkTogglePassiveLevel <Number>        active level - defaults to value of #buttonPassiveLevel
+	checkToggleBorderWidth  <Number>        borderWidth - defaults buttons default
+
+    See examples.
+
+    See also: CheckBox  RadioButton  RadiouButtonGroup
 "
 !
 
@@ -136,6 +164,27 @@
 	Transcript showCr:'  read -> ' , readFlag printString.
 	Transcript showCr:'  write -> ' , writeFlag printString.
 	Transcript showCr:'  execute -> ' , executeFlag printString.
+
+
+    checkToggles in a group
+
+	|top panel check1 check2 check3 grp|
+
+	top := StandardSystemView new.
+	top extent:200@300.
+
+	panel := VerticalPanelView origin:0.0@0.0 corner:1.0@1.0 in:top.
+
+	check1 := CheckToggle in:panel.
+	check2 := CheckToggle in:panel.
+	check3 := CheckToggle in:panel.
+
+	grp := RadioButtonGroup new.
+	grp add:check1.
+	grp add:check2.
+	grp add:check3.
+
+	top open
 "
 ! !
 
@@ -144,12 +193,20 @@
 updateStyleCache
     |checkFileName bits|
 
+    DefaultCheckColor := StyleSheet colorAt:'checkToggleCheckColor'.
+    DefaultBGColor := StyleSheet colorAt:'checkToggleBackgroundColor'.
+    DefaultActiveBGColor := StyleSheet colorAt:'checkToggleActiveBackgroundColor'.
+    DefaultActiveLevel := StyleSheet at:'checkToggleActiveLevel'.
+    DefaultPassiveLevel := StyleSheet at:'checkTogglePassiveLevel'.
+    DefaultBorderWidth := StyleSheet at:'checkToggleBorderWidth'.
+
     checkFileName := StyleSheet at:'checkToggleBitmapFile' default:'CheckOn.xbm'.
     checkFileName notNil ifTrue:[
 	DefaultCheckForm := Form fromFile:checkFileName 
 			       resolution:100
 				       on:Display.
-    ] ifFalse:[
+    ].
+    DefaultCheckForm isNil ifTrue:[
 	(StyleSheet at:'checkToggleStyle' default:#check) == #cross ifTrue:[
 	    bits := #[2r10000000 2r00000001
 		      2r01000000 2r00000010
@@ -177,12 +234,12 @@
 		      2r00000000 2r00001000
 		      2r00000000 2r00001000
 		      2r00000000 2r00010000
-		      2r01000000 2r00010000
-		      2r00100000 2r00100000
-		      2r00010000 2r00100000
-		      2r00001000 2r01000000
-		      2r00000100 2r01000000
-		      2r00000010 2r10000000
+		      2r01000000 2r00110000
+		      2r00100000 2r01100000
+		      2r00011000 2r01100000
+		      2r00001110 2r11000000
+		      2r00000111 2r11000000
+		      2r00000011 2r10000000
 		      2r00000001 2r10000000
 		      2r00000000 2r00000000]
 	].
@@ -191,7 +248,9 @@
 !
 
 checkFormOn:aDevice
-    "return the form used when checkToggle is turned on"
+    "return the form used when checkToggle is turned on.
+     Provided as public entry, to allow other views
+     to share the same check-image."
 
     ^ DefaultCheckForm on:aDevice.
 ! !
@@ -205,19 +264,26 @@
 !
 
 initStyle
+    |clr|
+
     super initStyle.
 
     onLevel := offLevel.
+    DefaultActiveLevel notNil ifTrue:[onLevel := DefaultActiveLevel].
+    DefaultPassiveLevel notNil ifTrue:[onLevel := DefaultPassiveLevel].
+
     activeLogo := DefaultCheckForm on:device.
     passiveLogo := nil.
 
-    self activeForegroundColor:(StyleSheet at:'checkToggleCheckColor' default:activeFgColor).
+    DefaultCheckColor notNil ifTrue:[self activeForegroundColor:DefaultCheckColor].
+    DefaultActiveBGColor notNil ifTrue:[self activeBackgroundColor:DefaultActiveBGColor].
+    DefaultBGColor notNil ifTrue:[self backgroundColor:DefaultBGColor].
+
     showLamp := false.
-    StyleSheet name == #mswindows ifTrue:[
-	self borderWidth:1; level:0.
-	onLevel := offLevel := 0.
-	activeBgColor := bgColor := Color white.
-    ]
+
+    DefaultBorderWidth notNil ifTrue:[self borderWidth:DefaultBorderWidth].
+
+    offLevel ~~ level ifTrue:[self level:offLevel].
 ! !
 
 !CheckToggle methodsFor:'redrawing'!
--- a/DialogBox.st	Fri May 19 18:41:01 1995 +0200
+++ b/DialogBox.st	Tue Jun 06 06:16:07 1995 +0200
@@ -25,7 +25,7 @@
 
 version
 "
-$Header: /cvs/stx/stx/libwidg/DialogBox.st,v 1.14 1995-05-17 12:24:44 claus Exp $
+$Header: /cvs/stx/stx/libwidg/DialogBox.st,v 1.15 1995-06-06 04:12:46 claus Exp $
 "
 !
 
@@ -240,7 +240,7 @@
 	    open
 
     fixing the dialogs size (suppres it calculating its size from the
-    preferedExtents of its components):
+    preferredExtents of its components):
 
 	DialogBox new
 	    label:'a simple dialog';
@@ -329,13 +329,20 @@
 	p := PipeStream readingFrom:'finger ' , OperatingSystem getLoginName.
 	p notNil ifTrue:[
 	    line := p nextLine.
-	    (i := line findString:'real life:') == 0 ifTrue:[
-		line := p nextLine.
+	    (i := line findString:'Name:') ~~ 0 ifTrue:[
+		name := line copyFrom:(i + 'Name:' size).
+	    ] ifFalse:[
+		(i := line findString:'real life:') == 0 ifTrue:[
+		    line := p nextLine.
+		].
+		(i := line findString:'real life:') ~~ 0 ifTrue:[
+		    name := line copyFrom:(i + 'real life:' size).
+		]
 	    ].
-	    (i := line findString:'real life:') ~~ 0 ifTrue:[
-		name := line copyFrom:(i + 'real life:' size).
+	    name notNil ifTrue:[
 		firstName value: name asCollectionOfWords first.
-		lastName  value: name asCollectionOfWords last
+		lastName  value: name asCollectionOfWords last.
+		Transcript showCr:'initially ' , firstName value , ' ' , lastName value.
 	    ].
 	    p close.
 	].
@@ -404,7 +411,7 @@
 
 
     again, setting the boxes initial size and fixing it
-    (let it ignore the components' preferedExtent):
+    (let it ignore the components' preferredExtent):
 
 	|top fixFrame l scr fileName|
 
@@ -923,7 +930,7 @@
 
     buttonPanel addSubView:aButton after:someOtherButtonOrNil.
     buttonPanel subViews size > 1 ifTrue:[
-	buttonPanel layout:#fitSpace.
+	buttonPanel horizontalLayout:#fitSpace.
     ].
     ^ aButton
 !
@@ -976,6 +983,140 @@
     ^ self addAbortButtonLabelled:nil
 !
 
+addColumn:aRow fromX:leftX toX:rightX collect:aBlock
+    "add some elements in a vertical column.
+     Equally space elements as returned from aBlock."
+
+    |helper component|
+
+    helper := VerticalPanelView new.
+
+    aRow do:[:el |
+	component := aBlock value:el.
+	helper add:component.
+	component resize.
+    ].    
+
+    helper resize.
+    self addComponent:helper.
+    width < helper preferredExtent x ifTrue:[
+	self width:helper preferredExtent x.
+Transcript show:'w now: '; showCr:helper preferredExtent x
+    ].
+    helper horizontalLayout:#fit.
+    helper left:leftX asFloat;
+	   right:rightX asFloat.
+
+    "
+     |dialog|
+
+     dialog := Dialog new.
+     dialog 
+	addColumn:#('a' 'b' 'c' 'd')
+	fromX:0
+	toX:1
+	collect:[:label | Label label:label].
+
+     dialog addOkButton.
+     dialog open.
+    "
+
+    "
+     |dialog y|
+
+     dialog := Dialog new.
+     y := dialog yPosition.
+     dialog 
+	addColumn:#('a1' 'b1' 'c1' 'd1')
+	fromX:0
+	toX:(1/3) 
+	collect:[:label | Label label:label].
+
+     dialog yPosition:y.
+     dialog 
+	addColumn:#('a2' 'b2' 'c2' 'd2')
+	fromX:(1/3)
+	toX:(2/3) 
+	collect:[:label | Label label:label].
+
+     dialog yPosition:y.
+     dialog 
+	addColumn:#('a3' 'b3' 'c3' 'd3')
+	fromX:(2/3)
+	toX:1 
+	collect:[:label | Label label:label].
+
+     dialog addOkButton.
+     dialog open.
+    "
+!
+
+addRow:aCol fromX:leftX toX:rightX collect:aBlock
+    "add some elements in a horizontal row.
+     Equally space elements as returned from aBlock.
+     Advance y."
+
+    |helper component|
+
+    helper := HorizontalPanelView new.
+
+    aCol do:[:el |
+	component := aBlock value:el.
+	component resize.
+	helper add:component.
+    ].    
+
+    helper resize.
+    self addComponent:helper.
+    width < helper preferredExtent x ifTrue:[
+	self width:helper preferredExtent x.
+Transcript show:'w now: '; showCr:helper preferredExtent x
+    ].
+    helper verticalLayout:#fit.
+    helper left:leftX asFloat;
+	   right:rightX asFloat.
+
+    "
+     |dialog|
+
+     dialog := Dialog new.
+     dialog 
+	addRow:#('a' 'b' 'c' 'd')
+	fromX:0
+	toX:1
+	collect:[:label | Label label:label].
+
+     dialog addOkButton.
+     dialog open.
+    "
+
+    "
+     |dialog|
+
+     dialog := Dialog new.
+     dialog 
+	addRow:#('a1' 'b1' 'c1' 'd1')
+	fromX:0
+	toX:1 
+	collect:[:label | Label label:label].
+
+     dialog 
+	addRow:#('a2' 'b2' 'c2' 'd2')
+	fromX:0
+	toX:0.5 
+	collect:[:label | Label label:label].
+
+     dialog 
+	addRow:#('a3' 'b3' 'c3' 'd3')
+	fromX:0.5
+	toX:1 
+	collect:[:label | Label label:label].
+
+     dialog addOkButton.
+     dialog open.
+    "
+!
+
 addComponent:aComponent withHeight:height 
     "add a component with some given height and full width.
      Returns the component."
@@ -1004,7 +1145,7 @@
 !
 
 addComponent:aComponent tabable:tabable
-    "add a component with its prefered height and full width.
+    "add a component with its preferred height and full width.
      Returns the component."
 
     tabable ifTrue:[
@@ -1014,11 +1155,11 @@
 	tabableElements add:aComponent
     ].
     ^ self addComponent:aComponent 
-	   withHeight:(aComponent preferedExtent y).
+	   withHeight:(aComponent preferredExtent y).
 !
 
 addComponent:aComponent
-    "add a component with its prefered height and full width.
+    "add a component with its preferred height and full width.
      Returns the component."
 
     ^ self addComponent:aComponent tabable:false
@@ -1233,7 +1374,7 @@
 	bottomInset:mm; 
 	topInset:(font height + mm * 2) negated;
 	borderWidth:0;
-	layout:#spread.
+	horizontalLayout:#spread.
 
     yPosition := ViewSpacing.
     leftIndent := rightIndent := ViewSpacing.
@@ -1321,8 +1462,8 @@
     ^ (okButton originRelativeTo:self) + (okButton extent // 2)
 !
 
-preferedExtent 
-    "return my prefered extent"
+preferredExtent 
+    "return my preferred extent"
 
     |w h p|
 
@@ -1332,16 +1473,16 @@
 		into:[:max :element |
 			|eExt|
 
-			eExt := element preferedExtent x. "/ max:element extent x.
+			eExt := element preferredExtent x. "/ max:element extent x.
 			max max:(eExt + element leftInset)].
     ] ifFalse:[
-	w := super preferedExtent x.
+	w := super preferredExtent x.
     ].
     h := yPosition
 	 + ViewSpacing.
 
-    okButton notNil ifTrue:[
-	p := buttonPanel preferedExtent.
+    buttonPanel subViews size ~~ 0 ifTrue:[
+	p := buttonPanel preferredExtent.
 	w := w max:p x.
 	h := h
 	     + p y
@@ -1349,9 +1490,9 @@
     ].
 
 "/    okButton isNil ifTrue:[
-"/        ^ super preferedExtent
+"/        ^ super preferredExtent
 "/    ].
-"/    p := buttonPanel preferedExtent.
+"/    p := buttonPanel preferredExtent.
 "/    w := p x.
 "/    h := ViewSpacing
 "/         + p y
--- a/EFGroup.st	Fri May 19 18:41:01 1995 +0200
+++ b/EFGroup.st	Tue Jun 06 06:16:07 1995 +0200
@@ -22,7 +22,7 @@
 COPYRIGHT (c) 1992 by Claus Gittinger
 	      All Rights Reserved
 
-$Header: /cvs/stx/stx/libwidg/Attic/EFGroup.st,v 1.11 1995-05-10 02:29:23 claus Exp $
+$Header: /cvs/stx/stx/libwidg/Attic/EFGroup.st,v 1.12 1995-06-06 04:12:53 claus Exp $
 '!
 
 !EnterFieldGroup class methodsFor:'documentation'!
@@ -43,14 +43,14 @@
 
 version
 "
-$Header: /cvs/stx/stx/libwidg/Attic/EFGroup.st,v 1.11 1995-05-10 02:29:23 claus Exp $
+$Header: /cvs/stx/stx/libwidg/Attic/EFGroup.st,v 1.12 1995-06-06 04:12:53 claus Exp $
 "
 !
 
 documentation
 "
-    EnterFieldGroup controlls the interaction between EnterFields
-    enabling next/prev field when a field is left. 
+    EnterFieldGroup controls the interaction between EnterFields
+    enabling the next/prev field when a field is left. 
     Instances of this class keep track of which field of the group is the 
     currentField (i.e. the one getting keyboard input) and forwards input
     to the active field (having the inputField delegate its input to me).
@@ -223,6 +223,8 @@
 
     the next example shows that the input order is defined by the
     order in the group; NOT by the physical layout of the fields in the superview:
+    (i.e. you can arrange your fields in multiple framedBoxes, panels or
+     subviews - independent of the tab-stepping order)
 
 	|top panel group field1 field2 field3|
 
@@ -455,6 +457,13 @@
     ^ true
 !
 
+handlesKeyRelease:key inView:aView
+    "query from event processor: am I interrested in key-events ?
+     yes I am (to forward it to the active field)."
+
+    ^ true
+!
+
 handlesButtonPress:button inView:aView
     "query from event processor: am I interrested in button-events ?
      yes I am (to activate the clicked-on field)."
@@ -470,13 +479,25 @@
 !
 
 keyPress:key x:x y:y view:aView
-    "key-press in any field - forward the key to the active field"
+    "key-press in any field - forward the key to the active field
+     (with -1/-1 as coordinate to indicate that the key was pressed
+      outside. However, this info is not used by any view currently)"
 
     currentField notNil ifTrue:[
 	currentField keyPress:key x:-1 y:-1
     ]
 !
 
+keyRelease:key x:x y:y view:aView
+    "key-release in any field - forward the key to the active field.
+     (with -1/-1 as coordinate to indicate that the key was pressed
+      outside. However, this info is not used by any view currently)"
+
+    currentField notNil ifTrue:[
+	currentField keyRelease:key x:-1 y:-1
+    ]
+!
+
 buttonPress:button x:x y:y view:aView
     "clicking on a field activates it and forwards the click to it"
 
--- a/ETxtView.st	Fri May 19 18:41:01 1995 +0200
+++ b/ETxtView.st	Tue Jun 06 06:16:07 1995 +0200
@@ -28,7 +28,7 @@
 COPYRIGHT (c) 1989 by Claus Gittinger
 	    All Rights Reserved
 
-$Header: /cvs/stx/stx/libwidg/Attic/ETxtView.st,v 1.28 1995-05-12 18:23:52 claus Exp $
+$Header: /cvs/stx/stx/libwidg/Attic/ETxtView.st,v 1.29 1995-06-06 04:13:01 claus Exp $
 '!
 
 !EditTextView class methodsFor:'documentation'!
@@ -49,7 +49,7 @@
 
 version
 "
-$Header: /cvs/stx/stx/libwidg/Attic/ETxtView.st,v 1.28 1995-05-12 18:23:52 claus Exp $
+$Header: /cvs/stx/stx/libwidg/Attic/ETxtView.st,v 1.29 1995-06-06 04:13:01 claus Exp $
 "
 !
 
@@ -271,7 +271,7 @@
 						savLine := cursorLine.
 						savCol := cursorCol.
 						self cursorLine:line col:col.
-						device synchronizeOutput.
+						device flush.
 						OperatingSystem millisecondDelay:200.
 						self cursorLine:savLine col:savCol
 					   ]
@@ -2327,32 +2327,60 @@
 
     |labels selectors m sub|
 
-    labels := #(
-"/                  'undo'
-		    'again'
-		    '-'
-		    'copy'
-		    'cut'
-		    'paste'
-		    '-'
-		    'accept'
-		    '='
-		    'others'
-	       ).
-
-    selectors := #(
-"/                  undo
-		    again
-		    nil
-		    copySelection
-		    cut
-		    paste
-		    nil
-		    accept
-		    nil
-		    others
+    self sensor ctrlDown ifTrue:[
+	labels := #(
+"/                      'undo'
+			'again (for all)'
+			'-'
+			'copy'
+			'cut'
+			'paste'
+			'-'
+			'accept'
+			'='
+			'others'
 		   ).
 
+	selectors := #(
+    "/                  undo
+			multipleAgain
+			nil
+			copySelection
+			cut
+			paste
+			nil
+			accept
+			nil
+			others
+		       ).
+    ] ifFalse:[
+	labels := #(
+"/                      'undo'
+			'again'
+			'-'
+			'copy'
+			'cut'
+			'paste'
+			'-'
+			'accept'
+			'='
+			'others'
+		   ).
+
+	selectors := #(
+    "/                  undo
+			again
+			nil
+			copySelection
+			cut
+			paste
+			nil
+			accept
+			nil
+			others
+		       ).
+    ].
+
     m := PopUpMenu
 	    labels:(resources array:labels)
 	    selectors:selectors.
--- a/EditField.st	Fri May 19 18:41:01 1995 +0200
+++ b/EditField.st	Tue Jun 06 06:16:07 1995 +0200
@@ -27,7 +27,7 @@
 COPYRIGHT (c) 1990 by Claus Gittinger
 	      All Rights Reserved
 
-$Header: /cvs/stx/stx/libwidg/EditField.st,v 1.23 1995-05-17 12:24:53 claus Exp $
+$Header: /cvs/stx/stx/libwidg/EditField.st,v 1.24 1995-06-06 04:13:12 claus Exp $
 '!
 
 !EditField class methodsFor:'documentation'!
@@ -48,7 +48,7 @@
 
 version
 "
-$Header: /cvs/stx/stx/libwidg/EditField.st,v 1.23 1995-05-17 12:24:53 claus Exp $
+$Header: /cvs/stx/stx/libwidg/EditField.st,v 1.24 1995-06-06 04:13:12 claus Exp $
 "
 !
 
@@ -96,11 +96,11 @@
 
       acceptOnLeave  <Boolean>                  if true, leaving the field (via cursor keys)
 						automatically accepts the value into the model.
-						Default is false.
+						Default is true.
 
       acceptOnReturn <Boolean>                  if true, leaving the field via return
 						automatically accepts the value into the model.
-						Default is false.
+						Default is true.
 "
 !
 
@@ -605,7 +605,7 @@
     oldWidth := self widthOfContents.
     super list:l.
     self widthOfContents ~~ oldWidth ifTrue:[
-	self changed:#preferedExtent
+	self changed:#preferredExtent
     ]
 !
 
@@ -807,8 +807,10 @@
     fixedSize := true.
     nFullLinesShown := 1.
     nLinesShown := 1.
-    immediateAccept := acceptOnLeave := false.
-    acceptOnReturn := false. "/ true.
+    immediateAccept := false.
+"/    acceptOnLeave := false.
+"/    acceptOnReturn := false.
+    acceptOnLeave := acceptOnReturn := true.
     cursorShown := true.
     leaveKeys := self class defaultLeaveKeys.
 !
@@ -860,8 +862,8 @@
 
 !EditField methodsFor:'queries'!
 
-preferedExtent
-    "return the prefered extent of this view.
+preferredExtent
+    "return the preferred extent of this view.
      That is the width of the string plus some extra, 
      but not wider than half of the screen"
 
@@ -869,7 +871,7 @@
 
     string := self contents.
     (string isNil or:[string isBlank]) ifTrue:[
-	string := '          ' "/ just any string is ok ^ super preferedExtent
+	string := '          ' "/ just any string is ok ^ super preferredExtent
     ].
     w := (((font on:device) widthOf:string) * 1.5) rounded.
     w := w min:(device width // 2).
@@ -991,10 +993,10 @@
     "
     xCol := (self xOfCol:cursorCol inVisibleLine:cursorLine) - leftOffset.
     (xCol > (width * (5/6))) ifTrue:[
-	self changed:#preferedExtent
+	self changed:#preferredExtent
     ] ifFalse:[
 	newWidth < (width * (1/6)) ifTrue:[
-	    self changed:#preferedExtent
+	    self changed:#preferredExtent
 	]
     ].
 
@@ -1068,4 +1070,3 @@
 	self deleteFromLine:2 toLine:(list size)
     ]
 ! !
-
--- a/EditTextView.st	Fri May 19 18:41:01 1995 +0200
+++ b/EditTextView.st	Tue Jun 06 06:16:07 1995 +0200
@@ -28,7 +28,7 @@
 COPYRIGHT (c) 1989 by Claus Gittinger
 	    All Rights Reserved
 
-$Header: /cvs/stx/stx/libwidg/EditTextView.st,v 1.28 1995-05-12 18:23:52 claus Exp $
+$Header: /cvs/stx/stx/libwidg/EditTextView.st,v 1.29 1995-06-06 04:13:01 claus Exp $
 '!
 
 !EditTextView class methodsFor:'documentation'!
@@ -49,7 +49,7 @@
 
 version
 "
-$Header: /cvs/stx/stx/libwidg/EditTextView.st,v 1.28 1995-05-12 18:23:52 claus Exp $
+$Header: /cvs/stx/stx/libwidg/EditTextView.st,v 1.29 1995-06-06 04:13:01 claus Exp $
 "
 !
 
@@ -271,7 +271,7 @@
 						savLine := cursorLine.
 						savCol := cursorCol.
 						self cursorLine:line col:col.
-						device synchronizeOutput.
+						device flush.
 						OperatingSystem millisecondDelay:200.
 						self cursorLine:savLine col:savCol
 					   ]
@@ -2327,32 +2327,60 @@
 
     |labels selectors m sub|
 
-    labels := #(
-"/                  'undo'
-		    'again'
-		    '-'
-		    'copy'
-		    'cut'
-		    'paste'
-		    '-'
-		    'accept'
-		    '='
-		    'others'
-	       ).
-
-    selectors := #(
-"/                  undo
-		    again
-		    nil
-		    copySelection
-		    cut
-		    paste
-		    nil
-		    accept
-		    nil
-		    others
+    self sensor ctrlDown ifTrue:[
+	labels := #(
+"/                      'undo'
+			'again (for all)'
+			'-'
+			'copy'
+			'cut'
+			'paste'
+			'-'
+			'accept'
+			'='
+			'others'
 		   ).
 
+	selectors := #(
+    "/                  undo
+			multipleAgain
+			nil
+			copySelection
+			cut
+			paste
+			nil
+			accept
+			nil
+			others
+		       ).
+    ] ifFalse:[
+	labels := #(
+"/                      'undo'
+			'again'
+			'-'
+			'copy'
+			'cut'
+			'paste'
+			'-'
+			'accept'
+			'='
+			'others'
+		   ).
+
+	selectors := #(
+    "/                  undo
+			again
+			nil
+			copySelection
+			cut
+			paste
+			nil
+			accept
+			nil
+			others
+		       ).
+    ].
+
     m := PopUpMenu
 	    labels:(resources array:labels)
 	    selectors:selectors.
--- a/EnterBox.st	Fri May 19 18:41:01 1995 +0200
+++ b/EnterBox.st	Tue Jun 06 06:16:07 1995 +0200
@@ -37,7 +37,7 @@
 
 version
 "
-$Header: /cvs/stx/stx/libwidg/EnterBox.st,v 1.23 1995-05-07 00:16:00 claus Exp $
+$Header: /cvs/stx/stx/libwidg/EnterBox.st,v 1.24 1995-06-06 04:13:18 claus Exp $
 "
 !
 
@@ -288,14 +288,14 @@
 
     self addComponent:(enterField := self createEnterField).
     enterField 
-	origin:[0.0 @ (space2 + labelField preferedExtent y "height")]
+	origin:[0.0 @ (space2 + labelField preferredExtent y "height")]
 	extent:[1.0 @ enterField height].
     enterField 
 	leftInset:ViewSpacing; 
 	rightInset:ViewSpacing;
 	leaveAction:[:key | self okPressed].
 
-    enterField addDependent:self. "to get preferedExtent-changes"
+    enterField addDependent:self. "to get preferredExtent-changes"
 
     "
      forward keyboard input to the enterfield
@@ -325,7 +325,7 @@
     "sent if my enterbox thinks it needs more real-estate ..."
 
     changedObject == enterField ifTrue:[
-	something == #preferedExtent ifTrue:[
+	something == #preferredExtent ifTrue:[
 	    shown ifTrue:[self resize].
 	    ^ self
 	]
@@ -335,13 +335,13 @@
 
 !EnterBox methodsFor:'queries'!
 
-preferedExtent 
+preferredExtent 
     |wWanted hWanted wPanel vs2 min 
      labelPref enterPref panelPref|
 
-    panelPref := buttonPanel preferedExtent.
-    labelPref := labelField preferedExtent.
-    enterPref := enterField preferedExtent.
+    panelPref := buttonPanel preferredExtent.
+    labelPref := labelField preferredExtent.
+    enterPref := enterField preferredExtent.
     wWanted := (labelPref x max:enterPref x).
     wPanel := panelPref x.
     wPanel > wWanted ifTrue:[
--- a/EnterFieldGroup.st	Fri May 19 18:41:01 1995 +0200
+++ b/EnterFieldGroup.st	Tue Jun 06 06:16:07 1995 +0200
@@ -22,7 +22,7 @@
 COPYRIGHT (c) 1992 by Claus Gittinger
 	      All Rights Reserved
 
-$Header: /cvs/stx/stx/libwidg/EnterFieldGroup.st,v 1.11 1995-05-10 02:29:23 claus Exp $
+$Header: /cvs/stx/stx/libwidg/EnterFieldGroup.st,v 1.12 1995-06-06 04:12:53 claus Exp $
 '!
 
 !EnterFieldGroup class methodsFor:'documentation'!
@@ -43,14 +43,14 @@
 
 version
 "
-$Header: /cvs/stx/stx/libwidg/EnterFieldGroup.st,v 1.11 1995-05-10 02:29:23 claus Exp $
+$Header: /cvs/stx/stx/libwidg/EnterFieldGroup.st,v 1.12 1995-06-06 04:12:53 claus Exp $
 "
 !
 
 documentation
 "
-    EnterFieldGroup controlls the interaction between EnterFields
-    enabling next/prev field when a field is left. 
+    EnterFieldGroup controls the interaction between EnterFields
+    enabling the next/prev field when a field is left. 
     Instances of this class keep track of which field of the group is the 
     currentField (i.e. the one getting keyboard input) and forwards input
     to the active field (having the inputField delegate its input to me).
@@ -223,6 +223,8 @@
 
     the next example shows that the input order is defined by the
     order in the group; NOT by the physical layout of the fields in the superview:
+    (i.e. you can arrange your fields in multiple framedBoxes, panels or
+     subviews - independent of the tab-stepping order)
 
 	|top panel group field1 field2 field3|
 
@@ -455,6 +457,13 @@
     ^ true
 !
 
+handlesKeyRelease:key inView:aView
+    "query from event processor: am I interrested in key-events ?
+     yes I am (to forward it to the active field)."
+
+    ^ true
+!
+
 handlesButtonPress:button inView:aView
     "query from event processor: am I interrested in button-events ?
      yes I am (to activate the clicked-on field)."
@@ -470,13 +479,25 @@
 !
 
 keyPress:key x:x y:y view:aView
-    "key-press in any field - forward the key to the active field"
+    "key-press in any field - forward the key to the active field
+     (with -1/-1 as coordinate to indicate that the key was pressed
+      outside. However, this info is not used by any view currently)"
 
     currentField notNil ifTrue:[
 	currentField keyPress:key x:-1 y:-1
     ]
 !
 
+keyRelease:key x:x y:y view:aView
+    "key-release in any field - forward the key to the active field.
+     (with -1/-1 as coordinate to indicate that the key was pressed
+      outside. However, this info is not used by any view currently)"
+
+    currentField notNil ifTrue:[
+	currentField keyRelease:key x:-1 y:-1
+    ]
+!
+
 buttonPress:button x:x y:y view:aView
     "clicking on a field activates it and forwards the click to it"
 
--- a/FSelBox.st	Fri May 19 18:41:01 1995 +0200
+++ b/FSelBox.st	Tue Jun 06 06:16:07 1995 +0200
@@ -21,7 +21,7 @@
 COPYRIGHT (c) 1990 by Claus Gittinger
 	      All Rights Reserved
 
-$Header: /cvs/stx/stx/libwidg/Attic/FSelBox.st,v 1.16 1995-05-06 14:17:07 claus Exp $
+$Header: /cvs/stx/stx/libwidg/Attic/FSelBox.st,v 1.17 1995-06-06 04:13:25 claus Exp $
 '!
 
 !FileSelectionBox class methodsFor:'documentation'!
@@ -42,7 +42,7 @@
 
 version
 "
-$Header: /cvs/stx/stx/libwidg/Attic/FSelBox.st,v 1.16 1995-05-06 14:17:07 claus Exp $
+$Header: /cvs/stx/stx/libwidg/Attic/FSelBox.st,v 1.17 1995-06-06 04:13:25 claus Exp $
 "
 !
 
@@ -169,7 +169,7 @@
 	selectionList pattern:patternField contents. 
 	self updateList
     ].
-    patternField hidden:true. "delay showing, until a pattern is defined"
+    patternField hiddenOnRealize:true. "delay showing, until a pattern is defined"
 
     selectionList action:[:line |
 	|entry|
@@ -272,16 +272,16 @@
 
 !FileSelectionBox methodsFor:'queries'!
 
-preferedExtent
-    "return my prefered extent - thats the minimum size 
+preferredExtent
+    "return my preferred extent - thats the minimum size 
      to make everything visible"
 
     |wWanted hWanted|
 
     wWanted := ViewSpacing + 
-	       labelField preferedExtent x + 
+	       labelField preferredExtent x + 
 	       (ViewSpacing * 2) + 
-	       patternField preferedExtent x + 
+	       patternField preferredExtent x + 
 	       ViewSpacing.
     (wWanted < width) ifTrue:[
 	wWanted := width
@@ -289,7 +289,7 @@
     hWanted := ViewSpacing + labelField height +
 	       ViewSpacing + enterField height +
 	       ViewSpacing + selectionList height +
-	       ViewSpacing + buttonPanel preferedExtent y +
+	       ViewSpacing + buttonPanel preferredExtent y +
 	       ViewSpacing.
 
     (hWanted < height) ifTrue:[
@@ -318,33 +318,36 @@
     "set the pattern - this also enables the PatternField
      (if the pattern is non-nil) or hides it (if nil)."
 
+    |hidePatternField focusSequence|
+
     patternField initialText:aPattern.
     selectionList pattern:aPattern.
     aPattern isNil ifTrue:[
-	patternField hidden:true.
+	hidePatternField := true.
 	realized ifTrue:[
 	    patternField hide.
 	].
-	windowGroup notNil ifTrue:[
-	    windowGroup focusSequence:(Array 
-					with:enterField 
-					with:selectionList 
-					with:okButton 
-					with:abortButton)
-	]
+	focusSequence := (Array 
+			     with:enterField 
+			     with:selectionList 
+			     with:okButton 
+			     with:abortButton)
     ] ifFalse:[
-	patternField hidden:false.
+	hidePatternField := false.
 	realized ifTrue:[
 	    patternField realize.
 	].
-	windowGroup notNil ifTrue:[
-	    windowGroup focusSequence:(Array 
-					with:patternField 
-					with:enterField 
-					with:selectionList 
-					with:okButton 
-					with:abortButton)
-	]
+	focusSequence := (Array 
+			     with:patternField 
+			     with:enterField 
+			     with:selectionList 
+			     with:okButton 
+			     with:abortButton)
+    ].
+
+    patternField hiddenOnRealize:hidePatternField.
+    windowGroup notNil ifTrue:[
+	windowGroup focusSequence:focusSequence
     ].
 !
 
--- a/FileSelectionBox.st	Fri May 19 18:41:01 1995 +0200
+++ b/FileSelectionBox.st	Tue Jun 06 06:16:07 1995 +0200
@@ -21,7 +21,7 @@
 COPYRIGHT (c) 1990 by Claus Gittinger
 	      All Rights Reserved
 
-$Header: /cvs/stx/stx/libwidg/FileSelectionBox.st,v 1.16 1995-05-06 14:17:07 claus Exp $
+$Header: /cvs/stx/stx/libwidg/FileSelectionBox.st,v 1.17 1995-06-06 04:13:25 claus Exp $
 '!
 
 !FileSelectionBox class methodsFor:'documentation'!
@@ -42,7 +42,7 @@
 
 version
 "
-$Header: /cvs/stx/stx/libwidg/FileSelectionBox.st,v 1.16 1995-05-06 14:17:07 claus Exp $
+$Header: /cvs/stx/stx/libwidg/FileSelectionBox.st,v 1.17 1995-06-06 04:13:25 claus Exp $
 "
 !
 
@@ -169,7 +169,7 @@
 	selectionList pattern:patternField contents. 
 	self updateList
     ].
-    patternField hidden:true. "delay showing, until a pattern is defined"
+    patternField hiddenOnRealize:true. "delay showing, until a pattern is defined"
 
     selectionList action:[:line |
 	|entry|
@@ -272,16 +272,16 @@
 
 !FileSelectionBox methodsFor:'queries'!
 
-preferedExtent
-    "return my prefered extent - thats the minimum size 
+preferredExtent
+    "return my preferred extent - thats the minimum size 
      to make everything visible"
 
     |wWanted hWanted|
 
     wWanted := ViewSpacing + 
-	       labelField preferedExtent x + 
+	       labelField preferredExtent x + 
 	       (ViewSpacing * 2) + 
-	       patternField preferedExtent x + 
+	       patternField preferredExtent x + 
 	       ViewSpacing.
     (wWanted < width) ifTrue:[
 	wWanted := width
@@ -289,7 +289,7 @@
     hWanted := ViewSpacing + labelField height +
 	       ViewSpacing + enterField height +
 	       ViewSpacing + selectionList height +
-	       ViewSpacing + buttonPanel preferedExtent y +
+	       ViewSpacing + buttonPanel preferredExtent y +
 	       ViewSpacing.
 
     (hWanted < height) ifTrue:[
@@ -318,33 +318,36 @@
     "set the pattern - this also enables the PatternField
      (if the pattern is non-nil) or hides it (if nil)."
 
+    |hidePatternField focusSequence|
+
     patternField initialText:aPattern.
     selectionList pattern:aPattern.
     aPattern isNil ifTrue:[
-	patternField hidden:true.
+	hidePatternField := true.
 	realized ifTrue:[
 	    patternField hide.
 	].
-	windowGroup notNil ifTrue:[
-	    windowGroup focusSequence:(Array 
-					with:enterField 
-					with:selectionList 
-					with:okButton 
-					with:abortButton)
-	]
+	focusSequence := (Array 
+			     with:enterField 
+			     with:selectionList 
+			     with:okButton 
+			     with:abortButton)
     ] ifFalse:[
-	patternField hidden:false.
+	hidePatternField := false.
 	realized ifTrue:[
 	    patternField realize.
 	].
-	windowGroup notNil ifTrue:[
-	    windowGroup focusSequence:(Array 
-					with:patternField 
-					with:enterField 
-					with:selectionList 
-					with:okButton 
-					with:abortButton)
-	]
+	focusSequence := (Array 
+			     with:patternField 
+			     with:enterField 
+			     with:selectionList 
+			     with:okButton 
+			     with:abortButton)
+    ].
+
+    patternField hiddenOnRealize:hidePatternField.
+    windowGroup notNil ifTrue:[
+	windowGroup focusSequence:focusSequence
     ].
 !
 
--- a/FontPanel.st	Fri May 19 18:41:01 1995 +0200
+++ b/FontPanel.st	Tue Jun 06 06:16:07 1995 +0200
@@ -27,7 +27,7 @@
 
 version
 "
-$Header: /cvs/stx/stx/libwidg/FontPanel.st,v 1.10 1995-05-17 12:25:02 claus Exp $
+$Header: /cvs/stx/stx/libwidg/FontPanel.st,v 1.11 1995-06-06 04:13:32 claus Exp $
 "
 !
 
@@ -125,7 +125,7 @@
 
 !FontPanel methodsFor:'queries'!
 
-preferedExtent
+preferredExtent
     ^ 400@350
 ! !
 
@@ -159,7 +159,7 @@
 
     panel := View origin:0.0@0.0 corner:1.0@1.0
 		  in:self.
-    panel bottomInset:(buttonPanel preferedExtent y + (ViewSpacing*3)).
+    panel bottomInset:(buttonPanel preferredExtent y + (ViewSpacing*3)).
 
     label := 'Font dialog'.
 
--- a/FramedBox.st	Fri May 19 18:41:01 1995 +0200
+++ b/FramedBox.st	Tue Jun 06 06:16:07 1995 +0200
@@ -13,7 +13,7 @@
 'From Smalltalk/X, Version:2.10.5 on 9-may-1995 at 12:04:53 pm'!
 
 SimpleView subclass:#FramedBox
-	 instanceVariableNames:'label layout fgColor showFrame frame3D'
+	 instanceVariableNames:'label labelPosition fgColor showFrame frame3D'
 	 classVariableNames:''
 	 poolDictionaries:''
 	 category:'Views-Layout'
@@ -23,7 +23,7 @@
 COPYRIGHT (c) 1991 by Claus Gittinger
 	      All Rights Reserved
 
-$Header: /cvs/stx/stx/libwidg/FramedBox.st,v 1.11 1995-05-09 01:55:43 claus Exp $
+$Header: /cvs/stx/stx/libwidg/FramedBox.st,v 1.12 1995-06-06 04:13:36 claus Exp $
 '!
 
 !FramedBox class methodsFor:'documentation'!
@@ -44,14 +44,14 @@
 
 version
 "
-$Header: /cvs/stx/stx/libwidg/FramedBox.st,v 1.11 1995-05-09 01:55:43 claus Exp $
+$Header: /cvs/stx/stx/libwidg/FramedBox.st,v 1.12 1995-06-06 04:13:36 claus Exp $
 "
 !
 
 documentation
 "
     a frame around something. The frame may have a label, whose position
-    is controlled by the layout variable, aSymbol which may be one of:
+    is controlled by the labelPosition variable, aSymbol which may be one of:
     [#topCenter #topLeft #topRight #bottomLeft #bottomCenter #bottomRight]
 
     Its also possible, to not show the frame but only the label, by setting
@@ -237,17 +237,36 @@
 
     labelLen > 0 ifTrue:[
 	labelLen < width ifTrue:[
-	    (#(topLeft topCenter topRight) includes:layout) ifTrue:[
+	    (labelPosition == #topLeft 
+	    or:[labelPosition == #topCenter
+	    or:[labelPosition == #topRight]]) ifTrue:[
+		"
+		 label at top
+		"
 		y := font ascent.
 	    ] ifFalse:[
+		"
+		 label at bottom
+		"
 		y := height - font descent.
 	    ].
-	    (#(topLeft bottomLeft) includes:layout) ifTrue:[
+	    (labelPosition == #topLeft
+	    or:[labelPosition == #bottomLeft]) ifTrue:[
+		"
+		 label at left
+		"
 		x := font height
 	    ] ifFalse:[
-		(#(topRight bottomRight) includes:layout) ifTrue:[
+		(labelPosition == #topRight
+		or:[labelPosition == #bottomRight]) ifTrue:[
+		    "
+		     label at right
+		    "
 		    x := width - labelLen - font height
 		] ifFalse:[
+		    "
+		     label at center
+		    "
 		    x := (width - labelLen) // 2
 		]
 	    ].
@@ -284,7 +303,7 @@
 "/    ^ (sepH @ sepH) extent:((width - sepH - sepH) @ (height - sepV - sepV))
 !
 
-preferedExtent
+preferredExtent
     "redefined to add space for the frame to the default extent" 
 
     |m2 sep|
@@ -293,9 +312,9 @@
     m2 := sep + sep.
 
     showFrame ifFalse:[
-        ^ super preferedExtent + (0 @ m2)
+        ^ super preferredExtent + (0 @ m2)
     ].
-    ^ super preferedExtent+(m2 @ m2)
+    ^ super preferredExtent+(m2 @ m2)
 ! !
 
 !FramedBox methodsFor:'private'!
@@ -365,22 +384,37 @@
     ]
 !
 
-layout
-    "return the current layout, which is a symbol describing
+labelPosition
+    "return the labelPosition, which is a symbol describing
      the labels position."
 
-    ^ layout
+    ^ labelPosition
+!
+
+labelPosition:aSymbol
+    "define the position of the label;
+     aSymbol may be one of: 
+	#topLeft, #topCenter, #topRight;
+        #bottomLeft, #bottomCenter or #bottomRight"
+
+    labelPosition ~~ aSymbol ifTrue:[
+	labelPosition := aSymbol.
+	self redrawIfShown
+    ]
+!
+
+layout
+    "OBSOLETE compatibility interface. Will vanish"
+
+    self obsoleteMethodWarning:'use #labelPosition'.
+    ^ labelPosition
 !
 
 layout:aSymbol
-    "define the position of the label;
-     aSymbol may be: #topLeft, #topCenter, #topRight;
-     #bottomLeft, #bottomCenter or #bottomRight"
+    "OBSOLETE compatibility interface. Will vanish"
 
-    layout ~~ aSymbol ifTrue:[
-	layout := aSymbol.
-	self redrawIfShown
-    ]
+    self obsoleteMethodWarning:'use #labelPosition:'.
+    ^ self labelPosition:aSymbol
 ! !
 
 !FramedBox methodsFor:'initialization'!
@@ -397,7 +431,7 @@
     super initStyle.
 
     fgColor := StyleSheet at:'framedBoxForegroundColor' default:Black.
-    layout := StyleSheet at:'framedBoxLabelPosition' default:#topCenter.
+    labelPosition := StyleSheet at:'framedBoxLabelPosition' default:#topCenter.
     frame3D := StyleSheet at:'framedBox3DFrame' default:true.
 ! !
 
--- a/HMiniScr.st	Fri May 19 18:41:01 1995 +0200
+++ b/HMiniScr.st	Tue Jun 06 06:16:07 1995 +0200
@@ -21,7 +21,7 @@
 COPYRIGHT (c) 1994 by Claus Gittinger
 	      All Rights Reserved
 
-$Header: /cvs/stx/stx/libwidg/Attic/HMiniScr.st,v 1.3 1995-05-03 00:29:35 claus Exp $
+$Header: /cvs/stx/stx/libwidg/Attic/HMiniScr.st,v 1.4 1995-06-06 04:13:41 claus Exp $
 '!
 
 !HorizontalMiniScroller class methodsFor:'documentation'!
@@ -42,7 +42,7 @@
 
 version
 "
-$Header: /cvs/stx/stx/libwidg/Attic/HMiniScr.st,v 1.3 1995-05-03 00:29:35 claus Exp $
+$Header: /cvs/stx/stx/libwidg/Attic/HMiniScr.st,v 1.4 1995-06-06 04:13:41 claus Exp $
 "
 !
 
@@ -52,9 +52,9 @@
 "
 ! !
 
-!HorizontalMiniScroller methodsFor:'initialization'!
+!HorizontalMiniScroller methodsFor:'queries'!
 
-computeInitialExtent
+preferredExtent
     "make my height very small"
 
     |w h mm|
@@ -62,14 +62,16 @@
     w := self class defaultExtent x.
     mm := (thumbLevel ~~ 0) ifTrue:[2.5] ifFalse:[2.0].
     h := (device verticalPixelPerMillimeter asFloat * mm) rounded.
-    self extent:w @ h.
-!
+    ^ w @ h.
+! !
+
+!HorizontalMiniScroller methodsFor:'initialization'!
 
 initStyle
     |style lvl|
 
     super initStyle.
-    style := StyleSheet name.
+    style := styleSheet name.
     style == #iris ifTrue:[
 	tallyLevel := 0.
 	tallyMarks := 0.
--- a/HPanelV.st	Fri May 19 18:41:01 1995 +0200
+++ b/HPanelV.st	Tue Jun 06 06:16:07 1995 +0200
@@ -21,7 +21,7 @@
 COPYRIGHT (c) 1989 by Claus Gittinger
 	      All Rights Reserved
 
-$Header: /cvs/stx/stx/libwidg/Attic/HPanelV.st,v 1.11 1995-05-12 18:24:12 claus Exp $
+$Header: /cvs/stx/stx/libwidg/Attic/HPanelV.st,v 1.12 1995-06-06 04:13:45 claus Exp $
 '!
 
 !HorizontalPanelView class methodsFor:'documentation'!
@@ -42,7 +42,7 @@
 
 version
 "
-$Header: /cvs/stx/stx/libwidg/Attic/HPanelV.st,v 1.11 1995-05-12 18:24:12 claus Exp $
+$Header: /cvs/stx/stx/libwidg/Attic/HPanelV.st,v 1.12 1995-06-06 04:13:45 claus Exp $
 "
 !
 
@@ -694,19 +694,21 @@
 layout
     "leftover for historic reasons - do not use any more"
 
-    self horizontalLayout
+    self obsoleteMethodWarning:'use #horizontalLayout'.
+    ^ self horizontalLayout
 !
 
 layout:aSymbol
     "leftover for historic reasons - do not use any more"
 
-    self horizontalLayout:aSymbol
+    self obsoleteMethodWarning:'use #horizontalLayout:'.
+    ^ self horizontalLayout:aSymbol
 ! !
 
 
 !HorizontalPanelView methodsFor:'queries'!
 
-preferedExtent
+preferredExtent
     "return a good extent, one that makes subviews fit"
 
     |sumOfWidths maxHeight maxWidth|
@@ -722,7 +724,7 @@
     subViews do:[:child |
 	|childsPreference|
 
-	childsPreference := child preferedExtent.
+	childsPreference := child preferredExtent.
 	sumOfWidths := sumOfWidths + childsPreference x.
 	maxHeight := maxHeight max:childsPreference y.
 	maxWidth := maxWidth max:childsPreference x.
--- a/HScrBar.st	Fri May 19 18:41:01 1995 +0200
+++ b/HScrBar.st	Tue Jun 06 06:16:07 1995 +0200
@@ -21,7 +21,7 @@
 COPYRIGHT (c) 1989 by Claus Gittinger
 	      All Rights Reserved
 
-$Header: /cvs/stx/stx/libwidg/Attic/HScrBar.st,v 1.13 1995-05-17 12:25:08 claus Exp $
+$Header: /cvs/stx/stx/libwidg/Attic/HScrBar.st,v 1.14 1995-06-06 04:13:50 claus Exp $
 '!
 
 !HorizontalScrollBar class methodsFor:'documentation'!
@@ -42,7 +42,7 @@
 
 version
 "
-$Header: /cvs/stx/stx/libwidg/Attic/HScrBar.st,v 1.13 1995-05-17 12:25:08 claus Exp $
+$Header: /cvs/stx/stx/libwidg/Attic/HScrBar.st,v 1.14 1995-06-06 04:13:50 claus Exp $
 "
 !
 
@@ -64,45 +64,6 @@
     thumb := HorizontalScroller in:self.
 !
 
-computeInitialExtent
-    "compute my extent from sub-components"
-
-    |w h leftForm rightForm wLeft hLeft wRight hRight style|
-
-    "need fix - this is a kludge;
-     the if should not be needed ..."
-    style := StyleSheet name.
-    style == #mswindows ifTrue:[
-	h := button1 height max:button2 height.
-	w := button1 width + button2 width + (Scroller defaultExtent x).
-    ] ifFalse:[
-	leftForm  := ArrowButton leftArrowButtonForm:style on:device.
-	rightForm := ArrowButton rightArrowButtonForm:style on:device.
-	"
-	 just in case ...
-	"
-	leftForm isNil ifTrue:[
-	    wLeft := hLeft := 16
-	] ifFalse:[
-	    wLeft := leftForm width.
-	    hLeft := leftForm height
-	].
-	rightForm isNil ifTrue:[
-	    wRight := hRight := 16
-	] ifFalse:[
-	    wRight := rightForm width.
-	    hRight := rightForm height
-	].
-	w := wLeft + wRight + (1 * 2) + (HorizontalScroller defaultExtent x).
-	h := hLeft max:hRight.
-	(style ~~ #normal) ifTrue:[
-	    h := h + 4.
-	    w := w + 4
-	].
-    ].
-    self extent:w @ h.
-!
-
 setElementPositions
     "position sub-components"
 
@@ -110,7 +71,7 @@
 
     bwn := borderWidth negated + margin.
 
-    (layout == #bottom) ifTrue:[
+    (buttonLayout == #bottom) ifTrue:[
 	"buttons at left"
 	button1 origin:(bwn @ bwn).
 	button1 viewGravity:#West.
@@ -124,7 +85,7 @@
 	^ self
     ].
 
-    (layout == #top) ifTrue:[
+    (buttonLayout == #top) ifTrue:[
 	"buttons at right"
 	button1 viewGravity:#West.
 	button2 viewGravity:#West.
@@ -132,7 +93,7 @@
 	thumb viewGravity:#West
     ].
 
-    "layout == #around "
+    "buttonLayout == #around "
     button1 origin:(bwn @ bwn).
     button1 viewGravity:#West.
     button2 viewGravity:#West.
@@ -166,13 +127,54 @@
     button2 action:aBlock
 ! !
 
+!HorizontalScrollBar methodsFor:'queries'!
+
+preferredExtent
+    "compute my extent from sub-components"
+
+    |w h leftForm rightForm wLeft hLeft wRight hRight style|
+
+    "need fix - this is a kludge;
+     the if should not be needed ..."
+    style := styleSheet name.
+    style == #mswindows ifTrue:[
+	h := button1 height max:button2 height.
+	w := button1 width + button2 width + (Scroller defaultExtent x).
+    ] ifFalse:[
+	leftForm  := ArrowButton leftArrowButtonForm:style on:device.
+	rightForm := ArrowButton rightArrowButtonForm:style on:device.
+	"
+	 just in case ...
+	"
+	leftForm isNil ifTrue:[
+	    wLeft := hLeft := 16
+	] ifFalse:[
+	    wLeft := leftForm width.
+	    hLeft := leftForm height
+	].
+	rightForm isNil ifTrue:[
+	    wRight := hRight := 16
+	] ifFalse:[
+	    wRight := rightForm width.
+	    hRight := rightForm height
+	].
+	w := wLeft + wRight + (1 * 2) + (HorizontalScroller defaultExtent x).
+	h := hLeft max:hRight.
+	(style ~~ #normal) ifTrue:[
+	    h := h + 4.
+	    w := w + 4
+	].
+    ].
+    ^ w @ h.
+! !
+
 !HorizontalScrollBar methodsFor:'event handling'!
 
 sizeChanged:how
     "handle changed size - reposition elements"
 
     |leftWidth rightWidth thumbWidth leftAndRightWidth bwn sep2 
-     thumbHeight h style|
+     thumbHeight h style b1Hidden b2Hidden thumbHidden bX|
 
     button1 isNil ifTrue:[^ self].
     button2 isNil ifTrue:[^ self].
@@ -185,42 +187,45 @@
 
     thumbWidth := width - leftAndRightWidth - borderWidth - (elementSpacing * 3).
 "
-    ((layout ~~ #top) and:[layout ~~ #bottom]) ifTrue:[
+    ((buttonLayout ~~ #top) and:[buttonLayout ~~ #bottom]) ifTrue:[
 	thumbWidth := thumbWidth - borderWidth
     ].
 "
-    layout == #around ifTrue:[
+    buttonLayout == #around ifTrue:[
 	thumbWidth := thumbWidth + borderWidth
     ].
 
     "if I become too small, hide buttons"
 
-    (width < leftAndRightWidth) ifTrue:[
-	button1 shown ifTrue:[
-	    button1 hidden.
-	    button2 hidden.
-	    thumb hidden
-	]
+    width < leftAndRightWidth ifTrue:[
+	b1Hidden := b2Hidden := thumbHidden := true.
     ] ifFalse:[
-	shown ifTrue:[
-	    button1 shown ifFalse:[
-		button1 show.
-		button2 show.
-		thumb show
-	    ]
-	]
+	b1Hidden := b2Hidden := thumbHidden := false.
     ].
 
     (thumbWidth < 10) ifTrue:[
-	thumb shown ifTrue:[
-	    thumb hidden
-	]
+	thumbHidden := true.
+    ] ifFalse:[
+	thumbHidden := false.
+    ].
+
+    button1 hiddenOnRealize:b1Hidden.
+    b1Hidden ifTrue:[
+	button1 unrealize
     ] ifFalse:[
-	thumb shown ifFalse:[
-	    button1 shown ifTrue:[
-		thumb show
-	    ]
-	]
+	shown ifTrue:[button1 realize]
+    ].
+    button2 hiddenOnRealize:b1Hidden.
+    b2Hidden ifTrue:[
+	button2 unrealize
+    ] ifFalse:[
+	shown ifTrue:[button2 realize]
+    ].
+    thumb hiddenOnRealize:thumbHidden.
+    thumbHidden ifTrue:[
+	thumb unrealize
+    ] ifFalse:[
+	shown ifTrue:[thumb realize]
     ].
 
     "height of buttons is always my width"
@@ -233,7 +238,7 @@
     ].
 
     thumbHeight := h.
-    style := StyleSheet name.
+    style := styleSheet name.
     style == #next ifTrue:[
 	thumbHeight := thumbHeight - (thumb borderWidth * 2).
 	thumbWidth := thumbWidth - 1
@@ -250,23 +255,28 @@
 	thumbWidth := 1
     ].
 
-    (layout == #bottom) ifTrue:[
+    (buttonLayout == #bottom) ifTrue:[
 	"buttons at left"
 	thumb extent:(thumbWidth @ thumbHeight).
 	^ self
     ].
 
     sep2 := elementSpacing * 2.
-    (layout == #top) ifTrue:[
+    (buttonLayout == #top) ifTrue:[
 	"buttons at right"
 	thumbWidth := thumbWidth + borderWidth.
+	thumbHidden ifTrue:[
+	    bX := elementSpacing
+	] ifFalse:[
+	    bX := thumbWidth + sep2.
+	].
 	(how == #smaller) ifTrue:[
 	    thumb extent:(thumbWidth @ thumbHeight).
-	    button1 origin:((thumbWidth + sep2) @ bwn).
-	    button2 origin:((thumbWidth + sep2 + leftWidth) @ bwn)
+	    button1 origin:(bX @ bwn).
+	    button2 origin:((bX + leftWidth) @ bwn)
 	] ifFalse:[
-	    button1 origin:((thumbWidth + sep2) @ bwn).
-	    button2 origin:((thumbWidth + sep2 + leftWidth) @ bwn).
+	    button1 origin:(bX @ bwn).
+	    button2 origin:((bX + leftWidth) @ bwn).
 	    thumb extent:(thumbWidth @ thumbHeight)
 	].
 	^ self
--- a/HScroller.st	Fri May 19 18:41:01 1995 +0200
+++ b/HScroller.st	Tue Jun 06 06:16:07 1995 +0200
@@ -14,7 +14,7 @@
 
 the scroller part of a horizontal scrollbar
 
-$Header: /cvs/stx/stx/libwidg/Attic/HScroller.st,v 1.7 1995-05-12 18:24:19 claus Exp $
+$Header: /cvs/stx/stx/libwidg/Attic/HScroller.st,v 1.8 1995-06-06 04:13:54 claus Exp $
 written spring/summer 89 by claus
 '!
 
@@ -37,3 +37,12 @@
      but implemented, so that scroller can be used in place of a scrollbar"
 ! !
 
+!HorizontalScroller methodsFor:'queries'!
+
+preferredExtent
+    |w h|
+
+    w := self class defaultExtent x.
+    h := (device verticalPixelPerMillimeter asFloat * 6) rounded.
+    ^ w @ h.
+! !
--- a/HVScrView.st	Fri May 19 18:41:01 1995 +0200
+++ b/HVScrView.st	Tue Jun 06 06:16:07 1995 +0200
@@ -22,7 +22,7 @@
 COPYRIGHT (c) 1991 by Claus Gittinger
 	      All Rights Reserved
 
-$Header: /cvs/stx/stx/libwidg/Attic/HVScrView.st,v 1.10 1995-03-18 05:14:47 claus Exp $
+$Header: /cvs/stx/stx/libwidg/Attic/HVScrView.st,v 1.11 1995-06-06 04:13:58 claus Exp $
 written jan 91 by claus
 '!
 
@@ -44,21 +44,24 @@
 
 version
 "
-$Header: /cvs/stx/stx/libwidg/Attic/HVScrView.st,v 1.10 1995-03-18 05:14:47 claus Exp $
+$Header: /cvs/stx/stx/libwidg/Attic/HVScrView.st,v 1.11 1995-06-06 04:13:58 claus Exp $
 "
 !
 
 documentation
 "
     a view containing both horizontal and vertical scrollbars
-    and some other (slave-)view
+    and some other (slave-)view.
+
+    Please see the documentation and examples in my superclass, ScrollableView
 "
 ! !
 
 !HVScrollableView methodsFor:'initialization'!
 
 initializeFor:aViewClass miniScrollerH:miniH miniScrollerV:miniV
-    |negativeOffset halfMargin orgX mrg halfSpacing is3D cls hBorderWidth isST80|
+    |negativeOffset halfMargin orgX mrg halfSpacing 
+     is3D cls hBorderWidth isST80 isOpenWin extra|
 
     isST80 := StyleSheet name = #st80.  "leftover - remove it"
 
@@ -77,7 +80,8 @@
 
     negativeOffset := borderWidth negated.
     halfMargin := innerMargin // 2.
-    is3D := StyleSheet is3D.
+    is3D := styleSheet is3D.
+    isOpenWin := styleSheet name = #openwin.
 
     "
      change vertical scrollbars size
@@ -94,7 +98,15 @@
 	    halfSpacing := ViewSpacing // 2.
 	].
     ].
-    scrollBar extent:[scrollBar width @ (height - hScrollBar height - mrg)].
+
+    extra := 0.
+    isOpenWin ifTrue:[
+	extra := 2.
+    ].
+
+    scrollBar extent:[scrollBar width 
+		      @ 
+		     (height - hScrollBar height - mrg + extra)].
 
     hScrollBar thumbOrigin:0 thumbHeight:100.
 
@@ -108,9 +120,12 @@
 	]
     ] ifFalse:[
 	orgX := 0 - hBorderWidth.
-	isST80 ifTrue:[
+"/      isST80 ifTrue:[
 "/            orgX := orgX + 1
-	]
+"/      ]
+    ].
+    isOpenWin ifTrue:[
+	orgX := orgX + 1
     ].
 
     is3D ifTrue:[
@@ -118,7 +133,7 @@
 			   @
 			   (height - hScrollBar height - halfMargin)
 			  ]
-		   extent:[(width - scrollBar width - (innerMargin * 2))
+		   extent:[(width - scrollBar width - (innerMargin * 2) + extra)
 			   @
 			   hScrollBar height
 			  ]
@@ -198,7 +213,7 @@
     super scrolledView:aView.
 
     "redefine subviews size"
-    StyleSheet is3D ifTrue:[
+    styleSheet is3D ifTrue:[
 	scrolledView 
 	    extent:[(width 
 		     - scrollBar width 
@@ -226,15 +241,17 @@
 
 !HVScrollableView methodsFor:'queries'!
 
-preferedExtent
+preferredExtent
+    |pref m2|
+
     scrolledView notNil ifTrue:[ 
-       | pref |
-       pref := scrolledView preferedExtent.
-       ^ (pref x + scrollBar width + (innerMargin * 2)) 
-	 @ 
-	 (pref y + hScrollBar height + (innerMargin * 2)).
+	m2 := innerMargin * 2.
+        pref := scrolledView preferredExtent.
+        ^ (pref x + scrollBar width + m2) 
+	  @ 
+	  (pref y + hScrollBar height + m2).
     ].
-    ^ super preferedExtent.
+    ^ super preferredExtent.
 ! !
 
 !HVScrollableView methodsFor:'changes '!
--- a/HVScrollableView.st	Fri May 19 18:41:01 1995 +0200
+++ b/HVScrollableView.st	Tue Jun 06 06:16:07 1995 +0200
@@ -22,7 +22,7 @@
 COPYRIGHT (c) 1991 by Claus Gittinger
 	      All Rights Reserved
 
-$Header: /cvs/stx/stx/libwidg/HVScrollableView.st,v 1.10 1995-03-18 05:14:47 claus Exp $
+$Header: /cvs/stx/stx/libwidg/HVScrollableView.st,v 1.11 1995-06-06 04:13:58 claus Exp $
 written jan 91 by claus
 '!
 
@@ -44,21 +44,24 @@
 
 version
 "
-$Header: /cvs/stx/stx/libwidg/HVScrollableView.st,v 1.10 1995-03-18 05:14:47 claus Exp $
+$Header: /cvs/stx/stx/libwidg/HVScrollableView.st,v 1.11 1995-06-06 04:13:58 claus Exp $
 "
 !
 
 documentation
 "
     a view containing both horizontal and vertical scrollbars
-    and some other (slave-)view
+    and some other (slave-)view.
+
+    Please see the documentation and examples in my superclass, ScrollableView
 "
 ! !
 
 !HVScrollableView methodsFor:'initialization'!
 
 initializeFor:aViewClass miniScrollerH:miniH miniScrollerV:miniV
-    |negativeOffset halfMargin orgX mrg halfSpacing is3D cls hBorderWidth isST80|
+    |negativeOffset halfMargin orgX mrg halfSpacing 
+     is3D cls hBorderWidth isST80 isOpenWin extra|
 
     isST80 := StyleSheet name = #st80.  "leftover - remove it"
 
@@ -77,7 +80,8 @@
 
     negativeOffset := borderWidth negated.
     halfMargin := innerMargin // 2.
-    is3D := StyleSheet is3D.
+    is3D := styleSheet is3D.
+    isOpenWin := styleSheet name = #openwin.
 
     "
      change vertical scrollbars size
@@ -94,7 +98,15 @@
 	    halfSpacing := ViewSpacing // 2.
 	].
     ].
-    scrollBar extent:[scrollBar width @ (height - hScrollBar height - mrg)].
+
+    extra := 0.
+    isOpenWin ifTrue:[
+	extra := 2.
+    ].
+
+    scrollBar extent:[scrollBar width 
+		      @ 
+		     (height - hScrollBar height - mrg + extra)].
 
     hScrollBar thumbOrigin:0 thumbHeight:100.
 
@@ -108,9 +120,12 @@
 	]
     ] ifFalse:[
 	orgX := 0 - hBorderWidth.
-	isST80 ifTrue:[
+"/      isST80 ifTrue:[
 "/            orgX := orgX + 1
-	]
+"/      ]
+    ].
+    isOpenWin ifTrue:[
+	orgX := orgX + 1
     ].
 
     is3D ifTrue:[
@@ -118,7 +133,7 @@
 			   @
 			   (height - hScrollBar height - halfMargin)
 			  ]
-		   extent:[(width - scrollBar width - (innerMargin * 2))
+		   extent:[(width - scrollBar width - (innerMargin * 2) + extra)
 			   @
 			   hScrollBar height
 			  ]
@@ -198,7 +213,7 @@
     super scrolledView:aView.
 
     "redefine subviews size"
-    StyleSheet is3D ifTrue:[
+    styleSheet is3D ifTrue:[
 	scrolledView 
 	    extent:[(width 
 		     - scrollBar width 
@@ -226,15 +241,17 @@
 
 !HVScrollableView methodsFor:'queries'!
 
-preferedExtent
+preferredExtent
+    |pref m2|
+
     scrolledView notNil ifTrue:[ 
-       | pref |
-       pref := scrolledView preferedExtent.
-       ^ (pref x + scrollBar width + (innerMargin * 2)) 
-	 @ 
-	 (pref y + hScrollBar height + (innerMargin * 2)).
+	m2 := innerMargin * 2.
+        pref := scrolledView preferredExtent.
+        ^ (pref x + scrollBar width + m2) 
+	  @ 
+	  (pref y + hScrollBar height + m2).
     ].
-    ^ super preferedExtent.
+    ^ super preferredExtent.
 ! !
 
 !HVScrollableView methodsFor:'changes '!
--- a/HorizontalMiniScroller.st	Fri May 19 18:41:01 1995 +0200
+++ b/HorizontalMiniScroller.st	Tue Jun 06 06:16:07 1995 +0200
@@ -21,7 +21,7 @@
 COPYRIGHT (c) 1994 by Claus Gittinger
 	      All Rights Reserved
 
-$Header: /cvs/stx/stx/libwidg/HorizontalMiniScroller.st,v 1.3 1995-05-03 00:29:35 claus Exp $
+$Header: /cvs/stx/stx/libwidg/HorizontalMiniScroller.st,v 1.4 1995-06-06 04:13:41 claus Exp $
 '!
 
 !HorizontalMiniScroller class methodsFor:'documentation'!
@@ -42,7 +42,7 @@
 
 version
 "
-$Header: /cvs/stx/stx/libwidg/HorizontalMiniScroller.st,v 1.3 1995-05-03 00:29:35 claus Exp $
+$Header: /cvs/stx/stx/libwidg/HorizontalMiniScroller.st,v 1.4 1995-06-06 04:13:41 claus Exp $
 "
 !
 
@@ -52,9 +52,9 @@
 "
 ! !
 
-!HorizontalMiniScroller methodsFor:'initialization'!
+!HorizontalMiniScroller methodsFor:'queries'!
 
-computeInitialExtent
+preferredExtent
     "make my height very small"
 
     |w h mm|
@@ -62,14 +62,16 @@
     w := self class defaultExtent x.
     mm := (thumbLevel ~~ 0) ifTrue:[2.5] ifFalse:[2.0].
     h := (device verticalPixelPerMillimeter asFloat * mm) rounded.
-    self extent:w @ h.
-!
+    ^ w @ h.
+! !
+
+!HorizontalMiniScroller methodsFor:'initialization'!
 
 initStyle
     |style lvl|
 
     super initStyle.
-    style := StyleSheet name.
+    style := styleSheet name.
     style == #iris ifTrue:[
 	tallyLevel := 0.
 	tallyMarks := 0.
--- a/HorizontalPanelView.st	Fri May 19 18:41:01 1995 +0200
+++ b/HorizontalPanelView.st	Tue Jun 06 06:16:07 1995 +0200
@@ -21,7 +21,7 @@
 COPYRIGHT (c) 1989 by Claus Gittinger
 	      All Rights Reserved
 
-$Header: /cvs/stx/stx/libwidg/HorizontalPanelView.st,v 1.11 1995-05-12 18:24:12 claus Exp $
+$Header: /cvs/stx/stx/libwidg/HorizontalPanelView.st,v 1.12 1995-06-06 04:13:45 claus Exp $
 '!
 
 !HorizontalPanelView class methodsFor:'documentation'!
@@ -42,7 +42,7 @@
 
 version
 "
-$Header: /cvs/stx/stx/libwidg/HorizontalPanelView.st,v 1.11 1995-05-12 18:24:12 claus Exp $
+$Header: /cvs/stx/stx/libwidg/HorizontalPanelView.st,v 1.12 1995-06-06 04:13:45 claus Exp $
 "
 !
 
@@ -694,19 +694,21 @@
 layout
     "leftover for historic reasons - do not use any more"
 
-    self horizontalLayout
+    self obsoleteMethodWarning:'use #horizontalLayout'.
+    ^ self horizontalLayout
 !
 
 layout:aSymbol
     "leftover for historic reasons - do not use any more"
 
-    self horizontalLayout:aSymbol
+    self obsoleteMethodWarning:'use #horizontalLayout:'.
+    ^ self horizontalLayout:aSymbol
 ! !
 
 
 !HorizontalPanelView methodsFor:'queries'!
 
-preferedExtent
+preferredExtent
     "return a good extent, one that makes subviews fit"
 
     |sumOfWidths maxHeight maxWidth|
@@ -722,7 +724,7 @@
     subViews do:[:child |
 	|childsPreference|
 
-	childsPreference := child preferedExtent.
+	childsPreference := child preferredExtent.
 	sumOfWidths := sumOfWidths + childsPreference x.
 	maxHeight := maxHeight max:childsPreference y.
 	maxWidth := maxWidth max:childsPreference x.
--- a/HorizontalScrollBar.st	Fri May 19 18:41:01 1995 +0200
+++ b/HorizontalScrollBar.st	Tue Jun 06 06:16:07 1995 +0200
@@ -21,7 +21,7 @@
 COPYRIGHT (c) 1989 by Claus Gittinger
 	      All Rights Reserved
 
-$Header: /cvs/stx/stx/libwidg/HorizontalScrollBar.st,v 1.13 1995-05-17 12:25:08 claus Exp $
+$Header: /cvs/stx/stx/libwidg/HorizontalScrollBar.st,v 1.14 1995-06-06 04:13:50 claus Exp $
 '!
 
 !HorizontalScrollBar class methodsFor:'documentation'!
@@ -42,7 +42,7 @@
 
 version
 "
-$Header: /cvs/stx/stx/libwidg/HorizontalScrollBar.st,v 1.13 1995-05-17 12:25:08 claus Exp $
+$Header: /cvs/stx/stx/libwidg/HorizontalScrollBar.st,v 1.14 1995-06-06 04:13:50 claus Exp $
 "
 !
 
@@ -64,45 +64,6 @@
     thumb := HorizontalScroller in:self.
 !
 
-computeInitialExtent
-    "compute my extent from sub-components"
-
-    |w h leftForm rightForm wLeft hLeft wRight hRight style|
-
-    "need fix - this is a kludge;
-     the if should not be needed ..."
-    style := StyleSheet name.
-    style == #mswindows ifTrue:[
-	h := button1 height max:button2 height.
-	w := button1 width + button2 width + (Scroller defaultExtent x).
-    ] ifFalse:[
-	leftForm  := ArrowButton leftArrowButtonForm:style on:device.
-	rightForm := ArrowButton rightArrowButtonForm:style on:device.
-	"
-	 just in case ...
-	"
-	leftForm isNil ifTrue:[
-	    wLeft := hLeft := 16
-	] ifFalse:[
-	    wLeft := leftForm width.
-	    hLeft := leftForm height
-	].
-	rightForm isNil ifTrue:[
-	    wRight := hRight := 16
-	] ifFalse:[
-	    wRight := rightForm width.
-	    hRight := rightForm height
-	].
-	w := wLeft + wRight + (1 * 2) + (HorizontalScroller defaultExtent x).
-	h := hLeft max:hRight.
-	(style ~~ #normal) ifTrue:[
-	    h := h + 4.
-	    w := w + 4
-	].
-    ].
-    self extent:w @ h.
-!
-
 setElementPositions
     "position sub-components"
 
@@ -110,7 +71,7 @@
 
     bwn := borderWidth negated + margin.
 
-    (layout == #bottom) ifTrue:[
+    (buttonLayout == #bottom) ifTrue:[
 	"buttons at left"
 	button1 origin:(bwn @ bwn).
 	button1 viewGravity:#West.
@@ -124,7 +85,7 @@
 	^ self
     ].
 
-    (layout == #top) ifTrue:[
+    (buttonLayout == #top) ifTrue:[
 	"buttons at right"
 	button1 viewGravity:#West.
 	button2 viewGravity:#West.
@@ -132,7 +93,7 @@
 	thumb viewGravity:#West
     ].
 
-    "layout == #around "
+    "buttonLayout == #around "
     button1 origin:(bwn @ bwn).
     button1 viewGravity:#West.
     button2 viewGravity:#West.
@@ -166,13 +127,54 @@
     button2 action:aBlock
 ! !
 
+!HorizontalScrollBar methodsFor:'queries'!
+
+preferredExtent
+    "compute my extent from sub-components"
+
+    |w h leftForm rightForm wLeft hLeft wRight hRight style|
+
+    "need fix - this is a kludge;
+     the if should not be needed ..."
+    style := styleSheet name.
+    style == #mswindows ifTrue:[
+	h := button1 height max:button2 height.
+	w := button1 width + button2 width + (Scroller defaultExtent x).
+    ] ifFalse:[
+	leftForm  := ArrowButton leftArrowButtonForm:style on:device.
+	rightForm := ArrowButton rightArrowButtonForm:style on:device.
+	"
+	 just in case ...
+	"
+	leftForm isNil ifTrue:[
+	    wLeft := hLeft := 16
+	] ifFalse:[
+	    wLeft := leftForm width.
+	    hLeft := leftForm height
+	].
+	rightForm isNil ifTrue:[
+	    wRight := hRight := 16
+	] ifFalse:[
+	    wRight := rightForm width.
+	    hRight := rightForm height
+	].
+	w := wLeft + wRight + (1 * 2) + (HorizontalScroller defaultExtent x).
+	h := hLeft max:hRight.
+	(style ~~ #normal) ifTrue:[
+	    h := h + 4.
+	    w := w + 4
+	].
+    ].
+    ^ w @ h.
+! !
+
 !HorizontalScrollBar methodsFor:'event handling'!
 
 sizeChanged:how
     "handle changed size - reposition elements"
 
     |leftWidth rightWidth thumbWidth leftAndRightWidth bwn sep2 
-     thumbHeight h style|
+     thumbHeight h style b1Hidden b2Hidden thumbHidden bX|
 
     button1 isNil ifTrue:[^ self].
     button2 isNil ifTrue:[^ self].
@@ -185,42 +187,45 @@
 
     thumbWidth := width - leftAndRightWidth - borderWidth - (elementSpacing * 3).
 "
-    ((layout ~~ #top) and:[layout ~~ #bottom]) ifTrue:[
+    ((buttonLayout ~~ #top) and:[buttonLayout ~~ #bottom]) ifTrue:[
 	thumbWidth := thumbWidth - borderWidth
     ].
 "
-    layout == #around ifTrue:[
+    buttonLayout == #around ifTrue:[
 	thumbWidth := thumbWidth + borderWidth
     ].
 
     "if I become too small, hide buttons"
 
-    (width < leftAndRightWidth) ifTrue:[
-	button1 shown ifTrue:[
-	    button1 hidden.
-	    button2 hidden.
-	    thumb hidden
-	]
+    width < leftAndRightWidth ifTrue:[
+	b1Hidden := b2Hidden := thumbHidden := true.
     ] ifFalse:[
-	shown ifTrue:[
-	    button1 shown ifFalse:[
-		button1 show.
-		button2 show.
-		thumb show
-	    ]
-	]
+	b1Hidden := b2Hidden := thumbHidden := false.
     ].
 
     (thumbWidth < 10) ifTrue:[
-	thumb shown ifTrue:[
-	    thumb hidden
-	]
+	thumbHidden := true.
+    ] ifFalse:[
+	thumbHidden := false.
+    ].
+
+    button1 hiddenOnRealize:b1Hidden.
+    b1Hidden ifTrue:[
+	button1 unrealize
     ] ifFalse:[
-	thumb shown ifFalse:[
-	    button1 shown ifTrue:[
-		thumb show
-	    ]
-	]
+	shown ifTrue:[button1 realize]
+    ].
+    button2 hiddenOnRealize:b1Hidden.
+    b2Hidden ifTrue:[
+	button2 unrealize
+    ] ifFalse:[
+	shown ifTrue:[button2 realize]
+    ].
+    thumb hiddenOnRealize:thumbHidden.
+    thumbHidden ifTrue:[
+	thumb unrealize
+    ] ifFalse:[
+	shown ifTrue:[thumb realize]
     ].
 
     "height of buttons is always my width"
@@ -233,7 +238,7 @@
     ].
 
     thumbHeight := h.
-    style := StyleSheet name.
+    style := styleSheet name.
     style == #next ifTrue:[
 	thumbHeight := thumbHeight - (thumb borderWidth * 2).
 	thumbWidth := thumbWidth - 1
@@ -250,23 +255,28 @@
 	thumbWidth := 1
     ].
 
-    (layout == #bottom) ifTrue:[
+    (buttonLayout == #bottom) ifTrue:[
 	"buttons at left"
 	thumb extent:(thumbWidth @ thumbHeight).
 	^ self
     ].
 
     sep2 := elementSpacing * 2.
-    (layout == #top) ifTrue:[
+    (buttonLayout == #top) ifTrue:[
 	"buttons at right"
 	thumbWidth := thumbWidth + borderWidth.
+	thumbHidden ifTrue:[
+	    bX := elementSpacing
+	] ifFalse:[
+	    bX := thumbWidth + sep2.
+	].
 	(how == #smaller) ifTrue:[
 	    thumb extent:(thumbWidth @ thumbHeight).
-	    button1 origin:((thumbWidth + sep2) @ bwn).
-	    button2 origin:((thumbWidth + sep2 + leftWidth) @ bwn)
+	    button1 origin:(bX @ bwn).
+	    button2 origin:((bX + leftWidth) @ bwn)
 	] ifFalse:[
-	    button1 origin:((thumbWidth + sep2) @ bwn).
-	    button2 origin:((thumbWidth + sep2 + leftWidth) @ bwn).
+	    button1 origin:(bX @ bwn).
+	    button2 origin:((bX + leftWidth) @ bwn).
 	    thumb extent:(thumbWidth @ thumbHeight)
 	].
 	^ self
--- a/HorizontalScroller.st	Fri May 19 18:41:01 1995 +0200
+++ b/HorizontalScroller.st	Tue Jun 06 06:16:07 1995 +0200
@@ -14,7 +14,7 @@
 
 the scroller part of a horizontal scrollbar
 
-$Header: /cvs/stx/stx/libwidg/HorizontalScroller.st,v 1.7 1995-05-12 18:24:19 claus Exp $
+$Header: /cvs/stx/stx/libwidg/HorizontalScroller.st,v 1.8 1995-06-06 04:13:54 claus Exp $
 written spring/summer 89 by claus
 '!
 
@@ -37,3 +37,12 @@
      but implemented, so that scroller can be used in place of a scrollbar"
 ! !
 
+!HorizontalScroller methodsFor:'queries'!
+
+preferredExtent
+    |w h|
+
+    w := self class defaultExtent x.
+    h := (device verticalPixelPerMillimeter asFloat * 6) rounded.
+    ^ w @ h.
+! !
--- a/InfoBox.st	Fri May 19 18:41:01 1995 +0200
+++ b/InfoBox.st	Tue Jun 06 06:16:07 1995 +0200
@@ -25,7 +25,7 @@
 
 version
 "
-$Header: /cvs/stx/stx/libwidg/InfoBox.st,v 1.15 1995-05-03 16:29:26 claus Exp $
+$Header: /cvs/stx/stx/libwidg/InfoBox.st,v 1.16 1995-06-06 04:14:05 claus Exp $
 "
 !
 
@@ -223,8 +223,8 @@
 
 !InfoBox methodsFor:'queries'!
 
-preferedExtent 
-    "return my prefered extent"
+preferredExtent 
+    "return my preferred extent"
 
     |w h|
 
@@ -236,7 +236,7 @@
 	 formLabel widthIncludingBorder + 
 	 ViewSpacing + textLabel width + ViewSpacing +
 	 margin.
-    w := w max:(okButton preferedExtent x + (ViewSpacing * 2)).
+    w := w max:(okButton preferredExtent x + (ViewSpacing * 2)).
     h := ViewSpacing
 	 + ((formLabel heightIncludingBorder) max:(textLabel height))
 	 + (ViewSpacing * 4)
--- a/LSelBox.st	Fri May 19 18:41:01 1995 +0200
+++ b/LSelBox.st	Tue Jun 06 06:16:07 1995 +0200
@@ -21,7 +21,7 @@
 COPYRIGHT (c) 1990 by Claus Gittinger
 	      All Rights Reserved
 
-$Header: /cvs/stx/stx/libwidg/Attic/LSelBox.st,v 1.13 1995-05-17 12:25:14 claus Exp $
+$Header: /cvs/stx/stx/libwidg/Attic/LSelBox.st,v 1.14 1995-06-06 04:14:09 claus Exp $
 '!
 
 !ListSelectionBox class methodsFor:'documentation'!
@@ -42,7 +42,7 @@
 
 version
 "
-$Header: /cvs/stx/stx/libwidg/Attic/LSelBox.st,v 1.13 1995-05-17 12:25:14 claus Exp $
+$Header: /cvs/stx/stx/libwidg/Attic/LSelBox.st,v 1.14 1995-06-06 04:14:09 claus Exp $
 "
 !
 
@@ -163,7 +163,7 @@
 	enterField contents:(selectionList selectionValue).
 	self okPressed
     ].
-    enterField removeDependent:self. "dont want preferedExtent-changes"
+    enterField removeDependent:self. "dont want preferredExtent-changes"
 
     "
      mhm: the lists keyboard functions are disabled,
@@ -189,8 +189,8 @@
 
 !ListSelectionBox methodsFor:'queries'!
 
-preferedExtent
-    "return my prefered extent - thats the minimum size 
+preferredExtent
+    "return my preferred extent - thats the minimum size 
      I like to have, to make everything visible"
 
     |wWanted hWanted|
@@ -204,7 +204,7 @@
     hWanted := ViewSpacing + labelField height +
 	       ViewSpacing + enterField height +
 	       ViewSpacing + selectionList height +
-	       ViewSpacing + buttonPanel preferedExtent y +
+	       ViewSpacing + buttonPanel preferredExtent y +
 	       ViewSpacing - (ViewSpacing * 2).
 
     (hWanted < height) ifTrue:[
--- a/Label.st	Fri May 19 18:41:01 1995 +0200
+++ b/Label.st	Tue Jun 06 06:16:07 1995 +0200
@@ -24,7 +24,7 @@
 COPYRIGHT (c) 1989 by Claus Gittinger
 	      All Rights Reserved
 
-$Header: /cvs/stx/stx/libwidg/Label.st,v 1.23 1995-05-17 12:25:17 claus Exp $
+$Header: /cvs/stx/stx/libwidg/Label.st,v 1.24 1995-06-06 04:14:14 claus Exp $
 '!
 
 !Label class methodsFor:'documentation'!
@@ -45,7 +45,7 @@
 
 version
 "
-$Header: /cvs/stx/stx/libwidg/Label.st,v 1.23 1995-05-17 12:25:17 claus Exp $
+$Header: /cvs/stx/stx/libwidg/Label.st,v 1.24 1995-06-06 04:14:14 claus Exp $
 "
 !
 
@@ -1041,7 +1041,7 @@
      fixSize is set."
 
     logo notNil ifTrue:[
-	self extent:self preferedExtent.
+	self extent:self preferredExtent.
 	self computeLabelOrigin
     ]
 !
@@ -1079,8 +1079,8 @@
 
 !Label methodsFor:'queries'!
 
-preferedExtent
-    "return my prefered extent - this is the minimum size I would like to have"
+preferredExtent
+    "return my preferred extent - this is the minimum size I would like to have"
 
     |extra|
 
@@ -1089,5 +1089,5 @@
 	^ (labelWidth + extra) @ (labelHeight + extra)
     ].
 
-    ^ super preferedExtent
+    ^ super preferredExtent
 ! !
--- a/ListSelectionBox.st	Fri May 19 18:41:01 1995 +0200
+++ b/ListSelectionBox.st	Tue Jun 06 06:16:07 1995 +0200
@@ -21,7 +21,7 @@
 COPYRIGHT (c) 1990 by Claus Gittinger
 	      All Rights Reserved
 
-$Header: /cvs/stx/stx/libwidg/ListSelectionBox.st,v 1.13 1995-05-17 12:25:14 claus Exp $
+$Header: /cvs/stx/stx/libwidg/ListSelectionBox.st,v 1.14 1995-06-06 04:14:09 claus Exp $
 '!
 
 !ListSelectionBox class methodsFor:'documentation'!
@@ -42,7 +42,7 @@
 
 version
 "
-$Header: /cvs/stx/stx/libwidg/ListSelectionBox.st,v 1.13 1995-05-17 12:25:14 claus Exp $
+$Header: /cvs/stx/stx/libwidg/ListSelectionBox.st,v 1.14 1995-06-06 04:14:09 claus Exp $
 "
 !
 
@@ -163,7 +163,7 @@
 	enterField contents:(selectionList selectionValue).
 	self okPressed
     ].
-    enterField removeDependent:self. "dont want preferedExtent-changes"
+    enterField removeDependent:self. "dont want preferredExtent-changes"
 
     "
      mhm: the lists keyboard functions are disabled,
@@ -189,8 +189,8 @@
 
 !ListSelectionBox methodsFor:'queries'!
 
-preferedExtent
-    "return my prefered extent - thats the minimum size 
+preferredExtent
+    "return my preferred extent - thats the minimum size 
      I like to have, to make everything visible"
 
     |wWanted hWanted|
@@ -204,7 +204,7 @@
     hWanted := ViewSpacing + labelField height +
 	       ViewSpacing + enterField height +
 	       ViewSpacing + selectionList height +
-	       ViewSpacing + buttonPanel preferedExtent y +
+	       ViewSpacing + buttonPanel preferredExtent y +
 	       ViewSpacing - (ViewSpacing * 2).
 
     (hWanted < height) ifTrue:[
--- a/Make.proto	Fri May 19 18:41:01 1995 +0200
+++ b/Make.proto	Tue Jun 06 06:16:07 1995 +0200
@@ -1,4 +1,4 @@
-# $Header: /cvs/stx/stx/libwidg/Make.proto,v 1.20 1995-05-10 02:30:46 claus Exp $
+# $Header: /cvs/stx/stx/libwidg/Make.proto,v 1.21 1995-06-06 04:16:07 claus Exp $
 #
 # -------------- no need to change anything below ----------
 
@@ -7,11 +7,11 @@
 
 LIBNAME=libwidg
 STCOPT=$(LIBWIDG_STCOPT)
-STCLOCALOPT=-Pwidget-classes $(COMMONSYMBOLS)
+STCLOCALOPT='-Pwidgets-(libwidg)' $(COMMONSYMBOLS)
 
 RCSSOURCES=*.st Make.proto resources/*.rs
 
-all::       abbrev.stc objs classList.stc $(OBJTARGET)
+all::       abbrev.stc objs classList.stc $(OBJTARGET) GENLIBLIST
 
 #
 # some of them (FramedBox and below) should go to libwidg2,
@@ -37,7 +37,7 @@
 	      HPanelV.$(O)                 \
 	      VPanelV.$(O)                 \
 	      VarVPanel.$(O)               \
-	        VarHPanel.$(O)             \
+		VarHPanel.$(O)             \
 	      Button.$(O)                  \
 		ArrButton.$(O)             \
 	      HScroller.$(O)               \
@@ -130,7 +130,7 @@
 DEVDRAWABLE=$(I)/DevDraw.H $(I)/DMedium.H $(I)/GC.H $(OBJECT)
 PSEUDOVIEW=$(I)/PseudoV.H $(DEVDRAWABLE)
 SIMPLEVIEW=$(I)/SimpleView.H $(PSEUDOVIEW)
-VIEW=$(I)/View.H $(SIPLEVIEW)
+VIEW=$(I)/View.H $(SIMPLEVIEW)
 POPUPVIEW=$(I)/PopUpView.H $(I)/TopView.H $(VIEW)
 STDSYSVIEW=$(I)/StdSysV.H $(I)/TopView.H $(VIEW)
 LISTVIEW=$(I)/ListView.H $(VIEW)
--- a/MenuView.st	Fri May 19 18:41:01 1995 +0200
+++ b/MenuView.st	Tue Jun 06 06:16:07 1995 +0200
@@ -17,13 +17,12 @@
 			      lineLevel lineInset masterView hilightStyle
 			      needResize'
        classVariableNames:'DefaultFont DefaultCheckColor DefaultViewBackground
-			   DefaultForegroundColor
-			   DefaultBackgroundColor 
+			   DefaultForegroundColor DefaultBackgroundColor 
 			   DefaultDisabledForegroundColor
-			   DefaultHilightForegroundColor
-			   DefaultHilightBackgroundColor 
+			   DefaultHilightForegroundColor DefaultHilightBackgroundColor 
 			   DefaultHilightLevel DefaultHilightStyle
-			   DefaultLineLevel
+			   DefaultHilightFrameColor
+			   DefaultLineLevel DefaultLineInset
 			   DefaultShadowColor DefaultLightColor'
        poolDictionaries:''
        category:'Views-Menus'
@@ -33,7 +32,7 @@
 COPYRIGHT (c) 1989 by Claus Gittinger
 	      All Rights Reserved
 
-$Header: /cvs/stx/stx/libwidg/MenuView.st,v 1.27 1995-05-17 12:25:35 claus Exp $
+$Header: /cvs/stx/stx/libwidg/MenuView.st,v 1.28 1995-06-06 04:14:23 claus Exp $
 '!
 
 !MenuView class methodsFor:'documentation'!
@@ -54,7 +53,7 @@
 
 version
 "
-$Header: /cvs/stx/stx/libwidg/MenuView.st,v 1.27 1995-05-17 12:25:35 claus Exp $
+$Header: /cvs/stx/stx/libwidg/MenuView.st,v 1.28 1995-06-06 04:14:23 claus Exp $
 "
 !
 
@@ -80,6 +79,33 @@
     menu entries starting with '\c' are check-entries.
     menu entries conisting of '-' alone, are separating lines.
     menu entries conisting of '=' alone, are double separating lines.
+
+
+    StyleSheet defaults:
+
+	menuFont                    font to use for menus
+
+	menuViewBackground          view background (should be same as menuBackgroundColor)
+	menuForegroundColor         foreground color
+	menuBackgroundColor         background color
+
+	menuShadowColor             shadow color for 3D effects
+	menuLightColor              lightColor for 3D effects
+	menuHilightForegroundColor  hilighted items foregroundColor
+	menuHilightBackgroundColor  hilighted items backgroundColor
+
+	menuHilightFrameColor       frame arounf hilighted items (or nil, if none)
+				    defaults to selectionHilightFrameColor
+	menuHilightLevel            3D level of selected items
+	menuHilightStyle            #openwin or nil (special kludge)
+	menuSeparatingLineLevel     3D level of sep. lines
+	menuSeparatingLineInset     left/right inset of sep. lines
+	menuDisabledForegroundColor foreground color of disabled items
+	menuCheckColor              color to use for check marks
+	menuFont                    font to use
+
+    other values and some defaults are inherited via SelectionInListViews
+    styles (i.e. look for selectionForegroundColor ...)
 "
 !
 
@@ -114,9 +140,12 @@
     DefaultLightColor := StyleSheet colorAt:'menuLightColor'.
     DefaultHilightForegroundColor := StyleSheet colorAt:'menuHilightForegroundColor'.
     DefaultHilightBackgroundColor := StyleSheet colorAt:'menuHilightBackgroundColor'.
+    DefaultHilightFrameColor := StyleSheet colorAt:'menuHilightFrameColor' 
+				default:(StyleSheet colorAt:'selectionHilightFrameColor').
     DefaultHilightLevel := StyleSheet at:'menuHilightLevel'.
     DefaultHilightStyle := StyleSheet at:'menuHilightStyle'.
     DefaultLineLevel := StyleSheet at:'menuSeparatingLineLevel'.
+    DefaultLineInset := StyleSheet at:'menuSeparatingLineInset'.
     DefaultDisabledForegroundColor := StyleSheet colorAt:'menuDisabledForegroundColor' default:Color darkGrey.
     DefaultCheckColor := StyleSheet colorAt:'menuCheckColor'.
     DefaultFont := StyleSheet fontAt:'menuFont'.
@@ -217,9 +246,12 @@
 !MenuView methodsFor:'initialize / release'!
 
 initialize
+    |style|
+
     super initialize.
 
-    ((style ~~ #normal) and:[style ~~ #mswindows]) ifTrue:[
+    (((style := styleSheet name) ~~ #normal) 
+    and:[style ~~ #mswindows]) ifTrue:[
 	borderWidth := 1.
 	self level:1
     ].
@@ -278,7 +310,9 @@
     ].
     hilightStyle := DefaultHilightStyle.
 
-    StyleSheet is3D ifTrue:[
+    hilightFrameColor := DefaultHilightFrameColor.
+
+    styleSheet is3D ifTrue:[
 	"some 3D style menu - set hilight defaults to same"
 
 	DefaultHilightForegroundColor notNil ifTrue:[
@@ -315,19 +349,18 @@
 	]
     ].
 
+    DefaultLineInset notNil ifTrue:[
+	lineInset := DefaultLineInset
+    ] ifFalse:[
+	lineInset := (device horizontalPixelPerMillimeter * 0.8) rounded.
+    ].
+
     "
      the following has to be changed to
      use the styleSheet too
     "
-    style := StyleSheet name.
-    (style ~~ #normal) ifTrue:[
-	"the inset on each side"
-	style == #motif ifTrue:[
-	    lineInset := 0
-	] ifFalse:[
-	    lineInset := (device horizontalPixelPerMillimeter * 0.8) rounded.
-	]
-    ].
+    style := styleSheet name asSymbol.
+
     (style == #iris) ifTrue:[
 	device hasGreyscales ifTrue:[
 	    lineSpacing := 3
@@ -342,7 +375,6 @@
     ].
     (style == #st80) ifTrue:[
 	level := 0.
-	lineInset := 0
     ].
     DefaultViewBackground notNil ifTrue:[
 	viewBackground := DefaultViewBackground on:device
@@ -389,7 +421,7 @@
 
 !MenuView methodsFor:'queries'!
 
-preferedExtent 
+preferredExtent 
     |margin2 w h|
 
     widthOfWidestLine := nil.  "/ i.e. unknown
@@ -1076,7 +1108,7 @@
     my := self yOfVisibleLine:index.
     org := device translatePoint:(mx @ my)
 			    from:(self id)
-			      to:(DisplayRootView new id).
+			      to:(device rootWindowId "DisplayRootView new id").
 
 
     windowGroup notNil ifTrue:[
@@ -1097,7 +1129,7 @@
     m makeFullyVisible.
     m noShadow.
     m realize. 
-    device synchronizeOutput.
+    device flush.
 
     subMenuShown := m
 !
@@ -1157,7 +1189,7 @@
 !
 
 show
-    hidden := false.
+    hiddenOnRealize := false.
     self realize
 ! !
 
@@ -1376,12 +1408,15 @@
 	isDoubleLine ifTrue:[
 	    y := y - (fontHeight // 8).
 	].
+
+	right := width - 1 - lineInset.
+
 	lineLevel == 0 ifTrue:[
 	    self paint:fgColor.
-	    self displayLineFromX:0 y:y toX:width y:y.
+	    self displayLineFromX:lineInset y:y toX:right y:y.
 	    isDoubleLine ifTrue:[
 		y := y + (fontHeight // 4).
-		self displayLineFromX:0 y:y toX:width y:y
+		self displayLineFromX:lineInset y:y toX:right y:y
 	    ]
 	] ifFalse:[
 	    "the inset on each side"
@@ -1393,7 +1428,6 @@
 		clr1 := lightColor.
 		clr2 := shadowColor.
 	    ].
-	    right := width - 1 - lineInset.
 
 	    self paint:clr1.
 	    self displayLineFromX:lineInset y:y toX:right y:y.
--- a/MiniScr.st	Fri May 19 18:41:01 1995 +0200
+++ b/MiniScr.st	Tue Jun 06 06:16:07 1995 +0200
@@ -21,7 +21,7 @@
 COPYRIGHT (c) 1994 by Claus Gittinger
 	      All Rights Reserved
 
-$Header: /cvs/stx/stx/libwidg/Attic/MiniScr.st,v 1.3 1995-05-03 00:36:25 claus Exp $
+$Header: /cvs/stx/stx/libwidg/Attic/MiniScr.st,v 1.4 1995-06-06 04:14:29 claus Exp $
 '!
 
 !MiniScroller class methodsFor:'documentation'!
@@ -42,7 +42,7 @@
 
 version
 "
-$Header: /cvs/stx/stx/libwidg/Attic/MiniScr.st,v 1.3 1995-05-03 00:36:25 claus Exp $
+$Header: /cvs/stx/stx/libwidg/Attic/MiniScr.st,v 1.4 1995-06-06 04:14:29 claus Exp $
 "
 !
 
@@ -52,9 +52,8 @@
 "
 ! !
 
-!MiniScroller methodsFor:'initialization'!
-
-computeInitialExtent
+!MiniScroller methodsFor:'queries'!
+preferredExtent
     "make my width very small"
 
     |w h mm|
@@ -62,8 +61,10 @@
     h := self class defaultExtent y.
     mm := (thumbLevel ~~ 0) ifTrue:[2.5] ifFalse:[2.0].
     w := (device horizontalPixelPerMillimeter asFloat * mm) rounded.
-    self extent:w @ h.
-!
+    ^ w @ h.
+! !
+
+!MiniScroller methodsFor:'initialization'!
 
 initStyle
     |style lvl|
--- a/MiniScroller.st	Fri May 19 18:41:01 1995 +0200
+++ b/MiniScroller.st	Tue Jun 06 06:16:07 1995 +0200
@@ -21,7 +21,7 @@
 COPYRIGHT (c) 1994 by Claus Gittinger
 	      All Rights Reserved
 
-$Header: /cvs/stx/stx/libwidg/MiniScroller.st,v 1.3 1995-05-03 00:36:25 claus Exp $
+$Header: /cvs/stx/stx/libwidg/MiniScroller.st,v 1.4 1995-06-06 04:14:29 claus Exp $
 '!
 
 !MiniScroller class methodsFor:'documentation'!
@@ -42,7 +42,7 @@
 
 version
 "
-$Header: /cvs/stx/stx/libwidg/MiniScroller.st,v 1.3 1995-05-03 00:36:25 claus Exp $
+$Header: /cvs/stx/stx/libwidg/MiniScroller.st,v 1.4 1995-06-06 04:14:29 claus Exp $
 "
 !
 
@@ -52,9 +52,8 @@
 "
 ! !
 
-!MiniScroller methodsFor:'initialization'!
-
-computeInitialExtent
+!MiniScroller methodsFor:'queries'!
+preferredExtent
     "make my width very small"
 
     |w h mm|
@@ -62,8 +61,10 @@
     h := self class defaultExtent y.
     mm := (thumbLevel ~~ 0) ifTrue:[2.5] ifFalse:[2.0].
     w := (device horizontalPixelPerMillimeter asFloat * mm) rounded.
-    self extent:w @ h.
-!
+    ^ w @ h.
+! !
+
+!MiniScroller methodsFor:'initialization'!
 
 initStyle
     |style lvl|
--- a/OptBox.st	Fri May 19 18:41:01 1995 +0200
+++ b/OptBox.st	Tue Jun 06 06:16:07 1995 +0200
@@ -21,7 +21,7 @@
 COPYRIGHT (c) 1991 by Claus Gittinger
 	     All Rights Reserved
 
-$Header: /cvs/stx/stx/libwidg/Attic/OptBox.st,v 1.16 1995-05-03 00:36:41 claus Exp $
+$Header: /cvs/stx/stx/libwidg/Attic/OptBox.st,v 1.17 1995-06-06 04:14:35 claus Exp $
 '!
 
 !OptionBox class methodsFor:'documentation'!
@@ -42,7 +42,7 @@
 
 version
 "
-$Header: /cvs/stx/stx/libwidg/Attic/OptBox.st,v 1.16 1995-05-03 00:36:41 claus Exp $
+$Header: /cvs/stx/stx/libwidg/Attic/OptBox.st,v 1.17 1995-06-06 04:14:35 claus Exp $
 "
 !
 
@@ -241,9 +241,12 @@
     textLabel origin:((ViewSpacing + formLabel width + ViewSpacing) @ ViewSpacing).
 
     buttonPanel := HorizontalPanelView origin:(0.0 @ 1.0) corner:(1.0 @ 1.0) in:self.
-    buttonPanel bottomInset:ViewSpacing;
-		   topInset:(font height + ViewSpacing * 2) negated.
-    buttonPanel borderWidth:0; layout:#fitSpace.
+    buttonPanel 
+	bottomInset:ViewSpacing;
+	topInset:(font height + ViewSpacing * 2) negated.
+    buttonPanel 
+	borderWidth:0; 
+	horizontalLayout:#fitSpace.
 
     nButt := buttons size.
 
@@ -305,18 +308,18 @@
     ^ self extent // 2
 !
 
-preferedExtent 
+preferredExtent 
     "return a size to make everything fit into myself"
 
     |w w1 w2 h maxH prefPanel|
 
     w1 := ViewSpacing + formLabel width + ViewSpacing + textLabel width + ViewSpacing.
-    prefPanel := buttonPanel preferedExtent.
+    prefPanel := buttonPanel preferredExtent.
     w := w1 max:prefPanel x.
 
 "/    maxH := 0.
 "/    buttons do:[:button |
-"/        maxH := maxH max:(button preferedExtent y)
+"/        maxH := maxH max:(button preferredExtent y)
 "/    ].
     maxH := prefPanel y.
 
--- a/OptionBox.st	Fri May 19 18:41:01 1995 +0200
+++ b/OptionBox.st	Tue Jun 06 06:16:07 1995 +0200
@@ -21,7 +21,7 @@
 COPYRIGHT (c) 1991 by Claus Gittinger
 	     All Rights Reserved
 
-$Header: /cvs/stx/stx/libwidg/OptionBox.st,v 1.16 1995-05-03 00:36:41 claus Exp $
+$Header: /cvs/stx/stx/libwidg/OptionBox.st,v 1.17 1995-06-06 04:14:35 claus Exp $
 '!
 
 !OptionBox class methodsFor:'documentation'!
@@ -42,7 +42,7 @@
 
 version
 "
-$Header: /cvs/stx/stx/libwidg/OptionBox.st,v 1.16 1995-05-03 00:36:41 claus Exp $
+$Header: /cvs/stx/stx/libwidg/OptionBox.st,v 1.17 1995-06-06 04:14:35 claus Exp $
 "
 !
 
@@ -241,9 +241,12 @@
     textLabel origin:((ViewSpacing + formLabel width + ViewSpacing) @ ViewSpacing).
 
     buttonPanel := HorizontalPanelView origin:(0.0 @ 1.0) corner:(1.0 @ 1.0) in:self.
-    buttonPanel bottomInset:ViewSpacing;
-		   topInset:(font height + ViewSpacing * 2) negated.
-    buttonPanel borderWidth:0; layout:#fitSpace.
+    buttonPanel 
+	bottomInset:ViewSpacing;
+	topInset:(font height + ViewSpacing * 2) negated.
+    buttonPanel 
+	borderWidth:0; 
+	horizontalLayout:#fitSpace.
 
     nButt := buttons size.
 
@@ -305,18 +308,18 @@
     ^ self extent // 2
 !
 
-preferedExtent 
+preferredExtent 
     "return a size to make everything fit into myself"
 
     |w w1 w2 h maxH prefPanel|
 
     w1 := ViewSpacing + formLabel width + ViewSpacing + textLabel width + ViewSpacing.
-    prefPanel := buttonPanel preferedExtent.
+    prefPanel := buttonPanel preferredExtent.
     w := w1 max:prefPanel x.
 
 "/    maxH := 0.
 "/    buttons do:[:button |
-"/        maxH := maxH max:(button preferedExtent y)
+"/        maxH := maxH max:(button preferredExtent y)
 "/    ].
     maxH := prefPanel y.
 
--- a/PullDMenu.st	Fri May 19 18:41:01 1995 +0200
+++ b/PullDMenu.st	Tue Jun 06 06:16:07 1995 +0200
@@ -34,7 +34,7 @@
 COPYRIGHT (c) 1989 by Claus Gittinger
 	     All Rights Reserved
 
-$Header: /cvs/stx/stx/libwidg/Attic/PullDMenu.st,v 1.18 1995-05-17 12:25:49 claus Exp $
+$Header: /cvs/stx/stx/libwidg/Attic/PullDMenu.st,v 1.19 1995-06-06 04:14:42 claus Exp $
 '!
 
 !PullDownMenu class methodsFor:'documentation'!
@@ -55,7 +55,7 @@
 
 version
 "
-$Header: /cvs/stx/stx/libwidg/Attic/PullDMenu.st,v 1.18 1995-05-17 12:25:49 claus Exp $
+$Header: /cvs/stx/stx/libwidg/Attic/PullDMenu.st,v 1.19 1995-06-06 04:14:42 claus Exp $
 "
 !
 
@@ -404,6 +404,8 @@
 !
 
 initStyle
+    |style|
+
     super initStyle.
 
     showSeparatingLines := DefaultSeparatingLines. "/ false.
@@ -440,7 +442,8 @@
 	].
 	topMargin := 2.
 
-	((StyleSheet name == #iris) or:[StyleSheet name == #motif]) ifTrue:[
+	style := styleSheet name.
+	((style == #iris) or:[style == #motif]) ifTrue:[
 	    self level:2.
 	    onLevel := 2.
 	    offLevel := 0.
@@ -514,7 +517,7 @@
 showSeparatingLines:aBoolean
     "turn on/off drawing of separating lines.
      You should not use this method; instead leave the value as
-     defined in the StyleSheet."
+     defined in the styleSheet."
 
     showSeparatingLines := aBoolean.
     shown ifTrue:[
@@ -527,7 +530,7 @@
     "set the menus font.
      adjusts menu-origins when font changes.
      You should not use this method; instead leave the value as
-     defined in the StyleSheet."
+     defined in the styleSheet."
 
     aFont ~~ font ifTrue:[
 	super font:(aFont on:device).
@@ -541,7 +544,7 @@
 foregroundColor:aColor
     "set the foreground drawing color.
      You should not use this method; instead leave the value as
-     defined in the StyleSheet."
+     defined in the styleSheet."
 
     fgColor := aColor on:device
 !
@@ -549,7 +552,7 @@
 backgroundColor:aColor
     "set the background drawing color.
      You should not use this method; instead leave the value as
-     defined in the StyleSheet."
+     defined in the styleSheet."
 
     bgColor := aColor on:device
 ! !
@@ -640,7 +643,7 @@
 "/    aMenu origin:((left + (self titleLenUpTo:index)) 
 "/                  @
 "/                  (height + aMenu borderWidth)).
-    aMenu hidden:true.
+    aMenu hiddenOnRealize:true.
     menus at:index put:aMenu.
     aMenu masterView:self.
 !
--- a/PullDownMenu.st	Fri May 19 18:41:01 1995 +0200
+++ b/PullDownMenu.st	Tue Jun 06 06:16:07 1995 +0200
@@ -34,7 +34,7 @@
 COPYRIGHT (c) 1989 by Claus Gittinger
 	     All Rights Reserved
 
-$Header: /cvs/stx/stx/libwidg/PullDownMenu.st,v 1.18 1995-05-17 12:25:49 claus Exp $
+$Header: /cvs/stx/stx/libwidg/PullDownMenu.st,v 1.19 1995-06-06 04:14:42 claus Exp $
 '!
 
 !PullDownMenu class methodsFor:'documentation'!
@@ -55,7 +55,7 @@
 
 version
 "
-$Header: /cvs/stx/stx/libwidg/PullDownMenu.st,v 1.18 1995-05-17 12:25:49 claus Exp $
+$Header: /cvs/stx/stx/libwidg/PullDownMenu.st,v 1.19 1995-06-06 04:14:42 claus Exp $
 "
 !
 
@@ -404,6 +404,8 @@
 !
 
 initStyle
+    |style|
+
     super initStyle.
 
     showSeparatingLines := DefaultSeparatingLines. "/ false.
@@ -440,7 +442,8 @@
 	].
 	topMargin := 2.
 
-	((StyleSheet name == #iris) or:[StyleSheet name == #motif]) ifTrue:[
+	style := styleSheet name.
+	((style == #iris) or:[style == #motif]) ifTrue:[
 	    self level:2.
 	    onLevel := 2.
 	    offLevel := 0.
@@ -514,7 +517,7 @@
 showSeparatingLines:aBoolean
     "turn on/off drawing of separating lines.
      You should not use this method; instead leave the value as
-     defined in the StyleSheet."
+     defined in the styleSheet."
 
     showSeparatingLines := aBoolean.
     shown ifTrue:[
@@ -527,7 +530,7 @@
     "set the menus font.
      adjusts menu-origins when font changes.
      You should not use this method; instead leave the value as
-     defined in the StyleSheet."
+     defined in the styleSheet."
 
     aFont ~~ font ifTrue:[
 	super font:(aFont on:device).
@@ -541,7 +544,7 @@
 foregroundColor:aColor
     "set the foreground drawing color.
      You should not use this method; instead leave the value as
-     defined in the StyleSheet."
+     defined in the styleSheet."
 
     fgColor := aColor on:device
 !
@@ -549,7 +552,7 @@
 backgroundColor:aColor
     "set the background drawing color.
      You should not use this method; instead leave the value as
-     defined in the StyleSheet."
+     defined in the styleSheet."
 
     bgColor := aColor on:device
 ! !
@@ -640,7 +643,7 @@
 "/    aMenu origin:((left + (self titleLenUpTo:index)) 
 "/                  @
 "/                  (height + aMenu borderWidth)).
-    aMenu hidden:true.
+    aMenu hiddenOnRealize:true.
     menus at:index put:aMenu.
     aMenu masterView:self.
 !
--- a/RButtGrp.st	Fri May 19 18:41:01 1995 +0200
+++ b/RButtGrp.st	Tue Jun 06 06:16:07 1995 +0200
@@ -23,7 +23,7 @@
 COPYRIGHT (c) 1991 by Claus Gittinger
 	      All Rights Reserved
 
-$Header: /cvs/stx/stx/libwidg/Attic/RButtGrp.st,v 1.10 1995-04-11 16:24:11 claus Exp $
+$Header: /cvs/stx/stx/libwidg/Attic/RButtGrp.st,v 1.11 1995-06-06 04:14:48 claus Exp $
 '!
 
 !RadioButtonGroup class methodsFor:'documentation '!
@@ -44,7 +44,7 @@
 
 version
 "
-$Header: /cvs/stx/stx/libwidg/Attic/RButtGrp.st,v 1.10 1995-04-11 16:24:11 claus Exp $
+$Header: /cvs/stx/stx/libwidg/Attic/RButtGrp.st,v 1.11 1995-06-06 04:14:48 claus Exp $
 "
 !
 
@@ -78,7 +78,7 @@
 	g add:b.
 	b := Toggle label:'three' in:panel.
 	g add:b.
-	top extent:(panel preferedExtent).
+	top extent:(panel preferredExtent).
 	top open.
 
     example (using RadioButtons for 'one-on behavior'):
@@ -94,7 +94,7 @@
 	g add:b.
 	b := RadioButton label:'three' in:panel.
 	g add:b.
-	top extent:(panel preferedExtent).
+	top extent:(panel preferredExtent).
 	top open.
 
     example (same, with button 'two' initially on):
@@ -111,7 +111,7 @@
 	b turnOn.
 	b := RadioButton label:'three' in:panel.
 	g add:b.
-	top extent:(panel preferedExtent).
+	top extent:(panel preferredExtent).
 	top open.
 "
 ! !
@@ -120,7 +120,7 @@
 
 add:aRadioButton
     super add:aRadioButton.
-    aRadioButton model:self; change:#elementChanged:from:.
+    aRadioButton model:self; changeMessage:#elementChanged:from:.
 "/    aRadioButton addDependent:self.
     (aRadioButton respondsTo:#group) ifTrue:[aRadioButton group:self]
 ! !
--- a/RadioButtonGroup.st	Fri May 19 18:41:01 1995 +0200
+++ b/RadioButtonGroup.st	Tue Jun 06 06:16:07 1995 +0200
@@ -23,7 +23,7 @@
 COPYRIGHT (c) 1991 by Claus Gittinger
 	      All Rights Reserved
 
-$Header: /cvs/stx/stx/libwidg/RadioButtonGroup.st,v 1.10 1995-04-11 16:24:11 claus Exp $
+$Header: /cvs/stx/stx/libwidg/RadioButtonGroup.st,v 1.11 1995-06-06 04:14:48 claus Exp $
 '!
 
 !RadioButtonGroup class methodsFor:'documentation '!
@@ -44,7 +44,7 @@
 
 version
 "
-$Header: /cvs/stx/stx/libwidg/RadioButtonGroup.st,v 1.10 1995-04-11 16:24:11 claus Exp $
+$Header: /cvs/stx/stx/libwidg/RadioButtonGroup.st,v 1.11 1995-06-06 04:14:48 claus Exp $
 "
 !
 
@@ -78,7 +78,7 @@
 	g add:b.
 	b := Toggle label:'three' in:panel.
 	g add:b.
-	top extent:(panel preferedExtent).
+	top extent:(panel preferredExtent).
 	top open.
 
     example (using RadioButtons for 'one-on behavior'):
@@ -94,7 +94,7 @@
 	g add:b.
 	b := RadioButton label:'three' in:panel.
 	g add:b.
-	top extent:(panel preferedExtent).
+	top extent:(panel preferredExtent).
 	top open.
 
     example (same, with button 'two' initially on):
@@ -111,7 +111,7 @@
 	b turnOn.
 	b := RadioButton label:'three' in:panel.
 	g add:b.
-	top extent:(panel preferedExtent).
+	top extent:(panel preferredExtent).
 	top open.
 "
 ! !
@@ -120,7 +120,7 @@
 
 add:aRadioButton
     super add:aRadioButton.
-    aRadioButton model:self; change:#elementChanged:from:.
+    aRadioButton model:self; changeMessage:#elementChanged:from:.
 "/    aRadioButton addDependent:self.
     (aRadioButton respondsTo:#group) ifTrue:[aRadioButton group:self]
 ! !
--- a/ScrView.st	Fri May 19 18:41:01 1995 +0200
+++ b/ScrView.st	Tue Jun 06 06:16:07 1995 +0200
@@ -22,7 +22,7 @@
 COPYRIGHT (c) 1989 by Claus Gittinger
 	      All Rights Reserved
 
-$Header: /cvs/stx/stx/libwidg/Attic/ScrView.st,v 1.16 1995-05-07 00:16:36 claus Exp $
+$Header: /cvs/stx/stx/libwidg/Attic/ScrView.st,v 1.17 1995-06-06 04:14:53 claus Exp $
 '!
 
 !ScrollableView class methodsFor:'documentation'!
@@ -43,46 +43,77 @@
 
 version
 "
-$Header: /cvs/stx/stx/libwidg/Attic/ScrView.st,v 1.16 1995-05-07 00:16:36 claus Exp $
+$Header: /cvs/stx/stx/libwidg/Attic/ScrView.st,v 1.17 1995-06-06 04:14:53 claus Exp $
 "
 !
 
 documentation
 "
     a view containing a scrollbar and some other (slave-)view.
-    This view wraps scrollbars around the view to be scrolled.
+    This view wraps scrollbar(s) around the view to be scrolled.
     The scrollbars are setup to send scrollUp/scrollDown/scrollVerticalTo
     and scrollLeft/scrollRight/scrollHorizontalTo- messages whenever moved.
-    The view itself has to omplement these (there is a default implementation
+    The view itself has to implement these (there is a default implementation
     in the common View class for this.
 
     For the scrollbars to know about the full (maximum) size, the view
     must implement #heightOfContents and/or #widthOfContents.
-    The values returned by these are used to compute the fractio which is
-    visible (i.e. the scrollers thumb heights).
+    The values returned by these methods are used to compute the fraction
+    which is visible (i.e. the scrollers thumb heights).
 
     There are two ways to create a ScrollableView:
     if the type of the view to be scrolled is known in advance,
     use:
-	v := ScrollableView for:<ViewClass> in:someSuperView.
+	v := ScrollableView for:<ViewClass>
+    or:
+	v := ScrollableView for:<ViewClass> in:someSuperView
 
     otherwise, create the scrollableView empty with:
-	v := ScrollableView in:someSuperView.
+
+	v := ScrollableView new
+    or:
+	v := ScrollableView in:someSuperView
+
     and define the view later with:
+
 	v scrolledView:aViewToBeScrolled
 
-    It is also possible to change the scrolledView multiple times,
-    for example if different views are needed to display different types
-    of data (see example2).
+    Finally, if the view to be scrolled has been already created,
+    use:
+
+	v := ScrollableView forView:aViewToBeScrolled
+    or:    
+	v := ScrollableView forView:aViewToBeScrolled in:someSuperView
 
-    If you want to scroll views (instead of contents), you need a companion
-    class (ViewScroller). See the documentation there.
+    It is also possible to change the scrolledView later (even multiple times).
+    This may be useful, if different views are needed to display different types
+    of data (see example2) and at creation time, it is not known what type
+    of view is required (multimedia applications).
+
+    If you want to scroll views (instead of a views contents), you need a 
+    companion class (ViewScroller). See the documentation there.
 
     If you need horizontal scrolling too, use an instance of HVScrollableView.
 
     By default, scrollbars are full size scrollbars - for horizontal scrolling
     (which is less often used), scrollableViews can optionally be created with
     miniscrollers which take up less screen space.
+
+    TODO:
+	this is pretty old and needs a rewrite. There are quite some
+	historic leftovers found here and things can be done better
+	(especially in initializeFor...)
+
+	Also, it should be rewritten into one class which supports both
+	Vertical-only, Horizontal-only and HV scrolling.
+	Currently, horizontal-only scrolling is not available.
+	(you have to write your own class ...)
+
+	Finally, some means to hide scrollbars should be added - this would
+	give more screenspace to the view when all is visible 
+	(and therefore, the scrollbars are not needed, anyway)
+
+	Expect the above things to be fixed in an upcoming version.
 "
 !
 
@@ -393,7 +424,7 @@
 !
 
 initializeFor:aViewClass miniScrollerH:miniH miniScrollerV:miniV 
-    |negativeOffset twoMargins halfMargin cls isST80 isOpenWin is3D|
+    |negativeOffset twoMargins halfMargin cls isST80 isOpenWin is3D lvl extra|
 
     super initialize.
 
@@ -402,11 +433,11 @@
     "
      mhmh - these must go into the stylesheet as well...
     "
-    isST80 := StyleSheet name = #st80.
-    isOpenWin := StyleSheet name = #openwin.
+    isST80 := styleSheet name = #st80.
+    isOpenWin := styleSheet name = #openwin.
 
     isOpenWin ifTrue:[self level:0].
-    is3D := StyleSheet is3D.
+    is3D := styleSheet is3D.
 
     isST80 ifTrue:[
 	innerMargin := 0
@@ -430,6 +461,8 @@
     scrollBar := cls in:self.
     scrollBar thumbOrigin:0 thumbHeight:100.
 
+    extra := 0.
+
     "create the subview"
     is3D ifTrue:[
 	twoMargins := innerMargin * 2.
@@ -438,43 +471,51 @@
 	aViewClass notNil ifTrue:[
 	    scrolledView := aViewClass in:self.
 	    isOpenWin ifTrue:[
-		scrolledView level:0.
-		scrolledView borderWidth:1
+		lvl := 0.
+		"/ scrolledView level:0.
+		scrolledView borderWidth:1.
 	    ] ifFalse:[
 		isST80 ifTrue:[
-		    scrolledView level:1.
+		    "/ scrolledView level:1.
+		    lvl := 1.
 		] ifFalse:[
-		    scrolledView level:-1
+		    "/ scrolledView level:-1
+		     lvl := -1
 		]
 	    ].
+	    scrolledView level:lvl.
+	    extra := scrolledView borderWidth * 2.
 	].
+
+	scrollBar extent:[scrollBar extent x
+			  @ 
+			  (height - innerMargin "new:" + extra)].
+	scrolledView notNil ifTrue:[
+	    scrolledView
+		extent:[(width 
+			 - scrollBar width 
+			 - twoMargins) 
+			@ 
+			(height - innerMargin)].
+	].
+
 	(scrollBarPosition == #right) ifTrue:[
 	    scrollBar origin:[width - scrollBar extent x 
 				    - (scrollBar borderWidth * 2)
 				    - halfMargin
 			      @
-			      halfMargin]
-		      extent:[scrollBar extent x @ (height - innerMargin)].
+			      halfMargin].
 
 	    scrolledView notNil ifTrue:[
 		scrolledView origin:halfMargin asPoint
-			 extent:[(width - 
-				  scrollBar width - 
-				  twoMargins) 
-				 @ 
-				 (height - innerMargin)].
 		]
 	] ifFalse:[
-	    scrollBar origin:halfMargin asPoint
-		      extent:[scrollBar extent x @ (height - innerMargin)].
+	    scrollBar origin:halfMargin asPoint.
 
 	    scrolledView notNil ifTrue:[
 		scrolledView origin:((scrollBar origin x + scrollBar width + innerMargin)
 				     @
 				     halfMargin)
-			     extent:[(width - scrollBar width - twoMargins) 
-				     @ 
-				     (height - innerMargin)].
 	    ]
 	].
     ] ifFalse:[
@@ -486,7 +527,9 @@
 	] ifFalse:[
 	    scrollBar origin:negativeOffset asPoint
 	].
-	scrollBar extent:[scrollBar extent x @ (height "+ (scrollBar borderWidth * 1)")].
+	scrollBar extent:[scrollBar extent x 
+			  @ 
+			  (height "+ (scrollBar borderWidth * 1)")].
 
 	aViewClass notNil ifTrue:[
 	    scrolledView := aViewClass in:self.
@@ -518,7 +561,7 @@
 initStyle
     super initStyle.
 
-    scrollBarPosition := StyleSheet at:'scrollBarPosition' default:#left
+    scrollBarPosition := styleSheet at:'scrollBarPosition' default:#left
 !
 
 realize
@@ -535,13 +578,13 @@
 
 !ScrollableView methodsFor:'queries'!
 
-preferedExtent
+preferredExtent
     scrolledView notNil ifTrue:[ 
        | pref |
-       pref := scrolledView preferedExtent.
+       pref := scrolledView preferredExtent.
        ^ (pref x + scrollBar width + (innerMargin * 2)) @ pref y.
     ].
-    ^ super preferedExtent.
+    ^ super preferredExtent.
 ! !
 
 !ScrollableView methodsFor:'private'!
@@ -594,10 +637,10 @@
     scrolledView := aView.
 
 "/    ((style ~~ #normal) and:[style ~~ #mswindows]) ifTrue:[
-    StyleSheet is3D ifTrue:[
+    styleSheet is3D ifTrue:[
 	"3D look"
 
-	isOpenwin := StyleSheet name = #openwin.
+	isOpenwin := styleSheet name = #openwin.
 
 	twoMargins := innerMargin * 2.
 	halfMargin := innerMargin // 2.
--- a/ScrollBar.st	Fri May 19 18:41:01 1995 +0200
+++ b/ScrollBar.st	Tue Jun 06 06:16:07 1995 +0200
@@ -13,7 +13,7 @@
 'From Smalltalk/X, Version:2.10.5 on 25-mar-1995 at 1:10:33 am'!
 
 SimpleView subclass:#ScrollBar
-	 instanceVariableNames:'thumb button1 button2 layout elementSpacing'
+	 instanceVariableNames:'thumb button1 button2 buttonLayout elementSpacing'
 	 classVariableNames:'DefaultButtonPositions DefaultLevel DefaultElementSpacing
 		DefaultScrollerBordered'
 	 poolDictionaries:''
@@ -24,7 +24,7 @@
 COPYRIGHT (c) 1989 by Claus Gittinger
 	      All Rights Reserved
 
-$Header: /cvs/stx/stx/libwidg/ScrollBar.st,v 1.13 1995-05-17 12:25:59 claus Exp $
+$Header: /cvs/stx/stx/libwidg/ScrollBar.st,v 1.14 1995-06-06 04:14:58 claus Exp $
 '!
 
 !ScrollBar class methodsFor:'documentation'!
@@ -45,7 +45,7 @@
 
 version
 "
-$Header: /cvs/stx/stx/libwidg/ScrollBar.st,v 1.13 1995-05-17 12:25:59 claus Exp $
+$Header: /cvs/stx/stx/libwidg/ScrollBar.st,v 1.14 1995-06-06 04:14:58 claus Exp $
 "
 !
 
@@ -97,7 +97,7 @@
 
     bwn := borderWidth negated + margin.
 
-    (layout == #top) ifTrue:[
+    (buttonLayout == #top) ifTrue:[
 	button1 origin:(bwn @ bwn).
 	button1 viewGravity:#North.
 	button2 origin:(bwn @ (button1 height)).
@@ -110,7 +110,7 @@
 	thumb viewGravity:#North.
 	^ self
     ].
-    (layout == #bottom) ifTrue:[
+    (buttonLayout == #bottom) ifTrue:[
 	device supportsViewGravity ifTrue:[
 	    button1 viewGravity:#South. 
 	    button2 viewGravity:#South. 
@@ -120,7 +120,7 @@
 	^ self
     ].
 
-    "layout == #around"
+    "buttonLayout == #around"
     button1 origin:(bwn @ bwn).
     button1 viewGravity:#North.
 "/    button2 viewGravity:#North.
@@ -137,7 +137,7 @@
 initStyle
     super initStyle.
 
-    layout := DefaultButtonPositions.
+    buttonLayout := DefaultButtonPositions.
     DefaultLevel notNil ifTrue:[
 	self level:DefaultLevel
     ].
@@ -147,41 +147,7 @@
 computeInitialExtent
     "compute my extent from sub-components"
 
-    |w h upForm downForm
-     upHeight   "{ Class: SmallInteger }"
-     downHeight "{ Class: SmallInteger }"
-     upWidth downWidth style|
-
-    "need fix - this is a kludge;
-     the if should not be needed ..."
-    style := StyleSheet name.
-    style == #mswindows ifTrue:[
-	w := button1 width max:button2 width.
-	h := button1 height + button2 height + (Scroller defaultExtent y).
-    ] ifFalse:[
-	upForm  := ArrowButton upArrowButtonForm:style on:device.
-	downForm := ArrowButton downArrowButtonForm:style on:device.
-	upForm isNil ifTrue:[
-	    upHeight := upWidth := 16.
-	] ifFalse:[
-	    upHeight := upForm height.
-	    upWidth := upForm width
-	].
-	downForm isNil ifTrue:[
-	    downHeight := downWidth := 16
-	] ifFalse:[
-	    downHeight := downForm height.
-	    downWidth := downForm width
-	].
-	h := upHeight + downHeight + (1 * 2) + (Scroller defaultExtent y).
-	w := upWidth max:downWidth.
-	style ~~ #normal ifTrue:[
-	    h := h + 4.
-	    w := w + 4
-	].
-    ].
-
-    self extent:w @ h.
+    self extent:(self preferredExtent).
 !
 
 initialize
@@ -193,7 +159,7 @@
 
     self createElements.
 
-    (StyleSheet at:'scrollBarDisableButtons' default:false) ifTrue:[
+    (styleSheet at:'scrollBarDisableButtons' default:false) ifTrue:[
 	thumb addDependent:self
     ].
 
@@ -208,7 +174,7 @@
     ].
     button2 borderWidth:borderWidth.
 
-    style := StyleSheet name.
+    style := styleSheet name.
     ((style = #iris) and:[Display hasGreyscales]) ifTrue:[
 	"have to change some of Buttons defaults"
 	clr := (Color grey:25) on:device.
@@ -256,12 +222,56 @@
     ]
 ! !
 
+!ScrollBar methodsFor:'queries'!
+
+preferredExtent
+    "compute my extent from sub-components"
+
+    |w h upForm downForm
+     upHeight   "{ Class: SmallInteger }"
+     downHeight "{ Class: SmallInteger }"
+     upWidth downWidth style|
+
+    "
+     need fix - this is a kludge;
+     the if should not be needed ...
+    "
+    style := styleSheet name.
+    style == #mswindows ifTrue:[
+	w := button1 width max:button2 width.
+	h := button1 height + button2 height + (Scroller defaultExtent y).
+    ] ifFalse:[
+	upForm  := ArrowButton upArrowButtonForm:style on:device.
+	downForm := ArrowButton downArrowButtonForm:style on:device.
+	upForm isNil ifTrue:[
+	    upHeight := upWidth := 16.
+	] ifFalse:[
+	    upHeight := upForm height.
+	    upWidth := upForm width
+	].
+	downForm isNil ifTrue:[
+	    downHeight := downWidth := 16
+	] ifFalse:[
+	    downHeight := downForm height.
+	    downWidth := downForm width
+	].
+	h := upHeight + downHeight + (1 * 2) + (Scroller defaultExtent y).
+	w := upWidth max:downWidth.
+	style ~~ #normal ifTrue:[
+	    h := h + 4.
+	    w := w + 4
+	].
+    ].
+
+    ^ w @ h.
+! !
+
 !ScrollBar methodsFor:'private'!
 
 enableDisableButtons
     |e1 e2|
 
-    (StyleSheet at:'scrollBarDisableButtons' default:false) ifFalse:[^ self].
+    (styleSheet at:'scrollBarDisableButtons' default:false) ifFalse:[^ self].
 
     e1 := e2 := true.
     thumb thumbHeight >= 99.99999 ifTrue:[
@@ -390,13 +400,13 @@
      Also, if I became too small, hide thumb/buttons."
 
     |upHeight downHeight thumbHeight upAndDownHeight bwn sep2
-     thumbWidth w style|
+     thumbWidth w style b1Hidden b2Hidden thumbHidden bY|
 
     button1 isNil ifTrue:[^ self].
     thumb isNil ifTrue:[^ self].
     button2 isNil ifTrue:[^ self].
 
-    style := StyleSheet name.
+    style := styleSheet name.
 
     upHeight := button1 height + borderWidth.
     downHeight := button2 height + borderWidth.
@@ -405,42 +415,45 @@
 
     thumbHeight := height - upAndDownHeight - borderWidth - (elementSpacing * 3).
 "
-    ((layout ~~ #top) and:[layout ~~ #bottom]) ifTrue:[
+    ((buttonLayout ~~ #top) and:[buttonLayout ~~ #bottom]) ifTrue:[
 	thumbHeight := thumbHeight - borderWidth
     ].
 "
-    layout == #around ifTrue:[
+    buttonLayout == #around ifTrue:[
 	thumbHeight := thumbHeight + borderWidth
     ].
 
     "if I become too small, hide buttons and thumb"
 
-    height < (upHeight + downHeight) ifTrue:[
-	button1 shown ifTrue:[
-	    button1 unrealize.
-	    button2 unrealize.
-	    thumb unrealize
-	]
+    height < upAndDownHeight ifTrue:[
+	b1Hidden := b2Hidden := thumbHidden := true.
     ] ifFalse:[
-	shown ifTrue:[
-	    button1 shown ifFalse:[
-		button1 realize.
-		button2 realize.
-		thumb realize
-	    ]
-	]
+	b1Hidden := b2Hidden := thumbHidden := false.
     ].
 
     (thumbHeight < 10) ifTrue:[
-	thumb shown ifTrue:[
-	    thumb unrealize
-	]
+	thumbHidden := true.
+    ] ifFalse:[
+	thumbHidden := false.
+    ].
+
+    button1 hiddenOnRealize:b1Hidden.
+    b1Hidden ifTrue:[
+	button1 unrealize
     ] ifFalse:[
-	thumb shown ifFalse:[
-	    button1 shown ifTrue:[
-		thumb realize
-	    ]
-	]
+	shown ifTrue:[button1 realize]
+    ].
+    button2 hiddenOnRealize:b1Hidden.
+    b2Hidden ifTrue:[
+	button2 unrealize
+    ] ifFalse:[
+	shown ifTrue:[button2 realize]
+    ].
+    thumb hiddenOnRealize:thumbHidden.
+    thumbHidden ifTrue:[
+	thumb unrealize
+    ] ifFalse:[
+	shown ifTrue:[thumb realize]
     ].
 
     "width of buttons is always my width"
@@ -468,23 +481,28 @@
 	thumbHeight := 1
     ].
 
-    (layout == #top) ifTrue:[
+    (buttonLayout == #top) ifTrue:[
 	"buttons at top"
 	thumb extent:(thumbWidth @ thumbHeight).
 	^ self
     ].
 
     sep2 := elementSpacing * 2.
-    (layout == #bottom) ifTrue:[
+    (buttonLayout == #bottom) ifTrue:[
 	"buttons at bottom"
 	thumbHeight := thumbHeight + borderWidth.
+	thumbHidden ifTrue:[
+	    bY := elementSpacing
+	] ifFalse:[
+	    bY := thumbHeight + sep2.
+	].
 	(how == #smaller) ifTrue:[
 	    thumb extent:(thumbWidth @ thumbHeight).
 "/            button1 origin:(bwn @ (thumbHeight + sep2)).
 "/            button2 origin:(bwn @ (thumbHeight + sep2 + upHeight))
 	] ifFalse:[
-	    button1 origin:(bwn @ (thumbHeight + sep2)).
-	    button2 origin:(bwn @ (thumbHeight + sep2 + upHeight)).
+	    button1 origin:(bwn @ bY).
+	    button2 origin:(bwn @ (bY + upHeight)).
 	    thumb extent:(thumbWidth @ thumbHeight)
 	].
 	^ self
@@ -520,4 +538,3 @@
 
     thumb pageDown
 ! !
-
--- a/ScrollableView.st	Fri May 19 18:41:01 1995 +0200
+++ b/ScrollableView.st	Tue Jun 06 06:16:07 1995 +0200
@@ -22,7 +22,7 @@
 COPYRIGHT (c) 1989 by Claus Gittinger
 	      All Rights Reserved
 
-$Header: /cvs/stx/stx/libwidg/ScrollableView.st,v 1.16 1995-05-07 00:16:36 claus Exp $
+$Header: /cvs/stx/stx/libwidg/ScrollableView.st,v 1.17 1995-06-06 04:14:53 claus Exp $
 '!
 
 !ScrollableView class methodsFor:'documentation'!
@@ -43,46 +43,77 @@
 
 version
 "
-$Header: /cvs/stx/stx/libwidg/ScrollableView.st,v 1.16 1995-05-07 00:16:36 claus Exp $
+$Header: /cvs/stx/stx/libwidg/ScrollableView.st,v 1.17 1995-06-06 04:14:53 claus Exp $
 "
 !
 
 documentation
 "
     a view containing a scrollbar and some other (slave-)view.
-    This view wraps scrollbars around the view to be scrolled.
+    This view wraps scrollbar(s) around the view to be scrolled.
     The scrollbars are setup to send scrollUp/scrollDown/scrollVerticalTo
     and scrollLeft/scrollRight/scrollHorizontalTo- messages whenever moved.
-    The view itself has to omplement these (there is a default implementation
+    The view itself has to implement these (there is a default implementation
     in the common View class for this.
 
     For the scrollbars to know about the full (maximum) size, the view
     must implement #heightOfContents and/or #widthOfContents.
-    The values returned by these are used to compute the fractio which is
-    visible (i.e. the scrollers thumb heights).
+    The values returned by these methods are used to compute the fraction
+    which is visible (i.e. the scrollers thumb heights).
 
     There are two ways to create a ScrollableView:
     if the type of the view to be scrolled is known in advance,
     use:
-	v := ScrollableView for:<ViewClass> in:someSuperView.
+	v := ScrollableView for:<ViewClass>
+    or:
+	v := ScrollableView for:<ViewClass> in:someSuperView
 
     otherwise, create the scrollableView empty with:
-	v := ScrollableView in:someSuperView.
+
+	v := ScrollableView new
+    or:
+	v := ScrollableView in:someSuperView
+
     and define the view later with:
+
 	v scrolledView:aViewToBeScrolled
 
-    It is also possible to change the scrolledView multiple times,
-    for example if different views are needed to display different types
-    of data (see example2).
+    Finally, if the view to be scrolled has been already created,
+    use:
+
+	v := ScrollableView forView:aViewToBeScrolled
+    or:    
+	v := ScrollableView forView:aViewToBeScrolled in:someSuperView
 
-    If you want to scroll views (instead of contents), you need a companion
-    class (ViewScroller). See the documentation there.
+    It is also possible to change the scrolledView later (even multiple times).
+    This may be useful, if different views are needed to display different types
+    of data (see example2) and at creation time, it is not known what type
+    of view is required (multimedia applications).
+
+    If you want to scroll views (instead of a views contents), you need a 
+    companion class (ViewScroller). See the documentation there.
 
     If you need horizontal scrolling too, use an instance of HVScrollableView.
 
     By default, scrollbars are full size scrollbars - for horizontal scrolling
     (which is less often used), scrollableViews can optionally be created with
     miniscrollers which take up less screen space.
+
+    TODO:
+	this is pretty old and needs a rewrite. There are quite some
+	historic leftovers found here and things can be done better
+	(especially in initializeFor...)
+
+	Also, it should be rewritten into one class which supports both
+	Vertical-only, Horizontal-only and HV scrolling.
+	Currently, horizontal-only scrolling is not available.
+	(you have to write your own class ...)
+
+	Finally, some means to hide scrollbars should be added - this would
+	give more screenspace to the view when all is visible 
+	(and therefore, the scrollbars are not needed, anyway)
+
+	Expect the above things to be fixed in an upcoming version.
 "
 !
 
@@ -393,7 +424,7 @@
 !
 
 initializeFor:aViewClass miniScrollerH:miniH miniScrollerV:miniV 
-    |negativeOffset twoMargins halfMargin cls isST80 isOpenWin is3D|
+    |negativeOffset twoMargins halfMargin cls isST80 isOpenWin is3D lvl extra|
 
     super initialize.
 
@@ -402,11 +433,11 @@
     "
      mhmh - these must go into the stylesheet as well...
     "
-    isST80 := StyleSheet name = #st80.
-    isOpenWin := StyleSheet name = #openwin.
+    isST80 := styleSheet name = #st80.
+    isOpenWin := styleSheet name = #openwin.
 
     isOpenWin ifTrue:[self level:0].
-    is3D := StyleSheet is3D.
+    is3D := styleSheet is3D.
 
     isST80 ifTrue:[
 	innerMargin := 0
@@ -430,6 +461,8 @@
     scrollBar := cls in:self.
     scrollBar thumbOrigin:0 thumbHeight:100.
 
+    extra := 0.
+
     "create the subview"
     is3D ifTrue:[
 	twoMargins := innerMargin * 2.
@@ -438,43 +471,51 @@
 	aViewClass notNil ifTrue:[
 	    scrolledView := aViewClass in:self.
 	    isOpenWin ifTrue:[
-		scrolledView level:0.
-		scrolledView borderWidth:1
+		lvl := 0.
+		"/ scrolledView level:0.
+		scrolledView borderWidth:1.
 	    ] ifFalse:[
 		isST80 ifTrue:[
-		    scrolledView level:1.
+		    "/ scrolledView level:1.
+		    lvl := 1.
 		] ifFalse:[
-		    scrolledView level:-1
+		    "/ scrolledView level:-1
+		     lvl := -1
 		]
 	    ].
+	    scrolledView level:lvl.
+	    extra := scrolledView borderWidth * 2.
 	].
+
+	scrollBar extent:[scrollBar extent x
+			  @ 
+			  (height - innerMargin "new:" + extra)].
+	scrolledView notNil ifTrue:[
+	    scrolledView
+		extent:[(width 
+			 - scrollBar width 
+			 - twoMargins) 
+			@ 
+			(height - innerMargin)].
+	].
+
 	(scrollBarPosition == #right) ifTrue:[
 	    scrollBar origin:[width - scrollBar extent x 
 				    - (scrollBar borderWidth * 2)
 				    - halfMargin
 			      @
-			      halfMargin]
-		      extent:[scrollBar extent x @ (height - innerMargin)].
+			      halfMargin].
 
 	    scrolledView notNil ifTrue:[
 		scrolledView origin:halfMargin asPoint
-			 extent:[(width - 
-				  scrollBar width - 
-				  twoMargins) 
-				 @ 
-				 (height - innerMargin)].
 		]
 	] ifFalse:[
-	    scrollBar origin:halfMargin asPoint
-		      extent:[scrollBar extent x @ (height - innerMargin)].
+	    scrollBar origin:halfMargin asPoint.
 
 	    scrolledView notNil ifTrue:[
 		scrolledView origin:((scrollBar origin x + scrollBar width + innerMargin)
 				     @
 				     halfMargin)
-			     extent:[(width - scrollBar width - twoMargins) 
-				     @ 
-				     (height - innerMargin)].
 	    ]
 	].
     ] ifFalse:[
@@ -486,7 +527,9 @@
 	] ifFalse:[
 	    scrollBar origin:negativeOffset asPoint
 	].
-	scrollBar extent:[scrollBar extent x @ (height "+ (scrollBar borderWidth * 1)")].
+	scrollBar extent:[scrollBar extent x 
+			  @ 
+			  (height "+ (scrollBar borderWidth * 1)")].
 
 	aViewClass notNil ifTrue:[
 	    scrolledView := aViewClass in:self.
@@ -518,7 +561,7 @@
 initStyle
     super initStyle.
 
-    scrollBarPosition := StyleSheet at:'scrollBarPosition' default:#left
+    scrollBarPosition := styleSheet at:'scrollBarPosition' default:#left
 !
 
 realize
@@ -535,13 +578,13 @@
 
 !ScrollableView methodsFor:'queries'!
 
-preferedExtent
+preferredExtent
     scrolledView notNil ifTrue:[ 
        | pref |
-       pref := scrolledView preferedExtent.
+       pref := scrolledView preferredExtent.
        ^ (pref x + scrollBar width + (innerMargin * 2)) @ pref y.
     ].
-    ^ super preferedExtent.
+    ^ super preferredExtent.
 ! !
 
 !ScrollableView methodsFor:'private'!
@@ -594,10 +637,10 @@
     scrolledView := aView.
 
 "/    ((style ~~ #normal) and:[style ~~ #mswindows]) ifTrue:[
-    StyleSheet is3D ifTrue:[
+    styleSheet is3D ifTrue:[
 	"3D look"
 
-	isOpenwin := StyleSheet name = #openwin.
+	isOpenwin := styleSheet name = #openwin.
 
 	twoMargins := innerMargin * 2.
 	halfMargin := innerMargin // 2.
--- a/Scroller.st	Fri May 19 18:41:01 1995 +0200
+++ b/Scroller.st	Tue Jun 06 06:16:07 1995 +0200
@@ -37,7 +37,7 @@
 COPYRIGHT (c) 1989 by Claus Gittinger
 	      All Rights Reserved
 
-$Header: /cvs/stx/stx/libwidg/Scroller.st,v 1.23 1995-05-17 12:26:04 claus Exp $
+$Header: /cvs/stx/stx/libwidg/Scroller.st,v 1.24 1995-06-06 04:15:04 claus Exp $
 '!
 
 !Scroller class methodsFor:'documentation'!
@@ -58,7 +58,7 @@
 
 version
 "
-$Header: /cvs/stx/stx/libwidg/Scroller.st,v 1.23 1995-05-17 12:26:04 claus Exp $
+$Header: /cvs/stx/stx/libwidg/Scroller.st,v 1.24 1995-06-06 04:15:04 claus Exp $
 "
 !
 
@@ -162,6 +162,27 @@
 	top open
 
 
+    create a scroller in its default extent and have it positioned
+    at the right; beside another view:
+
+	|top s v|
+
+	top := StandardSystemView new extent:200@200.
+	s := Scroller in:top.
+	s origin:(0.0@0.0) corner:(0.0@1.0).
+	s rightInset:(s preferredExtent x negated).
+	s thumbHeight:10.
+	s level:1.
+
+	v := View in:top.
+	v origin:0.0@0.0 corner:1.0@1.0.
+	v leftInset:(s preferredExtent x).
+	v viewBackground:Color red.
+	v level:2.
+
+	top open
+
+
     using a model (ST-80 style):
 
 	|top s m|
@@ -225,6 +246,13 @@
     DefaultInset := StyleSheet at:'scrollerThumbInset' default:0.
     DefaultFixThumbHeight := StyleSheet at:'scrollerThumbFixHeight' default:false.
     DefaultEdgeStyle := StyleSheet at:'scrollerThumbEdgeStyle'.
+
+    StyleSheet fileReadFailed ifTrue:[
+	DefaultViewBackground := Grey.
+	DefaultThumbColor := White.
+	DefaultThumbFrameColor := Black.
+	DefaultInset := 1.
+    ]
 !
 
 handleShadowFormOn:aDisplay
@@ -710,7 +738,10 @@
 
     shown ifTrue:[
 	self computeThumbFrame.
-	self redraw
+	self sensor notNil ifTrue:[
+	    self redraw.
+	    self sensor flushExposeEventsFor:self 
+	]
     ]
 !
 
@@ -728,11 +759,8 @@
 redraw
     "redraw"
 
-    shown ifTrue:[
-	thumbFrame isNil ifTrue:[self computeThumbFrame].
-	self drawThumbBackgroundInX:0 y:0 width:width height:height.
-	self drawThumb
-    ]
+    self redrawX:0 y:0 width:width height:height.
+    self redrawEdges
 !
 
 buttonMultiPress:button x:x y:y
@@ -1043,7 +1071,7 @@
 !
 
 is3D
-    StyleSheet name = #mswindows ifTrue:[^ true].
+    styleSheet name = #mswindows ifTrue:[^ true].
     ^ super is3D
 !
 
@@ -1215,7 +1243,7 @@
     "change the color of the thumb"
 
     thumbColor := aColor on:device.
-    (StyleSheet name ~~ #normal) ifTrue:[
+    (styleSheet name ~~ #normal) ifTrue:[
 	thumbShadowColor := aColor darkened on:device.
 	thumbLightColor := aColor lightened on:device.
 	thumbHalfShadowColor := thumbShadowColor darkened on:device.
@@ -1246,6 +1274,16 @@
     rangeEnd := stop
 ! !
 
+!Scroller methodsFor:'queries'!
+
+preferredExtent
+    |w h|
+
+    h := self class defaultExtent y.
+    w := (device horizontalPixelPerMillimeter asFloat * 6) rounded.
+    ^ w @ h.
+! !
+
 !Scroller methodsFor:'initialization'!
 
 initCursor
@@ -1322,7 +1360,7 @@
 	thumbShadowColor := Black.
 "/        thumbLightColor := White.
 
-	StyleSheet name = #motif ifTrue:[
+	styleSheet name = #motif ifTrue:[
 	    DefaultThumbColor isNil ifTrue:[
 		thumbColor := White .
 	    ].
@@ -1333,7 +1371,7 @@
 	thumbColor := DefaultThumbColor on:device
     ] ifFalse:[
 	thumbColor := White.
-	StyleSheet name ~= #normal ifTrue:[
+	styleSheet name ~= #normal ifTrue:[
 	    device hasGreyscales ifFalse:[
 		thumbColor := Color grey
 	    ].
@@ -1359,7 +1397,7 @@
 	]
     ].
 
-    StyleSheet name = #next ifTrue:[
+    styleSheet name = #next ifTrue:[
 	shadowForm := self class handleShadowFormOn:device.
 	lightForm := self class handleLightFormOn:device
     ] ifFalse:[
@@ -1372,7 +1410,7 @@
 !
 
 computeInitialExtent
-    ^ self
+    self extent:self preferredExtent
 !
 
 initialize
--- a/SelListV.st	Fri May 19 18:41:01 1995 +0200
+++ b/SelListV.st	Tue Jun 06 06:16:07 1995 +0200
@@ -36,7 +36,7 @@
 COPYRIGHT (c) 1989 by Claus Gittinger
 	      All Rights Reserved
 
-$Header: /cvs/stx/stx/libwidg/Attic/SelListV.st,v 1.33 1995-05-17 12:26:12 claus Exp $
+$Header: /cvs/stx/stx/libwidg/Attic/SelListV.st,v 1.34 1995-06-06 04:15:13 claus Exp $
 '!
 
 !SelectionInListView class methodsFor:'documentation'!
@@ -57,7 +57,7 @@
 
 version
 "
-$Header: /cvs/stx/stx/libwidg/Attic/SelListV.st,v 1.33 1995-05-17 12:26:12 claus Exp $
+$Header: /cvs/stx/stx/libwidg/Attic/SelListV.st,v 1.34 1995-06-06 04:15:13 claus Exp $
 "
 !
 
@@ -1041,8 +1041,11 @@
 
     selection isNil ifTrue:[^ #()].
 
-    multipleSelectOk ifTrue:[
-	 ^ (OrderedCollection new) add:selection; yourself.
+"/    multipleSelectOk ifTrue:[
+"/        ^ (OrderedCollection new) add:selection; yourself.
+"/    ].
+    multipleSelectOk ifFalse:[
+	^ (OrderedCollection new) add:selection; yourself.
     ].
     ^ selection
 ! !
@@ -1264,7 +1267,7 @@
 	botRightColor := shadowColor. 
 
 	"openwin arrow stays down"
-	style ~~ #openwin ifTrue:[
+	styleSheet name ~~ #openwin ifTrue:[
 	    (self isInSelection:(self visibleLineToListLine:visLineNr)) ifTrue:[
 		t := topLeftColor.
 		topLeftColor := botRightColor.
@@ -1428,7 +1431,7 @@
 	self is3D ifFalse:[
 	    ^ width 
 	].
-	( #(next openwin) includes:style) ifTrue:[
+	( #(next openwin) includes:styleSheet name) ifTrue:[
 	    ^ width 
 	].
 	viewBackground = background ifFalse:[
@@ -2030,20 +2033,31 @@
      if set, a click on an already selected entry is ignored.
      Otherwise the notification is done, even if no
      change in the selection occurs.
-     (for example, in browser to update a method)"
+     (for example, in browser to update a method).
+     Setting ignoreReselect to false makes sense if data is shown
+     which may change by itself (i.e. without the user doing anything)
+     For example, the inspector uses this, and redisplays the value,
+     if the selection is the same.
+     The default is true, meaning that a click on an already selected
+     does not lead to a notification via the actionBlock/change mechanism."
 
     ignoreReselect := aBoolean
 !
 
 toggleSelect:aBoolean
     "turn on/off toggle select. If true, clicking on a selected entry
-     unselects it and vice versa. The default is false."
+     unselects it and vice versa. The default is false, which means
+     that clicking on an already selected entry does not change its
+     select status (see also ignoreReselect:)."
 
     toggleSelect := aBoolean.
 !
 
 multipleSelectOk:aBoolean
-    "allow/disallow multiple selections"
+    "allow/disallow multiple selections. If enabled, the
+     user may select multiple entries in the list, and the program
+     always gets a collection of selected items (indexes if useIndex is true,
+     values otherwise). The default is false, for single selections."
 
     multipleSelectOk := aBoolean.
     aBoolean ifTrue:[
@@ -2182,7 +2196,11 @@
     self getSelectionFromModel.
 
     selection notNil ifTrue:[
-	self makeLineVisible:selection
+	selection isCollection ifTrue:[
+	    self makeLineVisible:selection first
+	] ifFalse:[
+	    self makeLineVisible:selection
+	]
     ].
 !
 
@@ -2205,7 +2223,7 @@
 	"
 	 must get rid of these hard codings
 	"
-	nm := StyleSheet name asSymbol.
+	nm := styleSheet name.
 	(nm == #next) ifTrue:[
 	    hilightFgColor := fgColor.
 	    hilightBgColor := White.
--- a/SelectionInListView.st	Fri May 19 18:41:01 1995 +0200
+++ b/SelectionInListView.st	Tue Jun 06 06:16:07 1995 +0200
@@ -36,7 +36,7 @@
 COPYRIGHT (c) 1989 by Claus Gittinger
 	      All Rights Reserved
 
-$Header: /cvs/stx/stx/libwidg/SelectionInListView.st,v 1.33 1995-05-17 12:26:12 claus Exp $
+$Header: /cvs/stx/stx/libwidg/SelectionInListView.st,v 1.34 1995-06-06 04:15:13 claus Exp $
 '!
 
 !SelectionInListView class methodsFor:'documentation'!
@@ -57,7 +57,7 @@
 
 version
 "
-$Header: /cvs/stx/stx/libwidg/SelectionInListView.st,v 1.33 1995-05-17 12:26:12 claus Exp $
+$Header: /cvs/stx/stx/libwidg/SelectionInListView.st,v 1.34 1995-06-06 04:15:13 claus Exp $
 "
 !
 
@@ -1041,8 +1041,11 @@
 
     selection isNil ifTrue:[^ #()].
 
-    multipleSelectOk ifTrue:[
-	 ^ (OrderedCollection new) add:selection; yourself.
+"/    multipleSelectOk ifTrue:[
+"/        ^ (OrderedCollection new) add:selection; yourself.
+"/    ].
+    multipleSelectOk ifFalse:[
+	^ (OrderedCollection new) add:selection; yourself.
     ].
     ^ selection
 ! !
@@ -1264,7 +1267,7 @@
 	botRightColor := shadowColor. 
 
 	"openwin arrow stays down"
-	style ~~ #openwin ifTrue:[
+	styleSheet name ~~ #openwin ifTrue:[
 	    (self isInSelection:(self visibleLineToListLine:visLineNr)) ifTrue:[
 		t := topLeftColor.
 		topLeftColor := botRightColor.
@@ -1428,7 +1431,7 @@
 	self is3D ifFalse:[
 	    ^ width 
 	].
-	( #(next openwin) includes:style) ifTrue:[
+	( #(next openwin) includes:styleSheet name) ifTrue:[
 	    ^ width 
 	].
 	viewBackground = background ifFalse:[
@@ -2030,20 +2033,31 @@
      if set, a click on an already selected entry is ignored.
      Otherwise the notification is done, even if no
      change in the selection occurs.
-     (for example, in browser to update a method)"
+     (for example, in browser to update a method).
+     Setting ignoreReselect to false makes sense if data is shown
+     which may change by itself (i.e. without the user doing anything)
+     For example, the inspector uses this, and redisplays the value,
+     if the selection is the same.
+     The default is true, meaning that a click on an already selected
+     does not lead to a notification via the actionBlock/change mechanism."
 
     ignoreReselect := aBoolean
 !
 
 toggleSelect:aBoolean
     "turn on/off toggle select. If true, clicking on a selected entry
-     unselects it and vice versa. The default is false."
+     unselects it and vice versa. The default is false, which means
+     that clicking on an already selected entry does not change its
+     select status (see also ignoreReselect:)."
 
     toggleSelect := aBoolean.
 !
 
 multipleSelectOk:aBoolean
-    "allow/disallow multiple selections"
+    "allow/disallow multiple selections. If enabled, the
+     user may select multiple entries in the list, and the program
+     always gets a collection of selected items (indexes if useIndex is true,
+     values otherwise). The default is false, for single selections."
 
     multipleSelectOk := aBoolean.
     aBoolean ifTrue:[
@@ -2182,7 +2196,11 @@
     self getSelectionFromModel.
 
     selection notNil ifTrue:[
-	self makeLineVisible:selection
+	selection isCollection ifTrue:[
+	    self makeLineVisible:selection first
+	] ifFalse:[
+	    self makeLineVisible:selection
+	]
     ].
 !
 
@@ -2205,7 +2223,7 @@
 	"
 	 must get rid of these hard codings
 	"
-	nm := StyleSheet name asSymbol.
+	nm := styleSheet name.
 	(nm == #next) ifTrue:[
 	    hilightFgColor := fgColor.
 	    hilightBgColor := White.
--- a/TextColl.st	Fri May 19 18:41:01 1995 +0200
+++ b/TextColl.st	Tue Jun 06 06:16:07 1995 +0200
@@ -23,7 +23,7 @@
 COPYRIGHT (c) 1989 by Claus Gittinger
 	      All Rights Reserved
 
-$Header: /cvs/stx/stx/libwidg/Attic/TextColl.st,v 1.17 1995-05-03 00:38:09 claus Exp $
+$Header: /cvs/stx/stx/libwidg/Attic/TextColl.st,v 1.18 1995-06-06 04:15:23 claus Exp $
 '!
 
 !TextCollector class methodsFor:'documentation'!
@@ -44,7 +44,7 @@
 
 version
 "
-$Header: /cvs/stx/stx/libwidg/Attic/TextColl.st,v 1.17 1995-05-03 00:38:09 claus Exp $
+$Header: /cvs/stx/stx/libwidg/Attic/TextColl.st,v 1.18 1995-06-06 04:15:23 claus Exp $
 "
 !
 
@@ -103,7 +103,7 @@
 newTranscript
     "create and open a new transcript."
 
-    |topView transcript f v fg bg cFg cBg lines cols|
+    |topView transcript f v lines cols|
 
     topView := StandardSystemView label:'Transcript' minExtent:(100 @ 100).
 
@@ -213,13 +213,13 @@
     "
     self destroyAction:[Smalltalk at:#Transcript put:Stderr].
 
-    fg := StyleSheet colorAt:'transcriptForegroundColor' default:self foregroundColor.
-    bg := StyleSheet colorAt:'transcriptBackgroundColor' default:self backgroundColor.
+    fg := styleSheet colorAt:'transcriptForegroundColor' default:self foregroundColor.
+    bg := styleSheet colorAt:'transcriptBackgroundColor' default:self backgroundColor.
     self foregroundColor:fg backgroundColor:bg.
     self viewBackground:bg.
 
-    cFg := StyleSheet colorAt:'transcriptCursorForegroundColor' default:bg.
-    cBg := StyleSheet colorAt:'transcriptCursorBackgroundColor' default:fg.
+    cFg := styleSheet colorAt:'transcriptCursorForegroundColor' default:bg.
+    cBg := styleSheet colorAt:'transcriptCursorBackgroundColor' default:fg.
     self cursorForegroundColor:cFg backgroundColor:cBg. 
 
     "self lineLimit:1000. " "or whatever you think makes sense"
--- a/TextCollector.st	Fri May 19 18:41:01 1995 +0200
+++ b/TextCollector.st	Tue Jun 06 06:16:07 1995 +0200
@@ -23,7 +23,7 @@
 COPYRIGHT (c) 1989 by Claus Gittinger
 	      All Rights Reserved
 
-$Header: /cvs/stx/stx/libwidg/TextCollector.st,v 1.17 1995-05-03 00:38:09 claus Exp $
+$Header: /cvs/stx/stx/libwidg/TextCollector.st,v 1.18 1995-06-06 04:15:23 claus Exp $
 '!
 
 !TextCollector class methodsFor:'documentation'!
@@ -44,7 +44,7 @@
 
 version
 "
-$Header: /cvs/stx/stx/libwidg/TextCollector.st,v 1.17 1995-05-03 00:38:09 claus Exp $
+$Header: /cvs/stx/stx/libwidg/TextCollector.st,v 1.18 1995-06-06 04:15:23 claus Exp $
 "
 !
 
@@ -103,7 +103,7 @@
 newTranscript
     "create and open a new transcript."
 
-    |topView transcript f v fg bg cFg cBg lines cols|
+    |topView transcript f v lines cols|
 
     topView := StandardSystemView label:'Transcript' minExtent:(100 @ 100).
 
@@ -213,13 +213,13 @@
     "
     self destroyAction:[Smalltalk at:#Transcript put:Stderr].
 
-    fg := StyleSheet colorAt:'transcriptForegroundColor' default:self foregroundColor.
-    bg := StyleSheet colorAt:'transcriptBackgroundColor' default:self backgroundColor.
+    fg := styleSheet colorAt:'transcriptForegroundColor' default:self foregroundColor.
+    bg := styleSheet colorAt:'transcriptBackgroundColor' default:self backgroundColor.
     self foregroundColor:fg backgroundColor:bg.
     self viewBackground:bg.
 
-    cFg := StyleSheet colorAt:'transcriptCursorForegroundColor' default:bg.
-    cBg := StyleSheet colorAt:'transcriptCursorBackgroundColor' default:fg.
+    cFg := styleSheet colorAt:'transcriptCursorForegroundColor' default:bg.
+    cBg := styleSheet colorAt:'transcriptCursorBackgroundColor' default:fg.
     self cursorForegroundColor:cFg backgroundColor:cBg. 
 
     "self lineLimit:1000. " "or whatever you think makes sense"
--- a/Toggle.st	Fri May 19 18:41:01 1995 +0200
+++ b/Toggle.st	Tue Jun 06 06:16:07 1995 +0200
@@ -23,7 +23,7 @@
 COPYRIGHT (c) 1989 by Claus Gittinger
 	      All Rights Reserved
 
-$Header: /cvs/stx/stx/libwidg/Toggle.st,v 1.17 1995-05-17 12:26:23 claus Exp $
+$Header: /cvs/stx/stx/libwidg/Toggle.st,v 1.18 1995-06-06 04:15:30 claus Exp $
 '!
 
 !Toggle class methodsFor:'documentation'!
@@ -44,7 +44,7 @@
 
 version
 "
-$Header: /cvs/stx/stx/libwidg/Toggle.st,v 1.17 1995-05-17 12:26:23 claus Exp $
+$Header: /cvs/stx/stx/libwidg/Toggle.st,v 1.18 1995-06-06 04:15:30 claus Exp $
 "
 !
 
@@ -392,7 +392,7 @@
 
 getValueFromModel
     (model notNil and:[aspectMsg notNil]) ifTrue:[
-	(model perform:aspectMsg) ifTrue:[self turnOn]
+	(model perform:aspectMsg) == true ifTrue:[self turnOn]
 	ifFalse:[self turnOff].
     ].
 !
--- a/VPanelV.st	Fri May 19 18:41:01 1995 +0200
+++ b/VPanelV.st	Tue Jun 06 06:16:07 1995 +0200
@@ -23,7 +23,7 @@
 COPYRIGHT (c) 1989 by Claus Gittinger
 	      All Rights Reserved
 
-$Header: /cvs/stx/stx/libwidg/Attic/VPanelV.st,v 1.10 1995-05-12 18:25:18 claus Exp $
+$Header: /cvs/stx/stx/libwidg/Attic/VPanelV.st,v 1.11 1995-06-06 04:15:38 claus Exp $
 '!
 
 !VerticalPanelView class methodsFor:'documentation'!
@@ -44,7 +44,7 @@
 
 version
 "
-$Header: /cvs/stx/stx/libwidg/Attic/VPanelV.st,v 1.10 1995-05-12 18:25:18 claus Exp $
+$Header: /cvs/stx/stx/libwidg/Attic/VPanelV.st,v 1.11 1995-06-06 04:15:38 claus Exp $
 "
 !
 
@@ -478,7 +478,7 @@
 	panel add:((CheckBox on:false asValue) label:'nr 2 '; resize).
 	panel add:((CheckBox on:true asValue) label:'number 3 '; resize).
 
-	panel extent:(panel preferedExtent).
+	panel extent:(panel preferredExtent).
 	panel open
 "
 ! !
@@ -733,18 +733,20 @@
 layout:aSymbol
     "leftover for historic reasons - do not use any more"
 
-    self verticalLayout:aSymbol
+    self obsoleteMethodWarning:'use #verticalLayout:'.
+    ^ self verticalLayout:aSymbol
 !
 
 layout
     "leftover for historic reasons - do not use any more"
 
-    self verticalLayout
+    self obsoleteMethodWarning:'use #verticalLayout'.
+    ^ self verticalLayout
 ! !
 
 !VerticalPanelView methodsFor:'queries'!
 
-preferedExtent
+preferredExtent
     "return a good extent, one that makes subviews fit"
 
     |sumOfHeights maxWidth maxHeight|
@@ -760,7 +762,7 @@
     subViews do:[:child |
 	|childsPreference|
 
-	childsPreference := child preferedExtent.
+	childsPreference := child preferredExtent.
 	sumOfHeights := sumOfHeights + childsPreference y.
 	maxHeight := maxHeight max:childsPreference y.
 	maxWidth := maxWidth max:childsPreference x.
--- a/VarVPanel.st	Fri May 19 18:41:01 1995 +0200
+++ b/VarVPanel.st	Tue Jun 06 06:16:07 1995 +0200
@@ -27,7 +27,7 @@
 COPYRIGHT (c) 1991 by Claus Gittinger
 	      All Rights Reserved
 
-$Header: /cvs/stx/stx/libwidg/Attic/VarVPanel.st,v 1.17 1995-05-03 00:38:44 claus Exp $
+$Header: /cvs/stx/stx/libwidg/Attic/VarVPanel.st,v 1.18 1995-06-06 04:15:54 claus Exp $
 '!
 
 !VariableVerticalPanel class methodsFor:'documentation'!
@@ -48,7 +48,7 @@
 
 version
 "
-$Header: /cvs/stx/stx/libwidg/Attic/VarVPanel.st,v 1.17 1995-05-03 00:38:44 claus Exp $
+$Header: /cvs/stx/stx/libwidg/Attic/VarVPanel.st,v 1.18 1995-06-06 04:15:54 claus Exp $
 "
 !
 
@@ -382,7 +382,7 @@
     showHandle := DefaultShowHandle.
 
     DefaultHandleStyle isNil ifTrue:[
-	handleStyle := StyleSheet name
+	handleStyle := styleSheet name
     ] ifFalse:[
 	handleStyle := DefaultHandleStyle
     ].
--- a/VariableVerticalPanel.st	Fri May 19 18:41:01 1995 +0200
+++ b/VariableVerticalPanel.st	Tue Jun 06 06:16:07 1995 +0200
@@ -27,7 +27,7 @@
 COPYRIGHT (c) 1991 by Claus Gittinger
 	      All Rights Reserved
 
-$Header: /cvs/stx/stx/libwidg/VariableVerticalPanel.st,v 1.17 1995-05-03 00:38:44 claus Exp $
+$Header: /cvs/stx/stx/libwidg/VariableVerticalPanel.st,v 1.18 1995-06-06 04:15:54 claus Exp $
 '!
 
 !VariableVerticalPanel class methodsFor:'documentation'!
@@ -48,7 +48,7 @@
 
 version
 "
-$Header: /cvs/stx/stx/libwidg/VariableVerticalPanel.st,v 1.17 1995-05-03 00:38:44 claus Exp $
+$Header: /cvs/stx/stx/libwidg/VariableVerticalPanel.st,v 1.18 1995-06-06 04:15:54 claus Exp $
 "
 !
 
@@ -382,7 +382,7 @@
     showHandle := DefaultShowHandle.
 
     DefaultHandleStyle isNil ifTrue:[
-	handleStyle := StyleSheet name
+	handleStyle := styleSheet name
     ] ifFalse:[
 	handleStyle := DefaultHandleStyle
     ].
--- a/VerticalPanelView.st	Fri May 19 18:41:01 1995 +0200
+++ b/VerticalPanelView.st	Tue Jun 06 06:16:07 1995 +0200
@@ -23,7 +23,7 @@
 COPYRIGHT (c) 1989 by Claus Gittinger
 	      All Rights Reserved
 
-$Header: /cvs/stx/stx/libwidg/VerticalPanelView.st,v 1.10 1995-05-12 18:25:18 claus Exp $
+$Header: /cvs/stx/stx/libwidg/VerticalPanelView.st,v 1.11 1995-06-06 04:15:38 claus Exp $
 '!
 
 !VerticalPanelView class methodsFor:'documentation'!
@@ -44,7 +44,7 @@
 
 version
 "
-$Header: /cvs/stx/stx/libwidg/VerticalPanelView.st,v 1.10 1995-05-12 18:25:18 claus Exp $
+$Header: /cvs/stx/stx/libwidg/VerticalPanelView.st,v 1.11 1995-06-06 04:15:38 claus Exp $
 "
 !
 
@@ -478,7 +478,7 @@
 	panel add:((CheckBox on:false asValue) label:'nr 2 '; resize).
 	panel add:((CheckBox on:true asValue) label:'number 3 '; resize).
 
-	panel extent:(panel preferedExtent).
+	panel extent:(panel preferredExtent).
 	panel open
 "
 ! !
@@ -733,18 +733,20 @@
 layout:aSymbol
     "leftover for historic reasons - do not use any more"
 
-    self verticalLayout:aSymbol
+    self obsoleteMethodWarning:'use #verticalLayout:'.
+    ^ self verticalLayout:aSymbol
 !
 
 layout
     "leftover for historic reasons - do not use any more"
 
-    self verticalLayout
+    self obsoleteMethodWarning:'use #verticalLayout'.
+    ^ self verticalLayout
 ! !
 
 !VerticalPanelView methodsFor:'queries'!
 
-preferedExtent
+preferredExtent
     "return a good extent, one that makes subviews fit"
 
     |sumOfHeights maxWidth maxHeight|
@@ -760,7 +762,7 @@
     subViews do:[:child |
 	|childsPreference|
 
-	childsPreference := child preferedExtent.
+	childsPreference := child preferredExtent.
 	sumOfHeights := sumOfHeights + childsPreference y.
 	maxHeight := maxHeight max:childsPreference y.
 	maxWidth := maxWidth max:childsPreference x.
--- a/YesNoBox.st	Fri May 19 18:41:01 1995 +0200
+++ b/YesNoBox.st	Tue Jun 06 06:16:07 1995 +0200
@@ -21,7 +21,7 @@
 COPYRIGHT (c) 1989 by Claus Gittinger
 	      All Rights Reserved
 
-$Header: /cvs/stx/stx/libwidg/YesNoBox.st,v 1.15 1995-05-09 01:57:16 claus Exp $
+$Header: /cvs/stx/stx/libwidg/YesNoBox.st,v 1.16 1995-06-06 04:16:02 claus Exp $
 '!
 
 !YesNoBox class methodsFor:'documentation'!
@@ -42,7 +42,7 @@
 
 version
 "
-$Header: /cvs/stx/stx/libwidg/YesNoBox.st,v 1.15 1995-05-09 01:57:16 claus Exp $
+$Header: /cvs/stx/stx/libwidg/YesNoBox.st,v 1.16 1995-06-06 04:16:02 claus Exp $
 "
 !
 
@@ -174,7 +174,7 @@
 
     label := 'Choose'.
 
-    buttonPanel layout:#fitSpace.  "/ looks better; should it come from the StyleSheet ?
+    buttonPanel horizontalLayout:#fitSpace.  "/ looks better; should it come from the StyleSheet ?
 
     textLabel label:'please Confirm'.
     okButton label:(resources at:'yes').
@@ -313,13 +313,13 @@
 
 !YesNoBox methodsFor:'queries'!
 
-preferedExtent 
+preferredExtent 
     |w h max|
 
     "
      make the two buttons of equal size
     "
-    max := okButton preferedExtent x max:noButton preferedExtent x.
+    max := okButton preferredExtent x max:noButton preferredExtent x.
     okButton width:max.
     noButton width:max.
     w := (formLabel width + textLabel width) max:max * 2.