Merged 8e46d481bea0 and ae3aa45c3879 (branch default - CVS HEAD) text-view-selection-refactoring
authorJan Vrany <jan.vrany@fit.cvut.cz>
Sun, 23 Feb 2014 20:18:07 +0000
branchtext-view-selection-refactoring
changeset 4926 3157961c387c
parent 4879 8e46d481bea0 (current diff)
parent 4925 ae3aa45c3879 (diff)
child 4933 c4a3c77f09c7
child 4934 77ba7cf3d5d6
Merged 8e46d481bea0 and ae3aa45c3879 (branch default - CVS HEAD)
EditTextView.st
TextView.st
--- a/ArrowButton.st	Wed Feb 12 22:17:26 2014 +0000
+++ b/ArrowButton.st	Sun Feb 23 20:18:07 2014 +0000
@@ -818,27 +818,29 @@
 direction:aDirectionSymbol
     "create and return a new arrow button in aView"
 
-    |logo activeLogo enteredLogo disabledLogo|
+    |logo activeLogo enteredLogo disabledLogo graphicsDevice|
+
+    graphicsDevice := self graphicsDevice.
 
     logo := self class 
                 arrowButtonFormForStyle:arrowStyle 
                 direction:aDirectionSymbol 
-                on:device.
+                on:graphicsDevice.
 
     activeLogo := self class
                 activeArrowButtonFormForStyle:arrowStyle 
                 direction:aDirectionSymbol 
-                on:device.
+                on:graphicsDevice.
 
     disabledLogo := self class
                 disabledArrowButtonFormForStyle:arrowStyle 
                 direction:aDirectionSymbol 
-                on:device.
+                on:graphicsDevice.
 
     enteredLogo := self class
                 enteredArrowButtonFormForStyle:arrowStyle 
                 direction:aDirectionSymbol 
-                on:device.
+                on:graphicsDevice.
 
     direction := aDirectionSymbol.
     enteredLogo notNil ifTrue:[
@@ -889,28 +891,31 @@
 initStyle
     "setup viewStyle specifics"
 
+    |graphicsDevice|
+
     super initStyle.
+    graphicsDevice := self graphicsDevice.
 
     DefaultBackgroundColor notNil ifTrue:[
-        bgColor := DefaultBackgroundColor onDevice:device
+        bgColor := DefaultBackgroundColor onDevice:graphicsDevice
     ].
     DefaultForegroundColor notNil ifTrue:[
-        fgColor := DefaultForegroundColor onDevice:device
+        fgColor := DefaultForegroundColor onDevice:graphicsDevice
     ].
     DefaultActiveForegroundColor notNil ifTrue:[
-        activeFgColor := DefaultActiveForegroundColor onDevice:device
+        activeFgColor := DefaultActiveForegroundColor onDevice:graphicsDevice
     ].
     DefaultActiveBackgroundColor notNil ifTrue:[
-        activeBgColor := DefaultActiveBackgroundColor onDevice:device
+        activeBgColor := DefaultActiveBackgroundColor onDevice:graphicsDevice
     ].
     DefaultEnteredForegroundColor notNil ifTrue:[
-        enteredFgColor := DefaultEnteredForegroundColor onDevice:device
+        enteredFgColor := DefaultEnteredForegroundColor onDevice:graphicsDevice
     ].
     DefaultEnteredBackgroundColor notNil ifTrue:[
-        enteredBgColor := DefaultEnteredBackgroundColor onDevice:device
+        enteredBgColor := DefaultEnteredBackgroundColor onDevice:graphicsDevice
     ].
     DefaultDisabledForegroundColor notNil ifTrue:[
-        disabledFgColor := DefaultDisabledForegroundColor onDevice:device
+        disabledFgColor := DefaultDisabledForegroundColor onDevice:graphicsDevice
     ].
 
     arrowStyle := DefaultArrowStyle.
@@ -963,8 +968,8 @@
         self paint:bg.
         self fillRectangleX:0 y:0 width:width height:height.
 
-        shadowColor := shadowColor onDevice:device.
-        lightColor := lightColor onDevice:device.
+        shadowColor := shadowColor onDevice:self graphicsDevice.
+        lightColor := lightColor onDevice:self graphicsDevice.
 
         controller pressed ifTrue:[
             topLeft := shadowColor.
@@ -1004,7 +1009,7 @@
             orgX := labelOriginX.
             orgY := labelOriginY.
         ] ifTrue:[
-            orgY := height - font height // 2 + font ascent.
+            orgY := height - gc font height // 2 + gc font ascent.
             orgX := width - labelOriginX // 4 - 1.
         ].
 
@@ -1054,6 +1059,10 @@
 !ArrowButton class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libwidg/ArrowButton.st,v 1.73 2014-02-04 17:13:08 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libwidg/ArrowButton.st,v 1.75 2014-02-18 14:24:25 stefan Exp $'
+!
+
+version_CVS
+    ^ '$Header: /cvs/stx/stx/libwidg/ArrowButton.st,v 1.75 2014-02-18 14:24:25 stefan Exp $'
 ! !
 
--- a/Button.st	Wed Feb 12 22:17:26 2014 +0000
+++ b/Button.st	Sun Feb 23 20:18:07 2014 +0000
@@ -1536,7 +1536,7 @@
 viewBackground:something
     super viewBackground:something.
     something isColor ifTrue:[
-        device hasGrayscales ifTrue:[
+        self graphicsDevice hasGrayscales ifTrue:[
             halfLightColor notNil ifTrue:[
                 halfLightColor := (something averageColorIn:(0@0 corner:7@7)) lightened "on:device".
             ].
@@ -1746,20 +1746,23 @@
 fetchDeviceResources
     "fetch device colors, to avoid reallocation at redraw time"
 
+    |graphicsDevice|
+
     super fetchDeviceResources.
-
-    disabledFgColor notNil ifTrue:[disabledFgColor := disabledFgColor onDevice:device].
-    disabledEtchedFgColor notNil ifTrue:[disabledEtchedFgColor := disabledEtchedFgColor onDevice:device].
-    activeFgColor notNil ifTrue:[activeFgColor := activeFgColor onDevice:device].
-    activeBgColor notNil ifTrue:[activeBgColor := activeBgColor onDevice:device].
-    enteredFgColor notNil ifTrue:[enteredFgColor := enteredFgColor onDevice:device].
-    enteredBgColor notNil ifTrue:[enteredBgColor := enteredBgColor onDevice:device].
-
-    formColor notNil ifTrue:[formColor := formColor onDevice:device].
-    formLightColor notNil ifTrue:[formLightColor := formLightColor onDevice:device].
-    formShadowColor notNil ifTrue:[formShadowColor := formShadowColor onDevice:device].
-    halfShadowColor notNil ifTrue:[halfShadowColor := halfShadowColor onDevice:device].
-    halfLightColor notNil ifTrue:[halfLightColor := halfLightColor onDevice:device].
+    graphicsDevice := self graphicsDevice.
+
+    disabledFgColor notNil ifTrue:[disabledFgColor := disabledFgColor onDevice:graphicsDevice].
+    disabledEtchedFgColor notNil ifTrue:[disabledEtchedFgColor := disabledEtchedFgColor onDevice:graphicsDevice].
+    activeFgColor notNil ifTrue:[activeFgColor := activeFgColor onDevice:graphicsDevice].
+    activeBgColor notNil ifTrue:[activeBgColor := activeBgColor onDevice:graphicsDevice].
+    enteredFgColor notNil ifTrue:[enteredFgColor := enteredFgColor onDevice:graphicsDevice].
+    enteredBgColor notNil ifTrue:[enteredBgColor := enteredBgColor onDevice:graphicsDevice].
+
+    formColor notNil ifTrue:[formColor := formColor onDevice:graphicsDevice].
+    formLightColor notNil ifTrue:[formLightColor := formLightColor onDevice:graphicsDevice].
+    formShadowColor notNil ifTrue:[formShadowColor := formShadowColor onDevice:graphicsDevice].
+    halfShadowColor notNil ifTrue:[halfShadowColor := halfShadowColor onDevice:graphicsDevice].
+    halfLightColor notNil ifTrue:[halfLightColor := halfLightColor onDevice:graphicsDevice].
 
     "Modified: 15.2.1997 / 17:14:16 / cg"
 !
@@ -1780,9 +1783,10 @@
 
     <resource: #style (#name)>
 
-    |hasGreyscales nm|
+    |hasGreyscales nm graphicsDevice|
 
     super initStyle.
+    graphicsDevice := self graphicsDevice.
 
     DefaultBorderWidth notNil ifTrue:[self borderWidth: DefaultBorderWidth].
     DefaultForegroundColor notNil ifTrue:[fgColor := DefaultForegroundColor].
@@ -1808,13 +1812,13 @@
     DefaultLightColor notNil ifTrue:[lightColor := DefaultLightColor].
 
     shadowColor isNil ifTrue:[
-        shadowColor := Black.
+        shadowColor := self blackColor.
     ].
     lightColor isNil ifTrue:[
-        lightColor := White.
+        lightColor := self whiteColor.
     ].
 
-    hasGreyscales := device hasGrayscales.
+    hasGreyscales := graphicsDevice hasGrayscales.
     (edgeStyle == #soft or:[edgeStyle == #softWin95]) ifTrue:[
         DefaultHalfShadowColor notNil ifTrue:[halfShadowColor := DefaultHalfShadowColor].
         DefaultHalfLightColor notNil ifTrue:[halfLightColor := DefaultHalfLightColor].
@@ -1850,10 +1854,10 @@
                 enteredBgColor := Color veryLightGray.
             ].
             DefaultActiveBackgroundColor isNil ifTrue:[
-                activeBgColor := Black.
+                activeBgColor := self blackColor.
             ].
             DefaultActiveForegroundColor isNil ifTrue:[
-                activeFgColor := White.
+                activeFgColor := self whiteColor.
             ].
         ].
     ] ifFalse:[
@@ -1875,10 +1879,10 @@
                     ].
                 ] ifFalse:[
                     DefaultActiveForegroundColor isNil ifTrue:[
-                        activeFgColor := White.
+                        activeFgColor := self whiteColor.
                     ].
                     DefaultActiveBackgroundColor isNil ifTrue:[
-                        activeBgColor := Black
+                        activeBgColor := self blackColor
                     ]
                 ]
             ]
@@ -1892,14 +1896,14 @@
 
     DefaultReturnButtonHasImage ifTrue:[
         (hasGreyscales and:[styleSheet is3D]) ifTrue:[
-            shadowForm := self class returnShadowFormOn:device.
-            lightForm := self class returnLightFormOn:device.
+            shadowForm := self class returnShadowFormOn:graphicsDevice.
+            lightForm := self class returnLightFormOn:graphicsDevice.
             formColor := viewBackground.
             formShadowColor := shadowColor.
             formLightColor := lightColor
         ] ifFalse:[
-            shadowForm := self class returnFormOn:device.
-            formColor := Black
+            shadowForm := self class returnFormOn:graphicsDevice.
+            formColor := self blackColor
         ].
     ].
 
@@ -2165,8 +2169,8 @@
             sColor := formShadowColor.
             lColor := formLightColor.
         ] ifFalse:[
-            sColor := device blackColor.
-            lColor := device whiteColor.
+            sColor := self graphicsDevice blackColor.
+            lColor := self graphicsDevice whiteColor.
         ].
         self foreground:sColor.
         self displayForm:shadowForm x:x y:y.
@@ -2319,10 +2323,10 @@
 !Button class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libwidg/Button.st,v 1.155 2013-06-25 19:26:48 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libwidg/Button.st,v 1.157 2014-02-18 16:05:42 stefan Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libwidg/Button.st,v 1.155 2013-06-25 19:26:48 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libwidg/Button.st,v 1.157 2014-02-18 16:05:42 stefan Exp $'
 ! !
 
--- a/CheckToggle.st	Wed Feb 12 22:17:26 2014 +0000
+++ b/CheckToggle.st	Sun Feb 23 20:18:07 2014 +0000
@@ -622,22 +622,23 @@
                        #'checkToggle.enabledBackgroundColor' 
                        )>
 
-    |enabledBgColor|
+    |enabledBgColor graphicsDevice|
 
     super initStyle.
+    graphicsDevice := self graphicsDevice.
 
     onLevel := offLevel.
     DefaultActiveLevel notNil ifTrue:[onLevel := DefaultActiveLevel].
     DefaultPassiveLevel notNil ifTrue:[offLevel := DefaultPassiveLevel].
 
-    activeLogo := DefaultCheckForm onDevice:device.
+    activeLogo := DefaultCheckForm onDevice:graphicsDevice.
     passiveLogo := nil.
 
     DefaultActiveImage notNil ifTrue:[
-        activeLogo := DefaultActiveImage onDevice:device.
+        activeLogo := DefaultActiveImage onDevice:graphicsDevice.
     ].
     DefaultPassiveImage notNil ifTrue:[
-        passiveLogo := DefaultPassiveImage onDevice:device.
+        passiveLogo := DefaultPassiveImage onDevice:graphicsDevice.
     ].
 
     disabledFgColor := styleSheet at:#'checkToggle.disabledForegroundColor' default:disabledFgColor.
@@ -781,15 +782,18 @@
 !
 
 logoToDisplay                        
+    |graphicsDevice|
+
+    graphicsDevice := self graphicsDevice.
     controller enabled ifFalse:[       
         (controller pressed) ifTrue:[
             DefaultDisabledActiveImage notNil ifTrue:[
-                activeLogo := enteredLogo := DefaultDisabledActiveImage onDevice:device.
+                activeLogo := enteredLogo := DefaultDisabledActiveImage onDevice:graphicsDevice.
                 ^ activeLogo.
             ].
         ] ifFalse:[
             DefaultDisabledPassiveImage notNil ifTrue:[
-                passiveLogo := enteredLogo := DefaultDisabledPassiveImage onDevice:device.
+                passiveLogo := enteredLogo := DefaultDisabledPassiveImage onDevice:graphicsDevice.
                 ^ passiveLogo.
             ].
         ].
@@ -797,24 +801,24 @@
         controller entered ifTrue:[
             (controller pressed) ifTrue:[
                 DefaultEnteredActiveImage notNil ifTrue:[
-                    activeLogo := enteredLogo := DefaultEnteredActiveImage onDevice:device.
+                    activeLogo := enteredLogo := DefaultEnteredActiveImage onDevice:graphicsDevice.
                     ^ activeLogo.
                 ].
             ] ifFalse:[
                 DefaultEnteredPassiveImage notNil ifTrue:[
-                    passiveLogo := enteredLogo := DefaultEnteredPassiveImage onDevice:device.
+                    passiveLogo := enteredLogo := DefaultEnteredPassiveImage onDevice:graphicsDevice.
                     ^ passiveLogo.
                 ].
             ].
         ] ifFalse:[
             (controller pressed) ifTrue:[
                 DefaultActiveImage notNil ifTrue:[
-                    activeLogo := enteredLogo := DefaultActiveImage onDevice:device.
+                    activeLogo := enteredLogo := DefaultActiveImage onDevice:graphicsDevice.
                     ^ activeLogo.
                 ].
             ] ifFalse:[
                 DefaultPassiveImage notNil ifTrue:[
-                    passiveLogo := enteredLogo := DefaultPassiveImage onDevice:device.
+                    passiveLogo := enteredLogo := DefaultPassiveImage onDevice:graphicsDevice.
                     ^ passiveLogo.
                 ].
             ].
@@ -830,10 +834,10 @@
 !CheckToggle class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libwidg/CheckToggle.st,v 1.71 2014-01-16 14:31:56 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libwidg/CheckToggle.st,v 1.72 2014-02-18 14:27:08 stefan Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libwidg/CheckToggle.st,v 1.71 2014-01-16 14:31:56 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libwidg/CheckToggle.st,v 1.72 2014-02-18 14:27:08 stefan Exp $'
 ! !
 
--- a/DialogBox.st	Wed Feb 12 22:17:26 2014 +0000
+++ b/DialogBox.st	Sun Feb 23 20:18:07 2014 +0000
@@ -4725,6 +4725,20 @@
     "Created: 17.11.1995 / 09:45:21 / cg"
 !
 
+requestPassword:aString initialAnswer:defaultAnswer
+    "launch a Dialog, which allows user to enter something invisibly.
+     Return the entered string (may be empty string) 
+     or nil (if cancel was pressed)"
+
+    ^ EnterBox new initialText:defaultAnswer; requestPassword:aString 
+
+    "
+     Dialog 
+         requestPassword:'Enter Secret:'
+         initialText:'blabla'
+    "
+!
+
 requestText:title
     "open a dialog asking for multiline text.
      Return a stringCollection or nil if cancelled."
@@ -9388,7 +9402,7 @@
     buttonPanel 
         origin:(0.0 @ 1.0) corner:(1.0 @ 1.0);
         bottomInset:ViewSpacing; 
-        topInset:((font height + ViewSpacing) * 2) negated;
+        topInset:((gc font height + ViewSpacing) * 2) negated;
         borderWidth:0;
         horizontalLayout:#spread.
 
@@ -10053,11 +10067,11 @@
 !DialogBox class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libwidg/DialogBox.st,v 1.348 2014-02-08 11:31:21 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libwidg/DialogBox.st,v 1.352 2014-02-13 18:33:34 stefan Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libwidg/DialogBox.st,v 1.348 2014-02-08 11:31:21 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libwidg/DialogBox.st,v 1.352 2014-02-13 18:33:34 stefan Exp $'
 ! !
 
 
--- a/EditField.st	Wed Feb 12 22:17:26 2014 +0000
+++ b/EditField.st	Sun Feb 23 20:18:07 2014 +0000
@@ -800,8 +800,8 @@
                        #'editField.selectionBackgroundColor'
                        #'editField.font')>
 
-    DefaultForegroundColor := StyleSheet colorAt:'editField.foregroundColor' default:Black.
-    DefaultBackgroundColor := StyleSheet colorAt:'editField.backgroundColor' default:White.
+    DefaultForegroundColor := StyleSheet colorAt:'editField.foregroundColor' default:Color black.
+    DefaultBackgroundColor := StyleSheet colorAt:'editField.backgroundColor' default:Color white.
     DefaultSelectionForegroundColor := StyleSheet colorAt:'editField.selectionForegroundColor' default:nil.
     DefaultSelectionForegroundColor isNil ifTrue:[
         DefaultSelectionForegroundColor := StyleSheet colorAt:'selection.hilightForegroundColor' default:DefaultBackgroundColor.
@@ -1898,9 +1898,9 @@
     super initStyle.
 
     DefaultBackgroundColor notNil ifTrue:[
-        bgColor := DefaultBackgroundColor onDevice:device.
+        bgColor := DefaultBackgroundColor onDevice:self graphicsDevice.
 "/        bgColor ditherForm notNil ifTrue:[
-"/            bgColor := (bgColor copy) exactOrNearestOn:device
+"/            bgColor := (bgColor copy) exactOrNearestOn:self graphicsDevice
 "/        ].
         self viewBackground:bgColor.
     ].
@@ -1932,7 +1932,7 @@
 
 initialize
     super initialize.
-    self initialHeight:(font height + font descent + (topMargin * 2)).
+    self initialHeight:(gc font height + gc font descent + (topMargin * 2)).
 
     nFullLinesShown := 1.
     nLinesShown := 1.
@@ -2195,11 +2195,11 @@
         w := fontWidth * 20.  "space for 20 characters"
     ] ifFalse:[
         "length of current contents +  50% space to type more characters"
-        f := font onDevice:device.
+        f := gc font onDevice:self graphicsDevice.
         w := ((f widthOf:string) * 1.5) rounded. 
         w := w + margin + margin.
     ].
-    w := w min:(device width // 2).
+    w := w min:(self graphicsDevice width // 2).
 
     "/ h := f maxHeight + (f maxDescent * 2) + (margin * 2).
     h := fontHeight + topMargin + (margin * 2).
@@ -2342,10 +2342,10 @@
 !EditField class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libwidg/EditField.st,v 1.224 2013-09-02 21:05:54 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libwidg/EditField.st,v 1.227 2014-02-18 16:10:21 stefan Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libwidg/EditField.st,v 1.224 2013-09-02 21:05:54 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libwidg/EditField.st,v 1.227 2014-02-18 16:10:21 stefan Exp $'
 ! !
 
--- a/EditTextView.st	Wed Feb 12 22:17:26 2014 +0000
+++ b/EditTextView.st	Sun Feb 23 20:18:07 2014 +0000
@@ -2184,7 +2184,7 @@
 
         char := self characterUnderCursor asString.
         self paint:bgColor.                       
-        self displayRectangleX:x y:y width:(font widthOf:char) height:fontHeight-2.
+        self displayRectangleX:x y:y width:(gc font widthOf:char) height:fontHeight-2.
     ] ifFalse:[
         self paint:bgColor.
         cursorType == #ibeam ifTrue:[
@@ -2469,7 +2469,7 @@
                 oldClip := self clippingRectangleOrNil.
                 x := (self xOfCol:cursorCol inVisibleLine:cursorVisibleLine) - viewOrigin x.
                 y := self yOfVisibleLine:cursorVisibleLine.
-                self clippingRectangle:(x@y extent:((font width * 2) @ fontHeight)).
+                self clippingRectangle:(x@y extent:((gc font width * 2) @ fontHeight)).
                 super redrawVisibleLine:cursorVisibleLine from:cursorCol-1 to:cursorCol.
                 self clippingRectangle:oldClip.
                 ^ self.
@@ -3413,7 +3413,7 @@
 
     self withoutRedrawInsertStringWithoutCRs:aString atLine:lineNr col:colNr.
     shown ifTrue:[
-        font hasOverlappingCharacters ifTrue:[
+        gc font hasOverlappingCharacters ifTrue:[
             self invalidateLine:lineNr.
         ] ifFalse:[
             self redrawLine:lineNr from:colNr
@@ -4037,14 +4037,14 @@
                     self scrollHorizontalTo:(newWidth
                                              - width
                                              + margin + margin
-                                             + (font widthOf:'  '))
+                                             + (gc font widthOf:'  '))
                 ]
             ].
             self textChanged.
         ] ifFalse:[
             self textChanged "/ textChangedButNoSizeChange
         ].
-        font hasOverlappingCharacters ifTrue:[
+        gc font hasOverlappingCharacters ifTrue:[
             self invalidateLine:lineNr.
         ] ifFalse:[
             self redrawLine:lineNr from:start.
@@ -4187,11 +4187,11 @@
                     x := (self xOfCol:colNr-1 inVisibleLine:cursorVisibleLine) - viewOrigin x.
                     y := self yOfVisibleLine:cursorVisibleLine.
 
-                    font hasOverlappingCharacters ifTrue:[
+                    gc font hasOverlappingCharacters ifTrue:[
                         self invalidateLine:lineNr.
                     ] ifFalse:[
                         drawCharacterOnly ifTrue:[
-                            self clippingRectangle:(x@y extent:((font width * 2) @ fontHeight)).
+                            self clippingRectangle:(x@y extent:((gc font width * 2) @ fontHeight)).
                             self redrawLine:lineNr from:colNr-1 to:colNr
                         ] ifFalse:[
                             self clippingRectangle:(x@y extent:((width - x) @ fontHeight)).
@@ -4203,7 +4203,7 @@
                 ^ self.
             ].
         ].
-        font hasOverlappingCharacters ifTrue:[
+        gc font hasOverlappingCharacters ifTrue:[
             self invalidateLine:lineNr.
         ] ifFalse:[
             drawCharacterOnly ifTrue:[
@@ -4314,7 +4314,7 @@
     ].
     self textChanged.
     shown ifTrue:[
-        font hasOverlappingCharacters ifTrue:[
+        gc font hasOverlappingCharacters ifTrue:[
             self invalidateLine:lineNr.
         ] ifFalse:[
             drawCharacterOnly ifTrue:[
@@ -4372,7 +4372,7 @@
     ].
     self textChanged.
     shown ifTrue:[
-        font hasOverlappingCharacters ifTrue:[
+        gc font hasOverlappingCharacters ifTrue:[
             self invalidateLine:lineNr.
         ] ifFalse:[
             self redrawLine:lineNr from:colNr
@@ -6505,14 +6505,14 @@
         info:'Spelling Suggestion'.
 !
 
-openFileBrowserOnIt
-    "open a fileBrowser on the selected fileName"
+openFileBrowserOnFileNamed:fileNameString
+    "open a fileBrowser on the given fileNameString"
 
     |fn|
 
-    fn := self selectionAsString asFilename.
+    fn := fileNameString asFilename.
     fn exists ifFalse:[
-        fn := self selectionAsString withoutSeparators withoutQuotes asFilename.
+        fn := fileNameString withoutSeparators withoutQuotes asFilename.
         fn exists ifFalse:[
             ^ self warn:'Oops - file is gone'.
         ].
@@ -6522,6 +6522,17 @@
     "Modified: / 06-09-2012 / 14:47:22 / cg"
 !
 
+openFileBrowserOnIt
+    "open a fileBrowser on the selected fileName"
+
+    |fileNameString|
+
+    fileNameString := self selectionAsString.
+    self openFileBrowserOnFileNamed:fileNameString
+
+    "Modified: / 06-09-2012 / 14:47:22 / cg"
+!
+
 openWorkspaceWithIt
     "open a workspace containing the selected text"
 
@@ -7247,11 +7258,11 @@
     |w dev|
 
     w := super widthOfContents.
-    (dev := device) isNil ifTrue:[
-        "/ really dont know ...
+    (dev := self graphicsDevice ) isNil ifTrue:[
+        "/ really don't know ...
         dev := Screen current
     ].
-    ^ w + (font widthOn:dev)
+    ^ w + (gc font widthOn:dev)
 
     "Modified: 28.5.1996 / 19:32:25 / cg"
 ! !
@@ -7350,7 +7361,7 @@
      to be visible if it is positioned right behind the longest line of text.
      The default returned here is 10 pixels, which should be ok for most cursors"
 
-    ^ 10 max:font width
+    ^ 10 max:gc font width
 !
 
 halfPageDown
@@ -8667,11 +8678,11 @@
 !EditTextView class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libwidg/EditTextView.st,v 1.598 2013-11-28 14:29:00 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libwidg/EditTextView.st,v 1.600 2014-02-13 18:37:39 stefan Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libwidg/EditTextView.st,v 1.598 2013-11-28 14:29:00 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libwidg/EditTextView.st,v 1.600 2014-02-13 18:37:39 stefan Exp $'
 !
 
 version_HG
--- a/FontPanel.st	Wed Feb 12 22:17:26 2014 +0000
+++ b/FontPanel.st	Sun Feb 23 20:18:07 2014 +0000
@@ -504,7 +504,7 @@
 
     super initialize.
 
-    showFontNameLabel := device platformName ~= #WIN32.
+    showFontNameLabel := self graphicsDevice platformName ~= #WIN32.
     sizeUnit := #pt.
 
     mm := ViewSpacing.
@@ -566,8 +566,8 @@
         encodingLabel beInvisible
     ].
 
-    sep := View in:box1.
-    sep width:20 height:10.
+"/    sep := View in:box1.
+"/    sep width:10 height:10.
 
     pixelPointSwitch := ComboListView in:box2.
     "/ encodingFilter font:l font.
@@ -670,7 +670,7 @@
     |availableEncodings listPresentedToUser|
 
     listOfEncodings := OrderedCollection new.
-    device platformName = #WIN32 ifTrue:[
+    self graphicsDevice platformName = #WIN32 ifTrue:[
         listOfEncodings
             addAll:
                 #(
@@ -690,7 +690,7 @@
     ].
 
     availableEncodings := Set new.
-    device listOfAvailableFonts do:[:f | availableEncodings add:(f encoding ? '?')].
+    self graphicsDevice listOfAvailableFonts do:[:f | availableEncodings add:(f encoding ? '?')].
     availableEncodings := availableEncodings asSortedCollection.
     listOfEncodings addAll:availableEncodings.
 
@@ -780,7 +780,7 @@
         ^ nil.
     ].
 
-    allFonts := device 
+    allFonts := self graphicsDevice 
                     fontsInFamily:(currentFamily ? '*')
                     face:(currentFace ? '*')
                     style:(currentStyle ? '*')
@@ -814,25 +814,25 @@
 getFacesForFamily:aFamilyName filtering:filter
     "the list of font faces for a given family"
 
-    ^ device facesInFamily:aFamilyName filtering:filter
+    ^ self graphicsDevice facesInFamily:aFamilyName filtering:filter
 !
 
 getFamilyList 
     "the list of font families"
 
-    ^ device fontFamiliesFiltering:filter.
+    ^ self graphicsDevice fontFamiliesFiltering:filter.
 !
 
 getSizesInFamily:aFamilyName face:face style:style filtering:filter
     sizeUnit == #px ifTrue:[
-        ^ device 
+        ^ self graphicsDevice 
              pixelSizesInFamily:(currentFamily ? '*')
              face:(currentFace ? '*')
              style:(currentStyle ? '*')
              filtering:filter.
     ].
 
-    ^ device 
+    ^ self graphicsDevice 
          sizesInFamily:(currentFamily ? '*')
          face:(currentFace ? '*')
          style:(currentStyle ? '*')
@@ -842,7 +842,7 @@
 getStylesInFamily:aFamilyName face:aFace filtering:filter
     "the list of font styles for a given family-face"
 
-    ^ device stylesInFamily:aFamilyName face:aFace filtering:filter.
+    ^ self graphicsDevice stylesInFamily:aFamilyName face:aFace filtering:filter.
 !
 
 showPreview
@@ -859,7 +859,7 @@
     self withWaitCursorDo:[
         font := self fontForPreview.
         font notNil ifTrue:[
-            deviceFont := font onDevice:device.
+            deviceFont := font onDevice:self graphicsDevice.
             enc := deviceFont encoding.
             enc isNil ifTrue:[enc := #'fontspecific'].
 
@@ -869,6 +869,7 @@
             encodingLabel label:enc.
             currentEncoding := enc.
             fontName := deviceFont fullName.
+            (font isKindOf:XftFontDescription) ifTrue:[fontName := fontName,' (xft)'].
             previewField contents:(self class defaultSampleStringForEncoding:enc).
         ] ifFalse:[
             previewField contents:nil.
@@ -1228,10 +1229,10 @@
 !FontPanel class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libwidg/FontPanel.st,v 1.108 2013-07-24 21:01:59 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libwidg/FontPanel.st,v 1.111 2014-02-22 16:14:55 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libwidg/FontPanel.st,v 1.108 2013-07-24 21:01:59 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libwidg/FontPanel.st,v 1.111 2014-02-22 16:14:55 cg Exp $'
 ! !
 
--- a/FramedBox.st	Wed Feb 12 22:17:26 2014 +0000
+++ b/FramedBox.st	Sun Feb 23 20:18:07 2014 +0000
@@ -280,7 +280,7 @@
              method, which allows specific control over
              normalFont/boldFont/italicFont parameters."
 
-    (font ~= aFont) ifTrue:[
+    (self font ~= aFont) ifTrue:[
         super font:aFont.
         self invalidate
     ]
@@ -574,7 +574,7 @@
     ] ifFalse:[
         label isString ifTrue:[
             l := ' ' , label , ' '.
-            font := font onDevice:device.
+            gc createFontOnDevice.
         ] ifFalse:[
             l := label
         ].
@@ -593,26 +593,26 @@
                 "
                  label at top
                 "
-                y := font ascent + margin.
+                y := gc font ascent + margin.
             ] ifFalse:[
                 "
                  label at bottom
                 "
-                y := height - margin - font descent.
+                y := height - margin - gc font descent.
             ].
             (labelPosition == #topLeft
             or:[labelPosition == #bottomLeft]) ifTrue:[
                 "
                  label at left
                 "
-                x := font height + margin
+                x := gc font height + margin
             ] ifFalse:[
                 (labelPosition == #topRight
                 or:[labelPosition == #bottomRight]) ifTrue:[
                     "
                      label at right
                     "
-                    x := width - margin - labelLen - font height
+                    x := width - margin - labelLen - gc font height
                 ] ifFalse:[
                     "
                      label at center
@@ -624,7 +624,7 @@
             label isString ifTrue:[
                 self displayOpaqueString:l x:x y:y
             ] ifFalse:[
-                l displayOpaqueOn:self x:x y:y - font ascent
+                l displayOpaqueOn:self x:x y:y - gc font ascent
             ]
         ]
     ]
@@ -648,7 +648,7 @@
 
     super fetchDeviceResources.
 
-    fgColor := fgColor onDevice:device.
+    fgColor := fgColor onDevice:self graphicsDevice.
 
     "Created: 15.2.1997 / 16:57:56 / cg"
 !
@@ -665,11 +665,10 @@
 
     super initStyle.
 
-    fgColor := StyleSheet at:'framedBox.foregroundColor' default:Black.
+    fgColor := StyleSheet at:'framedBox.foregroundColor' default:self blackColor.
     labelPosition := StyleSheet at:'framedBox.labelPosition' default:#topCenter.
     frame3D := StyleSheet at:'framedBox.3DFrame' default:true.
-    font := StyleSheet at:'framedBox.font' default:(StyleSheet at:'label.font' default:font).
-    font := font onDevice:device.
+    self basicFont:(StyleSheet at:'framedBox.font' default:(StyleSheet at:'label.font' default:self font)).
     self borderWidth:0.
 
     "Modified: / 26.10.1997 / 17:00:57 / cg"
@@ -710,7 +709,7 @@
         ^ preferredExtent
     ].
 
-    sep := font heightOn:device.
+    sep := gc font heightOn:self graphicsDevice.
     sep2 := sep + sep.
 
     true "showFrame" ifFalse:[
@@ -727,7 +726,7 @@
 
     |mH mV sepH sepV imH imV lw|
 
-    sepH := sepV := font heightOn:device.
+    sepH := sepV := gc font heightOn:self graphicsDevice.
     horizontalSpace notNil ifTrue:[
         sepH := horizontalSpace
     ].
@@ -765,9 +764,10 @@
 !FramedBox class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libwidg/FramedBox.st,v 1.54 2010-03-19 12:07:20 ca Exp $'
+    ^ '$Header: /cvs/stx/stx/libwidg/FramedBox.st,v 1.57 2014-02-18 16:45:48 stefan Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libwidg/FramedBox.st,v 1.54 2010-03-19 12:07:20 ca Exp $'
+    ^ '$Header: /cvs/stx/stx/libwidg/FramedBox.st,v 1.57 2014-02-18 16:45:48 stefan Exp $'
 ! !
+
--- a/Label.st	Wed Feb 12 22:17:26 2014 +0000
+++ b/Label.st	Sun Feb 23 20:18:07 2014 +0000
@@ -870,7 +870,7 @@
     DefaultForegroundColor := StyleSheet colorAt:#'label.foregroundColor'.
     DefaultForegroundColor isNil ifTrue:[
         "/ fallBack: comon value
-        DefaultForegroundColor := StyleSheet colorAt:#'foregroundColor' default:Black.
+        DefaultForegroundColor := StyleSheet colorAt:#'foregroundColor' default:Color black.
     ].
     DefaultBackgroundColor := StyleSheet colorAt:#'label.backgroundColor'.
     DefaultBackgroundColor isNil ifTrue:[
@@ -956,7 +956,7 @@
     aColor ~~ bgColor ifTrue:[
         bgColor := aColor.
         bgColor notNil ifTrue:[
-            bgColor := bgColor onDevice:device.
+            bgColor := bgColor onDevice:self graphicsDevice.
             self class == Label ifTrue:[
                 super viewBackground:bgColor
             ].
@@ -980,7 +980,7 @@
     aColor ~~ etchedFgColor ifTrue:[
         etchedFgColor := aColor.
         etchedFgColor notNil ifTrue:[
-            etchedFgColor := etchedFgColor onDevice:device.
+            etchedFgColor := etchedFgColor onDevice:self graphicsDevice.
         ].
         self invalidateRepairNow:true
     ].
@@ -996,7 +996,7 @@
     "set the foreground color"
 
     aColor ~~ fgColor ifTrue:[
-        fgColor := aColor onDevice:device.
+        fgColor := aColor onDevice:self graphicsDevice.
         self invalidateRepairNow:true
     ].
 
@@ -1008,8 +1008,8 @@
     "set the colors to be used for drawing"
 
     (fgColor ~~ fg or:[bgColor ~~ bg]) ifTrue:[
-        fgColor := fg onDevice:device.
-        bgColor := bg onDevice:device.
+        fgColor := fg onDevice:self graphicsDevice.
+        bgColor := bg onDevice:self graphicsDevice.
         self class == Label ifTrue:[
             super viewBackground:bgColor
         ].
@@ -1213,8 +1213,8 @@
              method, which allows specific control over
              normalFont/boldFont/italicFont parameters."
 
-    (aFont notNil and:[aFont ~~ font]) ifTrue:[
-        super font:(aFont onDevice:device).
+    (aFont notNil and:[aFont ~~ gc font]) ifTrue:[
+        super font:aFont.
         self newLayout
     ]
 
@@ -1384,8 +1384,8 @@
 
     super fetchDeviceResources.
 
-    fgColor := fgColor onDevice:device.
-    bgColor := bgColor onDevice:device.
+    fgColor := fgColor onDevice:self graphicsDevice.
+    bgColor := bgColor onDevice:self graphicsDevice.
 
     "Created: / 13.1.1997 / 23:34:30 / cg"
     "Modified: / 15.1.1998 / 00:13:46 / stefan"
@@ -1404,7 +1404,7 @@
     DefaultForegroundColor notNil ifTrue:[
         fgColor := DefaultForegroundColor
     ] ifFalse:[
-        fgColor := Black.
+        fgColor := self blackColor.
     ].
     self class == Label ifTrue:[
         self borderWidth:0.
@@ -1415,10 +1415,12 @@
 !
 
 initialize
+    |currentFont|
+
     super initialize.
 
-    font := font onDevice:device.
-    self initialHeight:(font height + font descent).
+    currentFont := gc createFontOnDevice.
+    self initialHeight:(currentFont height + currentFont descent).
     adjust := #center.
     labelOriginX := labelOriginY := 0.
     labelWidth := labelHeight := 0.
@@ -1433,7 +1435,7 @@
      different font parameters"
 
     super recreate.
-    font := font onDevice:device.
+    gc createFontOnDevice.
     self computeLabelSize.
     self computeLabelOrigin
 !
@@ -1520,7 +1522,7 @@
         textWidth := logoUsed widthOn:self.
     ] ifFalse:[
         "/ a StringCollection
-        textHeight := (font heightOn:device) * numberOfLines.
+        textHeight := (gc font height) * numberOfLines.
 
         textWidth := 0.
         logoUsed do:[:line |
@@ -1770,15 +1772,15 @@
     "redraw my label with fg/bg - this generic method is also used by subclasses
      (especially Button) to redraw the logo in different colors."
 
-    |x y scaleH scaleV nW nH hSep vSep m2 ascent|
+    |x y scaleH scaleV nW nH hSep vSep m2 ascent currentTransformation|
 
     doClear ifTrue:[self clearInsideWith:bg].
 
     self paint:fg on:bg.
     logo notNil ifTrue:[
         m2 := margin * 2.
-        hSep := (hSpace*2).
-        vSep := (vSpace*2).
+        hSep := hSpace*2.
+        vSep := vSpace*2.
 
         x := labelOriginX.
         y := labelOriginY.
@@ -1793,11 +1795,11 @@
                 scaleH <= 0 ifTrue:[scaleH := Float epsilon].
                 scaleV <= 0 ifTrue:[scaleV := Float epsilon].
                 self scale:(scaleH @ scaleV).
-                x := transformation applyInverseScaleX:x.
-                y := transformation applyInverseScaleY:y.
+                x := currentTransformation applyInverseScaleX:x.
+                y := currentTransformation applyInverseScaleY:y.
             ].
 
-            logo := logo onDevice:device.
+            logo := logo onDevice:self graphicsDevice.
 "/            self background:bg.
             self drawImageLogo:logo x:x y:y opaque:doClear.
         ] ifFalse:[
@@ -1822,11 +1824,12 @@
                 scaleV <= 0 ifTrue:[scaleV := Float epsilon].
 
                 self scale:(scaleH min:scaleV).
-                x := transformation applyInverseScaleX:x.
+                currentTransformation := gc transformation.
+                x := currentTransformation applyInverseScaleX:x.
                 ascent ~~ 0 ifTrue:[
-                    y := y - ascent + (transformation applyScaleY:ascent).
+                    y := y - ascent + (currentTransformation applyScaleY:ascent).
                 ].
-                y := transformation applyInverseScaleY:y.
+                y := currentTransformation applyInverseScaleY:y.
                 scaleH < scaleV ifTrue:[
                     nH := labelHeight * scaleH.
                     "/ now, center vertically
@@ -1872,7 +1875,7 @@
                             self paint:fg.
                         ].
                         self drawStringLogo:str x:x y:y.
-                        y := y + (font height)
+                        y := y + (gc font height)
                     ]
                 ] ifFalse:[
                     "/ anything
@@ -1956,10 +1959,10 @@
 !Label class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libwidg/Label.st,v 1.150 2013-08-24 06:29:14 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libwidg/Label.st,v 1.153 2014-02-18 16:46:07 stefan Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libwidg/Label.st,v 1.150 2013-08-24 06:29:14 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libwidg/Label.st,v 1.153 2014-02-18 16:46:07 stefan Exp $'
 ! !
 
--- a/MenuView.st	Wed Feb 12 22:17:26 2014 +0000
+++ b/MenuView.st	Sun Feb 23 20:18:07 2014 +0000
@@ -1401,7 +1401,7 @@
              method, which allows specific control over
              normalFont/boldFont/italicFont parameters."
 
-    super font:(aFont onDevice:device).
+    super font:aFont.
     preferredExtent := nil.
     shown ifTrue:[
         self resize
@@ -1519,7 +1519,7 @@
     subMenus at:i put:aPopUpMenu.
     aPopUpMenu notNil ifTrue:[
         aPopUpMenu isBlock ifFalse:[
-            aPopUpMenu device:device.
+            aPopUpMenu device:self graphicsDevice.
             (receiver notNil and:[aPopUpMenu receiver isNil]) ifTrue:[
                 aPopUpMenu receiver:receiver
             ]
@@ -1551,7 +1551,7 @@
     "/ this is somewhat complicated: we have the symbolic key at hand,
     "/ but want to show the untranslated (inverse keyBoardMapped) key & modifier
     "/
-    s := device shortKeyStringFor:aSymbolicKey.
+    s := self graphicsDevice shortKeyStringFor:aSymbolicKey.
     s isNil ifTrue:[^ self].
 
     l := self visibleLineToAbsoluteLine:visLineNr.
@@ -1570,7 +1570,7 @@
         x := width - textStartLeft - self shortKeyInset.
     ] ifTrue:[
         "/ this aligns them at the right
-        x := width - leftMargin - (font widthOf:s).
+        x := width - leftMargin - (gc font widthOf:s).
         x := x - 16    "/ should query for the arrow size here ...
     ].
 
@@ -1628,7 +1628,7 @@
     ].
 
     (markType == $c) ifTrue:[
-        w := font widthOf:'V'.
+        w := gc font widthOf:'V'.
         check ifTrue:[
             form := checkOnImage.
         ] ifFalse:[
@@ -1636,7 +1636,7 @@
         ]
     ] ifFalse:[
         (markType == $b) ifTrue:[
-            w := font maxWidth. "/ font widthOf:'   '.
+            w := gc font maxWidth. "/ font widthOf:'   '.
         ] ifFalse:[
             (markType == $t) ifTrue:[
                 check ifTrue:[form := Cursor thumbsUp sourceForm]
@@ -1652,8 +1652,8 @@
     self drawLine:(line copyFrom:markIndex+2) fromX:x+w inVisible:visLineNr with:fg and:bg.
     self paint:(check ifTrue:[checkColor == bg ifTrue:[fg] ifFalse:[checkColor]] ifFalse:[fg]).
 
-    h := font ascent.
-    y := y + (font height - h // 2).
+    h := gc font ascent.
+    y := y + (gc font height - h // 2).
     yB := y + h - 1.
 
     form notNil ifTrue:[
@@ -1984,8 +1984,8 @@
 
     super fetchDeviceResources.
 
-    checkColor notNil ifTrue:[checkColor := checkColor onDevice:device].
-    disabledFgColor notNil ifTrue:[disabledFgColor := disabledFgColor onDevice:device].
+    checkColor notNil ifTrue:[checkColor := checkColor onDevice:self graphicsDevice].
+    disabledFgColor notNil ifTrue:[disabledFgColor := disabledFgColor onDevice:self graphicsDevice].
 
     hilightFgColorNoFocus := hilightFgColor.
     hilightBgColorNoFocus := hilightBgColor.
@@ -2008,10 +2008,11 @@
 initStyle
     "setup viewStyle specifics"
 
-    |style|
+    |style graphicsDevice|
 
     super initStyle.
 
+    graphicsDevice := self graphicsDevice.
     DefaultCheckColor notNil ifTrue:[
         checkColor := DefaultCheckColor
     ] ifFalse:[
@@ -2021,17 +2022,17 @@
     disabledEtchedFgColor := DefaultDisabledEtchedForegroundColor.
 
     DefaultForegroundColor notNil ifTrue:[
-        fgColor := DefaultForegroundColor onDevice:device
+        fgColor := DefaultForegroundColor onDevice:graphicsDevice
     ].
     DefaultBackgroundColor notNil ifTrue:[
-        bgColor := DefaultBackgroundColor onDevice:device
+        bgColor := DefaultBackgroundColor onDevice:graphicsDevice
     ].
 
     DefaultShadowColor notNil ifTrue:[
-        shadowColor := DefaultShadowColor onDevice:device
+        shadowColor := DefaultShadowColor onDevice:graphicsDevice
     ].
     DefaultLightColor notNil ifTrue:[
-        lightColor := DefaultLightColor onDevice:device
+        lightColor := DefaultLightColor onDevice:graphicsDevice
     ].
 
     DefaultHilightLevel notNil ifTrue:[
@@ -2047,12 +2048,12 @@
         "some 3D style menu - set hilight defaults to same"
 
         DefaultHilightForegroundColor notNil ifTrue:[
-            hilightFgColor := DefaultHilightForegroundColor onDevice:device
+            hilightFgColor := DefaultHilightForegroundColor onDevice:graphicsDevice
         ] ifFalse:[
             hilightFgColor := fgColor.
         ].
         DefaultHilightBackgroundColor notNil ifTrue:[
-            hilightBgColor := DefaultHilightBackgroundColor onDevice:device
+            hilightBgColor := DefaultHilightBackgroundColor onDevice:graphicsDevice
         ] ifFalse:[
             hilightBgColor := bgColor.
         ].
@@ -2064,12 +2065,12 @@
     ] ifFalse:[
         "some 2D style menu - set hilight defaults to inverse"
         DefaultHilightForegroundColor notNil ifTrue:[
-            hilightFgColor := DefaultHilightForegroundColor onDevice:device
+            hilightFgColor := DefaultHilightForegroundColor onDevice:graphicsDevice
         ] ifFalse:[
             hilightFgColor := bgColor.
         ].
         DefaultHilightBackgroundColor notNil ifTrue:[
-            hilightBgColor := DefaultHilightBackgroundColor onDevice:device
+            hilightBgColor := DefaultHilightBackgroundColor onDevice:graphicsDevice
         ] ifFalse:[
             hilightBgColor := fgColor.
         ].
@@ -2083,7 +2084,7 @@
     DefaultLineInset notNil ifTrue:[
         lineInset := DefaultLineInset
     ] ifFalse:[
-        lineInset := (device horizontalPixelPerMillimeter * 0.8) rounded.
+        lineInset := (graphicsDevice horizontalPixelPerMillimeter * 0.8) rounded.
     ].
 
     "
@@ -2093,7 +2094,7 @@
     style := styleSheet name.
 
     (style == #iris) ifTrue:[
-        device hasGrayscales ifTrue:[
+        graphicsDevice hasGrayscales ifTrue:[
             lineSpacing := 3
         ].
     ].
@@ -2114,7 +2115,7 @@
         level := 0.
     ].
     DefaultViewBackground notNil ifTrue:[
-        viewBackground := DefaultViewBackground onDevice:device
+        viewBackground := DefaultViewBackground onDevice:graphicsDevice
     ].
 
     "Modified: / 22-01-1997 / 11:57:23 / cg"
@@ -2138,7 +2139,7 @@
     "stupid - have to redo this ..."
     hilightStyle == #openwin ifTrue:[
         "add some space for rounded-hilight area"
-        self leftMargin:(font height " // 2" + 2 "inset of rounded rect") "10".
+        self leftMargin:(gc font height " // 2" + 2 "inset of rounded rect") "10".
     ] ifFalse:[
         (hilightLevel ~~ 0) ifTrue:[
             self leftMargin:hilightLevel abs + margin abs + 1.
@@ -2157,7 +2158,7 @@
     super recreate.
     hilightStyle == #openwin ifTrue:[
         "add some space for rounded-hilight area"
-        self leftMargin:(font height // 2 + 2 "inset of rounded rect") "10".
+        self leftMargin:(gc font height // 2 + 2 "inset of rounded rect") "10".
     ] ifFalse:[
         (hilightLevel ~~ 0) ifTrue:[
             self leftMargin:hilightLevel abs + self margin abs + 1.
@@ -2264,8 +2265,8 @@
                 "
                  item actions or selectors-array
                 "
-                device activePointerGrab == self ifTrue:[
-                    device ungrabPointer.
+                self graphicsDevice activePointerGrab == self ifTrue:[
+                    self graphicsDevice ungrabPointer.
                 ].
 
                 actions notNil ifTrue:[
@@ -2536,7 +2537,6 @@
     "compute the width req'd for the shortKey"
 
     maxShortKeyStringLen isNil ifTrue:[
-
         shortKeys isNil ifTrue:[
             maxShortKeyStringLen := 0
         ] ifFalse:[
@@ -2547,11 +2547,11 @@
                                                 thisKey isNil ifTrue:[
                                                     maxSoFar
                                                 ] ifFalse:[
-                                                    short := device shortKeyStringFor:thisKey.
+                                                    short := self graphicsDevice shortKeyStringFor:thisKey.
                                                     short isNil ifTrue:[
                                                         maxSoFar
                                                     ] ifFalse:[
-                                                        maxSoFar max:(font widthOf:short)
+                                                        maxSoFar max:(gc font widthOf:short)
                                                     ]
                                                 ]
                                              ]
@@ -2583,7 +2583,7 @@
 "/    ].
 "/    ^ aModifier.
 
-    m := device modifierKeyTopFor:aModifier.
+    m := self graphicsDevice modifierKeyTopFor:aModifier.
     m notNil ifTrue:[
         ^ m , '-'
     ].
@@ -2865,7 +2865,7 @@
         "/ race condition kludge ...
         m realized ifFalse:[
             (id := m id) notNil ifTrue:[
-                device unmapWindow:id.
+                self graphicsDevice unmapWindow:id.
             ]
         ] ifTrue:[
             m hide.
@@ -2925,7 +2925,7 @@
      need to know the physical screen coordinate,
      to map the subview there
     "
-    org := device translatePoint:(mx @ my) fromView:self toView:nil.
+    org := self graphicsDevice translatePoint:(mx @ my) fromView:self toView:nil.
 
     "
      before showing, process all of my expose events
@@ -2935,7 +2935,7 @@
 "/        windowGroup processExposeEvents
 "/    ].
 
-    menu topView device:device.   "/ req'd for multiDisplay operation
+    menu topView device:self graphicsDevice.   "/ req'd for multiDisplay operation
     menu superMenu:self.
 
     actionBlock notNil ifTrue:[
@@ -2972,7 +2972,7 @@
     menu realized ifFalse:[
         menu realize. 
     ] ifTrue:[
-        device mapWindow:menu id.
+        self graphicsDevice mapWindow:menu id.
     ].
 "/    device flush.
     menuOrBlock isBlock ifTrue:[
@@ -3004,10 +3004,10 @@
 !MenuView class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libwidg/MenuView.st,v 1.183 2014-01-23 16:11:49 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libwidg/MenuView.st,v 1.184 2014-02-18 14:56:00 stefan Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libwidg/MenuView.st,v 1.183 2014-01-23 16:11:49 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libwidg/MenuView.st,v 1.184 2014-02-18 14:56:00 stefan Exp $'
 ! !
 
--- a/MiniScroller.st	Wed Feb 12 22:17:26 2014 +0000
+++ b/MiniScroller.st	Sun Feb 23 20:18:07 2014 +0000
@@ -129,11 +129,11 @@
     h := defExt y.
 
     orientation == #vertical ifTrue:[
-        w := (device horizontalPixelPerMillimeter asFloat * mm) rounded.
+        w := (self graphicsDevice horizontalPixelPerMillimeter asFloat * mm) rounded.
         "/ dont let it become too small for thumb ...
         w := w max:((level abs + thumbLevel) * 2 + 1).
     ] ifFalse:[
-        h := (device verticalPixelPerMillimeter asFloat * mm) rounded.
+        h := (self graphicsDevice verticalPixelPerMillimeter asFloat * mm) rounded.
         "/ dont let it become too small for thumb ...
         h := h max:((level abs + thumbLevel) * 2 + 1).
     ].
@@ -146,5 +146,6 @@
 !MiniScroller class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libwidg/MiniScroller.st,v 1.24 2008-10-26 20:12:24 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libwidg/MiniScroller.st,v 1.25 2014-02-18 14:57:23 stefan Exp $'
 ! !
+
--- a/ObjectView.st	Wed Feb 12 22:17:26 2014 +0000
+++ b/ObjectView.st	Sun Feb 23 20:18:07 2014 +0000
@@ -674,7 +674,7 @@
 
     sel := self getClipboardObject.
     ((Screen current platformName ~= 'X11')
-     or:[(device getSelectionOwnerOf:#CLIPBOARD) == drawableId])
+     or:[(self graphicsDevice getSelectionOwnerOf:#CLIPBOARD) == self drawableId])
     ifTrue:[
         "
          a local selection - paste with some offset
@@ -717,28 +717,31 @@
 
     "check if line drag is into another view"
     rootMotion ifTrue:[
+        |currentTransformation|
+
         rootPoint := lastButt.
         "
          get device coordinates
         "
-        transformation notNil ifTrue:[
-            rootPoint := transformation applyTo:rootPoint.
+        currentTransformation := gc transformation.
+        currentTransformation notNil ifTrue:[
+            rootPoint := currentTransformation applyTo:rootPoint.
         ].
 
         "
          translate to screen
         "
-        offs := device translatePoint:0@0 fromView:self toView:rootView.
+        offs := self graphicsDevice translatePoint:0@0 fromView:self toView:rootView.
         rootPoint := rootPoint + offs.
 
         "search view the drop is in"
         viewId := rootView id.
         [viewId notNil] whileTrue:[
-            destinationId := device viewIdFromPoint:rootPoint in:viewId.
+            destinationId := self graphicsDevice viewIdFromPoint:rootPoint in:viewId.
             lastViewId := viewId.
             viewId := destinationId
         ].
-        destinationView := device viewFromId:lastViewId.
+        destinationView := self graphicsDevice viewFromId:lastViewId.
         destinationId := lastViewId.
         inMySelf := (destinationView == self).
         rootMotion := false
@@ -755,7 +758,7 @@
     ] ifFalse:[
         "into another one"
         destinationView notNil ifTrue:[
-            destinationPoint := device translatePoint:rootPoint fromView:rootView toView:destinationView.
+            destinationPoint := self graphicsDevice translatePoint:rootPoint fromView:rootView toView:destinationView.
             (transformation2 := destinationView transformation) notNil ifTrue:[
                 destinationPoint := transformation2 applyInverseTo:destinationPoint
             ].
@@ -788,18 +791,21 @@
     p1 := dragObject origin.
     p2 := dragObject corner.
     rootMotion ifTrue:[
+        |currentTransformation|
+
         dragger := rootView.
         "
          get device coordinates
         "
-        transformation notNil ifTrue:[
-            p1 := transformation applyTo:p1.
-            p2 := transformation applyTo:p2.
+        currentTransformation := gc transformation.
+        currentTransformation notNil ifTrue:[
+            p1 := currentTransformation applyTo:p1.
+            p2 := currentTransformation applyTo:p2.
         ].
         "
          translate to screen
         "
-        offs := device translatePoint:0@0 fromView:self toView:rootView.
+        offs := self graphicsDevice translatePoint:0@0 fromView:self toView:rootView.
         p1 := p1 + offs.
         p2 := p2 + offs.
     ] ifFalse:[
@@ -929,26 +935,29 @@
 
         "check if object is to be put into another view"
         rootMotion ifTrue:[
+            |currentTransformation|
+
             p := lastButt.
             "
              get device coordinates
             "
-            transformation notNil ifTrue:[
-                p := transformation applyTo:p.
+            currentTransformation := gc transformation.
+            currentTransformation notNil ifTrue:[
+                p := currentTransformation applyTo:p.
             ].
             "
              translate to screen
             "
-            rootPoint := p + (device translatePoint:0@0 fromView:self toView:rootView).
+            rootPoint := p + (self graphicsDevice translatePoint:0@0 fromView:self toView:rootView).
 
             "search view the drop is in"
             viewId := rootView id.
             [viewId notNil] whileTrue:[
-                destinationId := device viewIdFromPoint:rootPoint in:viewId.
+                destinationId := self graphicsDevice viewIdFromPoint:rootPoint in:viewId.
                 lastViewId := viewId.
                 viewId := destinationId
             ].
-            destinationView := device viewFromId:lastViewId.
+            destinationView := self graphicsDevice viewFromId:lastViewId.
             destinationId := lastViewId.
             inMySelf := (destinationView == self).
             rootMotion := false
@@ -960,7 +969,7 @@
             "simple move"
             self move:movedObject by:moveDelta
         ] ifFalse:[
-            destinationPoint := device translatePoint:rootPoint        "/ use id here - could be alian view
+            destinationPoint := self graphicsDevice translatePoint:rootPoint        "/ use id here - could be alian view
                                                  from:(rootView id) 
                                                    to:destinationId.
             destinationView notNil ifTrue:[
@@ -991,24 +1000,22 @@
     |dragger offs p d scale oldTrans|
 
     rootMotion ifTrue:[
+        |currentTransformation|
         p := movedObject origin + moveDelta.
         dragger := rootView.
         "
          get device coordinates
         "
-"/ 'logical ' print. p printNL.
+        currentTransformation := gc transformation.
         transformation notNil ifTrue:[
             scale := transformation scale.
             p := transformation applyTo:p.
-"/ 'device ' print. p printNL.
         ].
         "
          translate to screen
         "
-        offs := device translatePoint:0@0 fromView:self toView:rootView.
-"/ 'offs' print. offs printNL.
+        offs := self graphicsDevice translatePoint:0@0 fromView:self toView:rootView.
         p := p + offs.
-"/ 'screen ' print. p printNL.
         "
          p is where we want it ...
          have to adust slightly, since showDragging shows the object
@@ -1189,10 +1196,10 @@
 
     shown ifTrue:[
         vis := aRectangle.
-        clipRect notNil ifTrue:[
-            vis := vis intersect:clipRect
+        oldClip := self clippingBoundsOrNil.
+        oldClip notNil ifTrue:[
+            vis := vis intersect:oldClip
         ].
-        oldClip := clipRect.
         self clippingRectangle:vis.
 
         self redrawObjectsAbove:anObject intersecting:vis.
@@ -1212,10 +1219,10 @@
 
     shown ifTrue:[
         vis := aRectangle.
-        clipRect notNil ifTrue:[
-            vis := vis intersect:clipRect
+        oldClip := self clippingBoundsOrNil.
+        oldClip notNil ifTrue:[
+            vis := vis intersect:oldClip
         ].
-        oldClip := clipRect.
         self clippingRectangle:vis.
 
         self redrawObjectsAbove:anObject intersectingVisible:vis.
@@ -1257,10 +1264,10 @@
             visRect := visRect origin truncated
                        corner:(visRect corner + (1@1)) truncated.
 "/        ].
-        clipRect notNil ifTrue:[
-            visRect := visRect intersect:clipRect
+        oldClip := self clippingBoundsOrNil.
+        oldClip notNil ifTrue:[
+            visRect := visRect intersect:oldClip
         ].
-        oldClip := clipRect.
         self clippingRectangle:visRect.
 
         self clearRectangle:visRect.
@@ -1280,18 +1287,18 @@
 
     shown ifTrue:[
         vis := visRect.
-        clipRect notNil ifTrue:[
-            vis := vis intersect:clipRect
+        oldClip := self clippingBoundsOrNil.
+        oldClip notNil ifTrue:[
+            vis := vis intersect:oldClip
         ].
 
-        transformation notNil ifTrue:[
-"/            transformation scale ~~ 1 ifTrue:[
+        gc transformation notNil ifTrue:[
+"/            gc transformation scale ~~ 1 ifTrue:[
                 vis := vis origin truncated
                            corner:(vis corner + (1@1)) truncated.
 "/            ]
         ].
 
-        oldClip := clipRect.
         self clippingRectangle:vis.
 
         "/ no clear background; already done in redrawX:y:width:height:
@@ -1327,11 +1334,14 @@
     |vFrame|
 
     (aGC == self) ifTrue:[
+        |currentTransformation|
+
         shown ifFalse:[^ self].
         vFrame := Rectangle left:0 top:0 width:width height:height.
 
-        transformation notNil ifTrue:[
-            vFrame := transformation applyInverseTo:vFrame.
+        currentTransformation := gc transformation.
+        currentTransformation notNil ifTrue:[
+            vFrame := currentTransformation applyInverseTo:vFrame.
         ].
         self redrawObjectsIntersecting:vFrame
     ] ifFalse:[
@@ -1414,7 +1424,7 @@
 buttonMotion:buttonState x:buttX y:buttY
     "user moved mouse while button pressed"
 
-    |xpos ypos movePoint limitW limitH minDeltaForMotion|
+    |xpos ypos movePoint limitW limitH minDeltaForMotion currentTransformation|
 
     "is it the select or 1-button ?"
     buttonState == 0 ifTrue:[^ self].
@@ -1428,9 +1438,10 @@
         rootMotion ifFalse:[
             limitW := width.
             limitH := height.
-            transformation notNil ifTrue:[
-                limitW := transformation applyInverseToX:width.
-                limitH := transformation applyInverseToY:height.
+            currentTransformation := gc transformation.
+            currentTransformation notNil ifTrue:[
+                limitW := currentTransformation applyInverseToX:width.
+                limitH := currentTransformation applyInverseToY:height.
             ].
 
             (xpos < 0) ifTrue:[                    
@@ -1456,8 +1467,9 @@
                 ] ifFalse:[
                     minDeltaForMotion := self class mouseMotionDeltaForMove
                 ].
-                transformation notNil ifTrue:[
-                    minDeltaForMotion := transformation applyInverseToX:minDeltaForMotion.
+                currentTransformation := gc transformation.
+                currentTransformation notNil ifTrue:[
+                    minDeltaForMotion := currentTransformation applyInverseToX:minDeltaForMotion.
                 ].
                 ((xpos - (lastButt x)) abs < minDeltaForMotion
                 and:[ (ypos - (lastButt y)) abs < minDeltaForMotion]) ifTrue:[
@@ -1605,7 +1617,7 @@
 
     |mmH mmV params showDocumentBoundary gridW gridH 
      bigStepH bigStepV littleStepH littleStepV hires 
-     devPixmap colorMap fg bg|
+     devPixmap colorMap fg bg currentTransformation|
 
     mmH := self horizontalPixelPerMillimeter.
     mmV := self verticalPixelPerMillimeter.
@@ -1618,8 +1630,8 @@
     littleStepH := params at:3.
     littleStepV := params at:4.
     showDocumentBoundary := params at:7.
-    fg := Black.
-    bg := White.
+    fg := self blackColor.
+    bg := self whiteColor.
     params size >= 8 ifTrue:[
         bg := params at:8.
         params size >= 9 ifTrue:[
@@ -1627,16 +1639,17 @@
         ].
     ].
 
-    transformation notNil ifTrue:[
-        mmH := mmH * transformation scale x.
-        mmV := mmV * transformation scale y.
-        bigStepH := bigStepH * transformation scale x.
-        bigStepV := bigStepV * transformation scale y.
+    currentTransformation := gc transformation.
+    currentTransformation notNil ifTrue:[
+        mmH := mmH * currentTransformation scale x.
+        mmV := mmV * currentTransformation scale y.
+        bigStepH := bigStepH * currentTransformation scale x.
+        bigStepV := bigStepV * currentTransformation scale y.
         littleStepH notNil ifTrue:[
-            littleStepH := littleStepH * transformation scale x.
+            littleStepH := littleStepH * currentTransformation scale x.
         ].
         littleStepV notNil ifTrue:[
-            littleStepV := littleStepV * transformation scale y.
+            littleStepV := littleStepV * currentTransformation scale y.
         ].
     ].
 
@@ -1748,10 +1761,10 @@
             gridPixmap displayLineFromX:0 y:gridH-1 toX:gridW-1 y:gridH-1.
         ].
 
-        device platformName = 'WIN32' ifTrue:[
+        self graphicsDevice platformName = 'WIN32' ifTrue:[
             "/ kludge - needs a deep form
             colorMap := gridPixmap colorMap.
-            devPixmap := Form width:gridW height:gridH depth:device depth onDevice:device.
+            devPixmap := Form width:gridW height:gridH depth:self graphicsDevice depth onDevice:self graphicsDevice.
             devPixmap notNil ifTrue:[
                 devPixmap paint:(colorMap at:1).
                 devPixmap fillRectangleX:0 y:0 width:gridW height:gridH.
@@ -1792,7 +1805,7 @@
      if littleStepH/V are nil, only bigSteps are drawn.
     "
 
-    |mmH mmV bigStepH bigStepV littleStepH littleStepV arr|
+    |mmH mmV bigStepH bigStepV littleStepH littleStepV arr currentTransformation|
 
     "example: 12grid & 12snapIn"
 "/    ^ #(12 12 nil nil 12 12 false).
@@ -1805,6 +1818,7 @@
 
     mmH := self horizontalPixelPerMillimeter.
     mmV := self verticalPixelPerMillimeter.
+    currentTransformation := gc transformation.
 
     "
      metric grid: small steps every millimeter, big step every
@@ -1815,8 +1829,8 @@
         "dots every mm; lines every cm"
         bigStepH := mmH * 10.0.
         bigStepV := mmV * 10.0.
-        (transformation notNil
-        and:[transformation scale <= 0.5]) ifFalse:[
+        (currentTransformation notNil
+        and:[currentTransformation scale <= 0.5]) ifFalse:[
             littleStepH := mmH.
             littleStepV := mmV
         ]
@@ -1830,9 +1844,9 @@
         "dots every eights inch; lines every half inch"
         bigStepH := mmH * (25.4 / 2).
         bigStepV := mmV * (25.4 / 2).
-        (transformation notNil
-        and:[transformation scale <= 0.5]) ifTrue:[
-            transformation scale > 0.2 ifTrue:[
+        (currentTransformation notNil
+        and:[currentTransformation scale <= 0.5]) ifTrue:[
+            currentTransformation scale > 0.2 ifTrue:[
                 littleStepH := mmH * (25.4 / 4).
                 littleStepV := mmV * (25.4 / 4)
             ]
@@ -1850,8 +1864,8 @@
     arr at:5 put:littleStepH.
     arr at:6 put:littleStepV.
     arr at:7 put:false.
-    arr at:8 put:White.
-    arr at:9 put:Black.
+    arr at:8 put:self whiteColor.
+    arr at:9 put:self blackColor.
 
     ^ arr
 !
@@ -1873,7 +1887,7 @@
     gridPixmap := nil.
     shown ifTrue:[
         params := self gridParameters.
-        bg := White.
+        bg := self whiteColor.
         params size >= 8 ifTrue:[
             bg := params at:8.
         ].
@@ -1909,7 +1923,7 @@
 initialize
     super initialize.
 
-    viewBackground := White.
+    viewBackground := self whiteColor.
 
     bitGravity := #NorthWest.
     contents := OrderedCollection new.
@@ -2123,7 +2137,7 @@
     intersects := oldFrame intersects:newFrame.
     intersects ifFalse:[
         self hasSolidBackground ifTrue:[
-            transformation isNil ifTrue:[
+            gc transformation isNil ifTrue:[
                 (objectsIntersectingOldFrame size == 1) ifTrue:[
                     (objectsIntersectingNewFrame size == 1) ifTrue:[
                         clip := self clippingRectangleOrNil.
@@ -2329,11 +2343,12 @@
      We compensate for any scaling here, to get a constant physical
      hitDelta (i.e. the value returned here is inverse scaled)."
 
-    |delta|
+    |delta currentTransformation|
 
     delta := self class hitDelta.
-    transformation notNil ifTrue:[
-	delta := delta / transformation scale x
+    currentTransformation := gc transformation.
+    currentTransformation notNil ifTrue:[
+        delta := delta / currentTransformation scale x
     ].
     ^ delta
 !
@@ -2766,9 +2781,9 @@
      Redefined to scroll by inches or centimeters."
 
     scaleMetric == #inch ifTrue:[
-	^ (device horizontalPixelPerInch * (1/2)) asInteger
+        ^ (self graphicsDevice horizontalPixelPerInch * (1/2)) asInteger
     ].
-    ^ (device horizontalPixelPerMillimeter * 20) asInteger
+    ^ (self graphicsDevice horizontalPixelPerMillimeter * 20) asInteger
 !
 
 verticalScrollStep
@@ -2776,9 +2791,9 @@
      Redefined to scroll by inches or centimeters."
 
     scaleMetric == #inch ifTrue:[
-	^ (device verticalPixelPerInch * (1/2)) asInteger
+        ^ (self graphicsDevice verticalPixelPerInch * (1/2)) asInteger
     ].
-    ^ (device verticalPixelPerMillimeter * 20) asInteger
+    ^ (self graphicsDevice verticalPixelPerMillimeter * 20) asInteger
 ! !
 
 !ObjectView methodsFor:'selection & handles'!
@@ -2872,11 +2887,12 @@
      the same size regardless of scaling, inverse-scale from
      what the default is."
 
-    |hs|
+    |hs currentTransformation|
 
     hs := self class handleSize.
-    transformation notNil ifTrue:[
-        ^ transformation applyInverseScaleX:hs
+    currentTransformation := gc transformation.
+    currentTransformation notNil ifTrue:[
+        ^ currentTransformation applyInverseScaleX:hs
     ].
     ^ hs
 !
@@ -3452,11 +3468,11 @@
     ].
 
     (newScale = 1) ifTrue:[
-        transformation := nil
+        gc transformation:nil
     ] ifFalse:[
-        transformation := WindowingTransformation 
-                                scale:newScale 
-                                translation:(currentTranslation / currentScale x * newScale x ) rounded.
+        gc transformation:(WindowingTransformation 
+                            scale:newScale 
+                            translation:(currentTranslation / currentScale x * newScale x ) rounded).
     ].
     self contentsChanged.
     self setInnerClip.
@@ -3479,12 +3495,15 @@
 zoomIn:factor
     "zoom in by multiplying the zoom factor by the argument"
 
-    transformation isNil ifTrue:[
-        transformation := WindowingTransformation scale:1 translation:0
+    |currentTransformation|
+
+    currentTransformation := gc transformation.
+    currentTransformation isNil ifTrue:[
+        currentTransformation := WindowingTransformation scale:1 translation:0
     ].
-    transformation := WindowingTransformation 
-                        scale:(transformation scale * factor)
-                        translation:(transformation translation * factor) rounded.
+    gc transformation:(WindowingTransformation 
+                        scale:(currentTransformation scale * factor)
+                        translation:(currentTransformation translation * factor) rounded).
     self contentsChanged.
     self setInnerClip.
     self invalidate.
@@ -3513,10 +3532,10 @@
 !ObjectView class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libwidg/ObjectView.st,v 1.137 2013-07-13 20:33:12 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libwidg/ObjectView.st,v 1.139 2014-02-18 16:21:26 stefan Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libwidg/ObjectView.st,v 1.137 2013-07-13 20:33:12 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libwidg/ObjectView.st,v 1.139 2014-02-18 16:21:26 stefan Exp $'
 ! !
 
--- a/OptionBox.st	Wed Feb 12 22:17:26 2014 +0000
+++ b/OptionBox.st	Sun Feb 23 20:18:07 2014 +0000
@@ -569,7 +569,7 @@
 
     verticalPanel := VerticalPanelView in:self.
     vPanelLayout := LayoutFrame origin:(mm @ mm) corner:(1.0@1.0).
-    vPanelLayout bottomOffset:(font height + (mm * 5)) negated.
+    vPanelLayout bottomOffset:(gc font height + (mm * 5)) negated.
     vPanelLayout rightOffset:mm negated.
     verticalPanel geometryLayout:vPanelLayout.
     verticalPanel horizontalLayout:#fit.
@@ -599,7 +599,7 @@
 "/    ].
     buttonPanel 
         bottomInset:0 "mm";
-        topInset:(font height + (mm * 4)) negated.
+        topInset:(gc font height + (mm * 4)) negated.
     buttonPanel 
         borderWidth:0; 
         horizontalLayout:#fitSpace.
@@ -677,10 +677,10 @@
 !OptionBox class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libwidg/OptionBox.st,v 1.75 2013-01-17 10:42:40 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libwidg/OptionBox.st,v 1.76 2014-02-18 15:02:08 stefan Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libwidg/OptionBox.st,v 1.75 2013-01-17 10:42:40 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libwidg/OptionBox.st,v 1.76 2014-02-18 15:02:08 stefan Exp $'
 ! !
 
--- a/PopUpList.st	Wed Feb 12 22:17:26 2014 +0000
+++ b/PopUpList.st	Sun Feb 23 20:18:07 2014 +0000
@@ -805,8 +805,8 @@
     ].
 
     showHandle ifTrue:[
-        mmH := device horizontalPixelPerMillimeter.
-        mmV := device verticalPixelPerMillimeter.
+        mmH := self graphicsDevice horizontalPixelPerMillimeter.
+        mmV := self graphicsDevice verticalPixelPerMillimeter.
         mW := (mmH * 2.5) rounded.
         mH := (mmV * 1.5) rounded.
 
@@ -863,7 +863,7 @@
 
         theMenu isView ifTrue:[
             "/ oldStyle - theMenu is a PopUpMenu / MenuPanel
-            theMenu font:font.
+            theMenu font:gc font.
 
             "
              adjust the menus width to my current width
@@ -873,7 +873,7 @@
             "
              the popupMenu wants Display coordinates in its showAt: method
             "
-            org := device translatePoint:0@0 fromView:self toView:nil.
+            org := self graphicsDevice translatePoint:0@0 fromView:self toView:nil.
 
             theMenu showAt:org "resizing:false"
         ] ifFalse:[
@@ -944,8 +944,8 @@
     index := 1.
     menu do:[:el | el value:#select:. el argument:index. index := index + 1. ].
     menu receiver:self.
-    menu font:font.
-    menu preferredWidth:(self width).
+    menu font:gc font.
+    menu preferredWidth:self width.
 
 "/ end of change
 
@@ -1008,7 +1008,7 @@
 rawLabelSizeOf:aLogo
     "compute the extent needed to hold the label plus the mark"
 
-    |ext mmH mmV longest longestWidth labels|
+    |ext mmH mmV longest longestWidth labels currentDeviceFont|
 
     ext := super rawLabelSizeOf:aLogo.
 
@@ -1017,19 +1017,19 @@
     and:[adjust ~~ #center]]) ifTrue:[
         "compute length of longest menu entry"
 
-        font := font onDevice:device.
+        currentDeviceFont := gc createFontOnDevice.
         longest := logo.
         logo isNil ifTrue:[
             longestWidth := 0
         ] ifFalse:[
-            longestWidth := font widthOf:logo.
+            longestWidth := currentDeviceFont widthOf:logo.
         ].
         labels := menu value labels.
         labels notNil ifTrue:[
             labels do:[:entry |
                 |this|
 
-                this := font widthOf:entry printString.
+                this := currentDeviceFont widthOf:entry printString.
                 this > longestWidth ifTrue:[
                     longest := entry.
                     longestWidth := this
@@ -1040,8 +1040,8 @@
     ].
 
     showHandle ifTrue:[
-        mmH := device horizontalPixelPerMillimeter.
-        mmV := device verticalPixelPerMillimeter.
+        mmH := self device horizontalPixelPerMillimeter.
+        mmV := self device verticalPixelPerMillimeter.
         ^ (ext x + hSpace + (mmH * 2.5) rounded + hSpace)
           @
           (ext y max: (mmV * 2) rounded)
@@ -1145,9 +1145,10 @@
 !PopUpList class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libwidg/PopUpList.st,v 1.82 2009-10-21 14:27:54 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libwidg/PopUpList.st,v 1.83 2014-02-18 15:03:42 stefan Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libwidg/PopUpList.st,v 1.82 2009-10-21 14:27:54 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libwidg/PopUpList.st,v 1.83 2014-02-18 15:03:42 stefan Exp $'
 ! !
+
--- a/PopUpMenu.st	Wed Feb 12 22:17:26 2014 +0000
+++ b/PopUpMenu.st	Sun Feb 23 20:18:07 2014 +0000
@@ -955,7 +955,7 @@
     ].
 
     aPoint isNil ifTrue:[
-        self showAt:(device pointerPosition) resizing:true
+        self showAt:(self graphicsDevice pointerPosition) resizing:true
     ] ifFalse:[
         self showAt:aPoint.
     ].
@@ -1384,7 +1384,7 @@
         and:[y < (height-margin)]]]) ifTrue:[
             "/ inside my menuView
             hideOnRelease := true.
-            p := device 
+            p := self graphicsDevice 
                     translatePoint:(x @ y)
                     fromView:self
                     toView:menuView.
@@ -1396,7 +1396,7 @@
 
     "outside of myself"
     (self isOpenedAsSubmenu) ifTrue:[
-        p := device 
+        p := self graphicsDevice 
                 translatePoint:(x @ y)
                 fromView:self
                 toView:(menuView superMenu).
@@ -1590,7 +1590,7 @@
 
 regainControl
 |g|
-    ((g := device activePointerGrab) ~~ self) ifTrue:[
+    ((g := self graphicsDevice activePointerGrab) ~~ self) ifTrue:[
         self forceUngrabPointer.
         self forceUngrabKeyboard.
         shown ifTrue:[
@@ -1686,10 +1686,10 @@
 !PopUpMenu class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libwidg/PopUpMenu.st,v 1.114 2013-08-28 14:50:58 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libwidg/PopUpMenu.st,v 1.115 2014-02-18 15:04:30 stefan Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libwidg/PopUpMenu.st,v 1.114 2013-08-28 14:50:58 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libwidg/PopUpMenu.st,v 1.115 2014-02-18 15:04:30 stefan Exp $'
 ! !
 
--- a/RadioButton.st	Wed Feb 12 22:17:26 2014 +0000
+++ b/RadioButton.st	Sun Feb 23 20:18:07 2014 +0000
@@ -847,7 +847,7 @@
     "drawing of the radio image is done here."
 
     |x y img clrTop clrBot imgTop imgBot imgInside imgH imgOn threeD lvl
-     isActive isEntered isEnabled imgTopHeight|
+     isActive isEntered isEnabled imgTopHeight graphicsDevice|
 
     buttonStyle isNil ifTrue:[
         ^ super drawToggleImage
@@ -910,12 +910,13 @@
     ].
 
     imgTopHeight := 0.
+    graphicsDevice := self graphicsDevice.
 
-    imgTop notNil ifTrue:[imgTop := imgTop onDevice:device. imgTopHeight := imgTop height].
-    imgBot notNil ifTrue:[imgBot := imgBot onDevice:device].
-    imgInside notNil ifTrue:[imgInside := imgInside onDevice:device].
-    imgH notNil ifTrue:[imgH := imgH onDevice:device].
-    imgOn notNil ifTrue:[imgOn := imgOn onDevice:device].
+    imgTop notNil ifTrue:[imgTop := imgTop onDevice:graphicsDevice. imgTopHeight := imgTop height].
+    imgBot notNil ifTrue:[imgBot := imgBot onDevice:graphicsDevice].
+    imgInside notNil ifTrue:[imgInside := imgInside onDevice:graphicsDevice].
+    imgH notNil ifTrue:[imgH := imgH onDevice:graphicsDevice].
+    imgOn notNil ifTrue:[imgOn := imgOn onDevice:graphicsDevice].
 
     x := hSpace + margin.
     y := (height - imgTopHeight) // 2.
@@ -1024,23 +1025,26 @@
         activeBgColor := bgColor. 
         activeFgColor := fgColor.
         buttonStyle == #image ifTrue:[
+            |graphicsDevice|
+
+            graphicsDevice := self graphicsDevice.
             buttonOnImage := self class roundOnForm.
-            buttonOnImage notNil ifTrue:[ buttonOnImage := buttonOnImage onDevice:device].
+            buttonOnImage notNil ifTrue:[ buttonOnImage := buttonOnImage onDevice:graphicsDevice].
             buttonOffImage := self class roundOffForm.
-            buttonOffImage notNil ifTrue:[ buttonOffImage := buttonOffImage onDevice:device].
+            buttonOffImage notNil ifTrue:[ buttonOffImage := buttonOffImage onDevice:graphicsDevice].
 
             onImage := self class activeForm.
-            onImage notNil ifTrue:[ onImage := onImage onDevice:device].
+            onImage notNil ifTrue:[ onImage := onImage onDevice:graphicsDevice].
             offImage := self class passiveForm.
-            offImage notNil ifTrue:[ offImage := offImage onDevice:device].
+            offImage notNil ifTrue:[ offImage := offImage onDevice:graphicsDevice].
             disabledOnImage := self class disabledActiveForm.
-            disabledOnImage notNil ifTrue:[ disabledOnImage := disabledOnImage onDevice:device].
+            disabledOnImage notNil ifTrue:[ disabledOnImage := disabledOnImage onDevice:graphicsDevice].
             disabledOffImage := self class disabledPassiveForm.
-            disabledOffImage notNil ifTrue:[ disabledOffImage := disabledOffImage onDevice:device].
+            disabledOffImage notNil ifTrue:[ disabledOffImage := disabledOffImage onDevice:graphicsDevice].
             enteredOnImage := self class enteredActiveForm.
-            enteredOnImage notNil ifTrue:[ enteredOnImage := enteredOnImage onDevice:device].
+            enteredOnImage notNil ifTrue:[ enteredOnImage := enteredOnImage onDevice:graphicsDevice].
             enteredOffImage := self class enteredPassiveForm.
-            enteredOffImage notNil ifTrue:[ enteredOffImage := enteredOffImage onDevice:device].
+            enteredOffImage notNil ifTrue:[ enteredOffImage := enteredOffImage onDevice:graphicsDevice].
         ]
     ] ifFalse:[
         buttonStyle == #round2D ifTrue:[
@@ -1103,10 +1107,10 @@
 !RadioButton class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libwidg/RadioButton.st,v 1.53 2013-09-04 21:45:24 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libwidg/RadioButton.st,v 1.54 2014-02-18 15:08:31 stefan Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libwidg/RadioButton.st,v 1.53 2013-09-04 21:45:24 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libwidg/RadioButton.st,v 1.54 2014-02-18 15:08:31 stefan Exp $'
 ! !
 
--- a/ScrollBar.st	Wed Feb 12 22:17:26 2014 +0000
+++ b/ScrollBar.st	Sun Feb 23 20:18:07 2014 +0000
@@ -822,7 +822,7 @@
     style := styleSheet name.
     ((style = #iris) and:[Screen current hasGrayscales]) ifTrue:[
         "have to change some of Buttons defaults"
-        clr := (Color gray:25) onDevice:device.
+        clr := (Color gray:25) onDevice:self graphicsDevice.
         button1 passiveLevel:2.
         button2 passiveLevel:2.
         button1 foregroundColor:clr.
@@ -847,9 +847,9 @@
         button2 backgroundColor:clr.
         button1 activeBackgroundColor:clr.
         button2 activeBackgroundColor:clr.
-        device hasGrayscales ifFalse:[
-            button1 activeForegroundColor:Black.
-            button2 activeForegroundColor:Black.
+        self graphicsDevice hasGrayscales ifFalse:[
+            button1 activeForegroundColor:self blackColor.
+            button2 activeForegroundColor:self blackColor.
         ]
     ]
 
@@ -913,7 +913,7 @@
             ^ self
         ].
         (buttonLayout == #bottom) ifTrue:[
-            device supportsViewGravity ifTrue:[
+            self graphicsDevice supportsViewGravity ifTrue:[
                 button1 viewGravity:#South. 
                 button2 viewGravity:#South. 
                 thumb viewGravity:#North.
@@ -969,21 +969,21 @@
 
 updateNativeWidget
     self isNativeWidget ifTrue:[
-        drawableId notNil ifTrue:[
-            device 
+        self drawableId notNil ifTrue:[
+            self graphicsDevice
                 setScrollRange:0 to:100 
                 redraw:false 
-                in:drawableId.
+                in:self drawableId.
 
-            device 
+            self graphicsDevice
                 setScrollPosition:thumb thumbOrigin rounded 
                 redraw:false 
-                in:drawableId.
+                in:self drawableId.
 
-            device 
+            self graphicsDevice
                 setScrollBarPageSize:thumb thumbHeight rounded 
                 redraw:true 
-                in:drawableId.
+                in:self drawableId.
         ]
     ].
 ! !
@@ -1030,7 +1030,7 @@
     button2 enabled:e2. "/ e2 ifTrue:[button2 enable] ifFalse:[button2 disable].
 
     self isNativeWidget ifTrue:[
-        drawableId notNil ifTrue:[
+        self drawableId notNil ifTrue:[
             e1 ifTrue:[
                 e2 ifTrue:[
                     "/ both enabled
@@ -1045,7 +1045,7 @@
                     ena := #DISABLE_BOTH.
                 ]
             ].
-            device enableScrollBar:ena in:drawableId.
+            self graphicsDevice enableScrollBar:ena in:self drawableId.
         ].
     ].
 
@@ -1130,11 +1130,11 @@
     style := styleSheet name.
 
     orientation == #horizontal ifTrue:[
-        form1 := ArrowButton leftArrowButtonForm:style on:device.
-        form2 := ArrowButton rightArrowButtonForm:style on:device.
+        form1 := ArrowButton leftArrowButtonForm:style on:self graphicsDevice.
+        form2 := ArrowButton rightArrowButtonForm:style on:self graphicsDevice.
     ] ifFalse:[
-        form1 := ArrowButton upArrowButtonForm:style on:device.
-        form2 := ArrowButton downArrowButtonForm:style on:device.
+        form1 := ArrowButton upArrowButtonForm:style on:self graphicsDevice.
+        form2 := ArrowButton downArrowButtonForm:style on:self graphicsDevice.
     ].
     form1 isNil ifTrue:[
         height1 := width1 := 16.
@@ -1179,10 +1179,10 @@
 !ScrollBar class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libwidg/ScrollBar.st,v 1.90 2013-06-25 23:04:17 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libwidg/ScrollBar.st,v 1.92 2014-02-18 16:47:16 stefan Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libwidg/ScrollBar.st,v 1.90 2013-06-25 23:04:17 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libwidg/ScrollBar.st,v 1.92 2014-02-18 16:47:16 stefan Exp $'
 ! !
 
--- a/Scroller.st	Wed Feb 12 22:17:26 2014 +0000
+++ b/Scroller.st	Sun Feb 23 20:18:07 2014 +0000
@@ -410,8 +410,8 @@
 
     StyleSheet fileReadFailed ifTrue:[
         DefaultViewBackground := Grey.
-        DefaultThumbColor := White.
-        DefaultThumbFrameColor := Black.
+        DefaultThumbColor := Color white.
+        DefaultThumbFrameColor := Color black.
         DefaultInset := 1.
     ].
 
@@ -570,7 +570,7 @@
             ] ifFalse:[
                 nBg := DefaultViewBackground
             ].
-            nBg := nBg onDevice:device.
+            nBg := nBg onDevice:self graphicsDevice.
             nBg ~~ viewBackground ifTrue:[
                 self viewBackground:nBg.
                 self invalidate.
@@ -813,7 +813,7 @@
                 ] ifFalse:[
                     nBg := DefaultViewBackground
                 ].
-                nBg := nBg onDevice:device.
+                nBg := nBg onDevice:self graphicsDevice.
                 nBg ~~ viewBackground ifTrue:[
                     self viewBackground:nBg.
                 ]
@@ -990,15 +990,16 @@
 
     <resource: #style (#name)>
 
-    |avgColor|
-
-    thumbColor := aColor onDevice:device.
+    |avgColor graphicsDevice|
+
+    graphicsDevice := self graphicsDevice.
+    thumbColor := aColor onDevice:self graphicsDevice.
     (styleSheet name ~~ #normal) ifTrue:[
-	avgColor := aColor averageColorIn:(0@0 corner:7@7).
-	thumbShadowColor := avgColor darkened onDevice:device.
-	thumbLightColor := avgColor lightened onDevice:device.
-	thumbHalfShadowColor := thumbShadowColor darkened onDevice:device.
-	thumbHalfLightColor := thumbLightColor lightened onDevice:device.
+        avgColor := aColor averageColorIn:(0@0 corner:7@7).
+        thumbShadowColor := avgColor darkened onDevice:graphicsDevice.
+        thumbLightColor := avgColor lightened onDevice:graphicsDevice.
+        thumbHalfShadowColor := thumbShadowColor darkened onDevice:graphicsDevice.
+        thumbHalfLightColor := thumbLightColor lightened onDevice:graphicsDevice.
     ].
     self invalidate
 
@@ -1104,12 +1105,12 @@
 drawHandleFormAtX:x y:y
     "styles with a handle in the middle (NeXT) use this"
 
-    thumbShadowColor := thumbShadowColor onDevice:device.
+    thumbShadowColor := thumbShadowColor onDevice:self graphicsDevice.
 
     self paint:thumbShadowColor.
     self displayForm:shadowForm x:x y:y.
     lightForm notNil ifTrue:[
-        thumbLightColor := thumbLightColor onDevice:device.
+        thumbLightColor := thumbLightColor onDevice:self graphicsDevice.
         self paint:thumbLightColor.
         self displayForm:lightForm x:x y:y.
     ].
@@ -1166,7 +1167,7 @@
         xL := l + lvl - 1 + DefaultTallyInset.
         xR := l + w - lvl "+ 1" - DefaultTallyInset.
 
-        dist := DefaultTallyDistance ? device verticalPixelPerMillimeter rounded.
+        dist := DefaultTallyDistance ? self graphicsDevice verticalPixelPerMillimeter rounded.
 
         tallyMarks even ifTrue:[
             yTop := y - (dist // 2).   
@@ -1192,7 +1193,7 @@
         yB := t + h - lvl "+ 1" - DefaultTallyInset.
 
 
-        dist := DefaultTallyDistance ? device horizontalPixelPerMillimeter rounded.
+        dist := DefaultTallyDistance ? self graphicsDevice horizontalPixelPerMillimeter rounded.
 
         tallyMarks even ifTrue:[
             xLeft := x - (dist // 2).   
@@ -1818,9 +1819,9 @@
      redraw thumb if enteredColor ~~ thumbColor"
 
     scrolling ifTrue:[
-	(state bitAnd:(device anyButtonMotionMask)) == 0 ifTrue: [
-	    self buttonRelease:1 x:x y:y
-	].
+        (state bitAnd:(self graphicsDevice anyButtonMotionMask)) == 0 ifTrue: [
+            self buttonRelease:1 x:x y:y
+        ].
     ].
     super pointerEnter:state x:x y:y
 
@@ -1831,12 +1832,12 @@
     "mouse-button left view
      redraw thumb if enteredColor ~~ thumbColor"
 
-    (entered and:[(state bitAnd:(device anyButtonMotionMask)) == 0]) ifTrue: [
-	entered := false.
-	thumbEnteredColor ~= thumbColor ifTrue:[
-	    self invalidate.
-	    "/ self drawThumb
-	]
+    (entered and:[(state bitAnd:(self graphicsDevice anyButtonMotionMask)) == 0]) ifTrue: [
+        entered := false.
+        thumbEnteredColor ~= thumbColor ifTrue:[
+            self invalidate.
+            "/ self drawThumb
+        ]
     ].
 
     "Created: / 6.3.1996 / 17:31:16 / cg"
@@ -2123,16 +2124,19 @@
 fetchDeviceResources
     "fetch device colors, to avoid reallocation at redraw time"
 
+    |graphicsDevice|
+
     super fetchDeviceResources.
-
-    thumbShadowColor notNil ifTrue:[thumbShadowColor := thumbShadowColor onDevice:device].
-    thumbLightColor notNil ifTrue:[thumbLightColor := thumbLightColor onDevice:device].
-    thumbHalfShadowColor notNil ifTrue:[thumbHalfShadowColor := thumbHalfShadowColor onDevice:device].
-    thumbHalfLightColor notNil ifTrue:[thumbHalfLightColor := thumbHalfLightColor onDevice:device].
-
-    thumbEnteredColor notNil ifTrue:[thumbEnteredColor := thumbEnteredColor onDevice:device].
-    ghostColor notNil ifTrue:[ghostColor := ghostColor onDevice:device].
-    ghostFrameColor notNil ifTrue:[ghostFrameColor := ghostFrameColor onDevice:device].
+    graphicsDevice := self graphicsDevice.
+
+    thumbShadowColor notNil ifTrue:[thumbShadowColor := thumbShadowColor onDevice:graphicsDevice].
+    thumbLightColor notNil ifTrue:[thumbLightColor := thumbLightColor onDevice:graphicsDevice].
+    thumbHalfShadowColor notNil ifTrue:[thumbHalfShadowColor := thumbHalfShadowColor onDevice:graphicsDevice].
+    thumbHalfLightColor notNil ifTrue:[thumbHalfLightColor := thumbHalfLightColor onDevice:graphicsDevice].
+
+    thumbEnteredColor notNil ifTrue:[thumbEnteredColor := thumbEnteredColor onDevice:graphicsDevice].
+    ghostColor notNil ifTrue:[ghostColor := ghostColor onDevice:graphicsDevice].
+    ghostFrameColor notNil ifTrue:[ghostFrameColor := ghostFrameColor onDevice:graphicsDevice].
 
     "Modified: 13.1.1997 / 21:56:38 / cg"
 !
@@ -2151,18 +2155,19 @@
                        #'scroller.initialRepeatDelay'
                        #'scroller.repeatDelay')>
 
-    |nm|
+    |nm graphicsDevice|
 
     super initStyle.
+    graphicsDevice := self graphicsDevice.
 
     DefaultViewBackground notNil ifTrue:[
-        viewBackground := DefaultViewBackground onDevice:device.
+        viewBackground := DefaultViewBackground onDevice:graphicsDevice.
     ].
     DefaultShadowColor notNil ifTrue:[
-        shadowColor := DefaultShadowColor onDevice:device.
+        shadowColor := DefaultShadowColor onDevice:graphicsDevice.
     ].
     DefaultLightColor notNil ifTrue:[
-        lightColor := DefaultLightColor onDevice:device.
+        lightColor := DefaultLightColor onDevice:graphicsDevice.
     ].
 
     tallyMarks := DefaultTallyMarks.
@@ -2181,15 +2186,15 @@
     thumbEdgeStyle := DefaultEdgeStyle.
 
     DefaultGhostColor notNil ifTrue:[
-        ghostColor := DefaultGhostColor onDevice:device.
+        ghostColor := DefaultGhostColor onDevice:graphicsDevice.
     ].
     DefaultGhostFrameColor notNil ifTrue:[
-        ghostFrameColor := DefaultGhostFrameColor onDevice:device.
+        ghostFrameColor := DefaultGhostFrameColor onDevice:graphicsDevice.
     ].
     ghostLevel := DefaultGhostLevel.
 
     DefaultThumbFrameColor notNil ifTrue:[
-        thumbFrameColor := DefaultThumbFrameColor onDevice:device.
+        thumbFrameColor := DefaultThumbFrameColor onDevice:graphicsDevice.
     ].
     DefaultThumbShadowColor notNil ifTrue:[
         thumbShadowColor := DefaultThumbShadowColor
@@ -2214,54 +2219,54 @@
 
     nm := styleSheet name.
 
-    device hasGrayscales ifFalse:[
+    graphicsDevice hasGrayscales ifFalse:[
         thumbEdgeStyle notNil ifTrue:[
             thumbHalfShadowColor := Color darkGray.
-            thumbHalfLightColor := White
+            thumbHalfLightColor := self whiteColor
         ].
 
-        thumbShadowColor := Black.
+        thumbShadowColor := self blackColor.
 "/        thumbLightColor := White.
 
         nm = #motif ifTrue:[
             DefaultThumbColor isNil ifTrue:[
-                thumbColor := White .
+                thumbColor := self whiteColor.
             ].
         ]
     ].
 
     DefaultThumbColor notNil ifTrue:[
-        thumbColor := DefaultThumbColor onDevice:device
+        thumbColor := DefaultThumbColor onDevice:graphicsDevice
     ] ifFalse:[
-        thumbColor := White.
+        thumbColor := self whiteColor.
         nm ~= #normal ifTrue:[
-            device hasGrayscales ifFalse:[
+            graphicsDevice hasGrayscales ifFalse:[
                 thumbColor := Color grey
             ].
         ].
     ].
 
-    thumbColor := thumbColor onDevice:device.
+    thumbColor := thumbColor onDevice:graphicsDevice.
     thumbShadowColor notNil ifTrue:[
-        thumbShadowColor := thumbShadowColor onDevice:device.
+        thumbShadowColor := thumbShadowColor onDevice:graphicsDevice.
     ].
     thumbLightColor notNil ifTrue:[
-        thumbLightColor := thumbLightColor onDevice:device.
+        thumbLightColor := thumbLightColor onDevice:graphicsDevice.
     ].
     thumbHalfShadowColor notNil ifTrue:[
-        thumbHalfShadowColor := thumbHalfShadowColor onDevice:device.
+        thumbHalfShadowColor := thumbHalfShadowColor onDevice:graphicsDevice.
     ].
     thumbHalfLightColor notNil ifTrue:[
-        thumbHalfLightColor := thumbHalfLightColor onDevice:device.
+        thumbHalfLightColor := thumbHalfLightColor onDevice:graphicsDevice.
     ].
     thumbEdgeStyle notNil ifTrue:[
         thumbHalfShadowColor isNil ifTrue:[
-            thumbHalfShadowColor := thumbShadowColor lightened onDevice:device
+            thumbHalfShadowColor := thumbShadowColor lightened onDevice:graphicsDevice
         ]
     ].
 
     DefaultThumbEnteredColor notNil ifTrue:[
-        thumbEnteredColor := DefaultThumbEnteredColor onDevice:device.
+        thumbEnteredColor := DefaultThumbEnteredColor onDevice:graphicsDevice.
     ] ifFalse:[
         thumbEnteredColor := thumbColor.
     ].
@@ -2272,21 +2277,21 @@
     ].
 
     DefaultThumbImage notNil ifTrue:[
-        thumbImage := DefaultThumbImage onDevice:device.
+        thumbImage := DefaultThumbImage onDevice:graphicsDevice.
         fixThumbHeight := true.
     ].
 
     HandleImage notNil ifTrue:[
-        shadowForm := HandleImage onDevice:device.
+        shadowForm := HandleImage onDevice:graphicsDevice.
     ] ifFalse:[
         nm = #next ifTrue:[
-            shadowForm := self class handleShadowFormOn:device.
-            lightForm := self class handleLightFormOn:device
+            shadowForm := self class handleShadowFormOn:graphicsDevice.
+            lightForm := self class handleLightFormOn:graphicsDevice
         ] ifFalse:[
             shadowForm := lightForm := nil
         ].
     ].
-    drawableId notNil ifTrue:[
+    self drawableId notNil ifTrue:[
         self computeThumbFrame
     ].
 
@@ -2752,10 +2757,10 @@
 !Scroller class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libwidg/Scroller.st,v 1.202 2014-02-05 13:31:27 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libwidg/Scroller.st,v 1.205 2014-02-18 16:47:31 stefan Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libwidg/Scroller.st,v 1.202 2014-02-05 13:31:27 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libwidg/Scroller.st,v 1.205 2014-02-18 16:47:31 stefan Exp $'
 ! !
 
--- a/SelectionInListView.st	Wed Feb 12 22:17:26 2014 +0000
+++ b/SelectionInListView.st	Sun Feb 23 20:18:07 2014 +0000
@@ -1999,8 +1999,8 @@
         itemHeight := item heightOn:self.
     ].
 
-    (device depth == 1 or:[arrowLevel == 0]) ifTrue:[
-        form := self class rightArrowFormOn:device.
+    (self graphicsDevice depth == 1 or:[arrowLevel == 0]) ifTrue:[
+        form := self class rightArrowFormOn:self graphicsDevice.
         form notNil ifTrue:[
             y := y + ((itemHeight - form height) // 2).
             self foreground:(
@@ -2011,11 +2011,11 @@
         ]
     ] ifFalse:[
         smallArrow ifTrue:[
-            form := self class smallRightArrowLightFormOn:device.
-            form2 := self class smallRightArrowShadowFormOn:device.
+            form := self class smallRightArrowLightFormOn:self graphicsDevice.
+            form2 := self class smallRightArrowShadowFormOn:self graphicsDevice.
         ] ifFalse:[
-            form := self class rightArrowLightFormOn:device.
-            form2 := self class rightArrowShadowFormOn:device.
+            form := self class rightArrowLightFormOn:self graphicsDevice.
+            form2 := self class rightArrowShadowFormOn:self graphicsDevice.
         ].
         (form isNil or:[form2 isNil]) ifTrue:[
             "/ very bad conditions
@@ -2083,7 +2083,7 @@
 
             dObj := selectedVisualBlock value:self value:listLine.
             self paint:fg on:bg.
-            dObj displayOn:self x:(textStartLeft-viewOrigin x) y:y + font ascent opaque:true.
+            dObj displayOn:self x:(textStartLeft-viewOrigin x) y:y + gc font ascent opaque:true.
         ] ifFalse:[
             strikeOut ifTrue:[
                 self drawVisibleLine:visLineNr with:fgColor and:bgColor.
@@ -2757,16 +2757,19 @@
 fetchDeviceResources
     "fetch device colors, to avoid reallocation at redraw time"
 
+    |graphicsDevice|
+
     super fetchDeviceResources.
-
-    hilightFgColor notNil ifTrue:[hilightFgColor := hilightFgColor onDevice:device].
-    hilightBgColor notNil ifTrue:[hilightBgColor := hilightBgColor onDevice:device].
-
-    halfIntensityFgColor notNil ifTrue:[halfIntensityFgColor := halfIntensityFgColor onDevice:device].
-    hilightFrameColor    notNil ifTrue:[hilightFrameColor := hilightFrameColor onDevice:device].
-
-    hilightFgColorNoFocus notNil ifTrue:[hilightFgColorNoFocus := hilightFgColorNoFocus onDevice:device].
-    hilightBgColorNoFocus notNil ifTrue:[hilightBgColorNoFocus := hilightBgColorNoFocus onDevice:device].
+    graphicsDevice := self graphicsDevice.
+
+    hilightFgColor notNil ifTrue:[hilightFgColor := hilightFgColor onDevice:graphicsDevice].
+    hilightBgColor notNil ifTrue:[hilightBgColor := hilightBgColor onDevice:graphicsDevice].
+
+    halfIntensityFgColor notNil ifTrue:[halfIntensityFgColor := halfIntensityFgColor onDevice:graphicsDevice].
+    hilightFrameColor    notNil ifTrue:[hilightFrameColor := hilightFrameColor onDevice:graphicsDevice].
+
+    hilightFgColorNoFocus notNil ifTrue:[hilightFgColorNoFocus := hilightFgColorNoFocus onDevice:graphicsDevice].
+    hilightBgColorNoFocus notNil ifTrue:[hilightBgColorNoFocus := hilightBgColorNoFocus onDevice:graphicsDevice].
 !
 
 initCursor
@@ -2787,20 +2790,20 @@
     arrowLevel := 1.
     smallArrow := false.
 
-    device hasGrayscales ifTrue:[
+    self graphicsDevice hasGrayscales ifTrue:[
         "
          must get rid of these hard codings
         "
         (hilightStyle == #next) ifTrue:[
             hilightFgColor := fgColor.
-            hilightBgColor := White.
+            hilightBgColor := self whiteColor.
             hilightFrameColor := fgColor
         ] ifFalse:[
             (hilightStyle == #motif) ifTrue:[
-                fgColor := White.
+                fgColor := self whiteColor.
                 bgColor := Grey.
                 viewBackground := bgColor.
-                hilightFgColor := bgColor  "fgColor" "White".
+                hilightFgColor := bgColor  "fgColor" "self whiteColor".
                 hilightBgColor := fgColor "bgColor lightened" "darkened".
             ] ifFalse:[
                 (hilightStyle == #openwin) ifTrue:[
@@ -2859,7 +2862,7 @@
     #hack.
     "/ q&d temporary hack.
     "/ X11 fonts are currently so ugly... add more spacing.
-    device platformName = #X11 ifTrue:[
+    self graphicsDevice platformName = #X11 ifTrue:[
         lineSpacing := lineSpacing + 3.
     ].
     hilightFgColor isNil ifTrue:[
@@ -3380,7 +3383,7 @@
 
             dObj := visualBlock value:self value:listLine.
             self paint:fg on:bg.
-            dObj displayOn:self x:(textStartLeft - viewOrigin) x y:y + font ascent opaque:true.
+            dObj displayOn:self x:(textStartLeft - viewOrigin) x y:y + gc font ascent opaque:true.
             ^ self
         ].
 
@@ -3390,9 +3393,9 @@
                 fg := halfIntensityFgColor
             ].
             (self line:listLine hasAttribute:#bold) ifTrue:[
-                newFont := font asBold.
-                (font bold 
-                or:[id := (newFont onDevice:device) fontId.
+                newFont := gc font asBold.
+                (gc font bold 
+                or:[id := (newFont onDevice:gc device) fontId.
                     id isNil]) 
                 ifTrue:[
                     "
@@ -3413,7 +3416,7 @@
                     ]
                 ].
                 id notNil ifTrue:[
-                    oldFont := font.
+                    oldFont := gc font.
                     self basicFont:newFont.
                     self drawVisibleLine:visLineNr with:fg and:bg.
                     self basicFont:oldFont.
@@ -4137,10 +4140,10 @@
 !SelectionInListView class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libwidg/SelectionInListView.st,v 1.272 2014-01-14 15:31:46 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libwidg/SelectionInListView.st,v 1.273 2014-02-18 16:25:39 stefan Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libwidg/SelectionInListView.st,v 1.272 2014-01-14 15:31:46 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libwidg/SelectionInListView.st,v 1.273 2014-02-18 16:25:39 stefan Exp $'
 ! !
 
--- a/TextCollector.st	Wed Feb 12 22:17:26 2014 +0000
+++ b/TextCollector.st	Sun Feb 23 20:18:07 2014 +0000
@@ -684,7 +684,7 @@
     "to make a textCollector (somewhat) compatible with printer
      streams, support the lineLength query"
 
-    ^ width // (font width)
+    ^ width // (gc font width)
 
     "Modified: 11.1.1997 / 14:42:41 / cg"
 !
@@ -1125,11 +1125,11 @@
 !TextCollector class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libwidg/TextCollector.st,v 1.130 2013-09-16 08:54:58 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libwidg/TextCollector.st,v 1.131 2014-02-18 16:55:57 stefan Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libwidg/TextCollector.st,v 1.130 2013-09-16 08:54:58 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libwidg/TextCollector.st,v 1.131 2014-02-18 16:55:57 stefan Exp $'
 ! !
 
 
--- a/TextView.st	Wed Feb 12 22:17:26 2014 +0000
+++ b/TextView.st	Sun Feb 23 20:18:07 2014 +0000
@@ -1279,24 +1279,28 @@
     "mouse-move while button was pressed - handle selection changes"
 
     (clickLine isNil or:[clickPos isNil]) ifTrue:[
-	dragIsActive := false.
-	^ self
+        dragIsActive := false.
+        ^ self
     ].
 
     dragIsActive ifTrue:[
-	(clickPos dist:(x@y)) >= 5.0 ifTrue:[
-	    dragIsActive := false.
-
-	    self hasSelection ifTrue:[
-		dropSource startDragIn:self at:(x@y)
-	    ]
-	].
-	^ self
+        (clickPos dist:(x@y)) >= 5.0 ifTrue:[
+            dragIsActive := false.
+
+            self hasSelection ifTrue:[
+                dropSource startDragIn:self at:(x@y)
+            ]
+        ].
+        ^ self
     ].
 
     "is it the select or 1-button ?"
     buttonState == 0 ifTrue:[^ self].
-    self sensor leftButtonPressed ifFalse:[^ self].
+    self sensor leftButtonPressed ifFalse:[
+        "/ self setPrimarySelection.
+        "/ self selectionChanged.
+        ^ self
+    ].
 "/    (device buttonMotionMask:buttonState includesButton:#select) ifFalse:[
 "/        (device buttonMotionMask:buttonState includesButton:1) ifFalse:[
 "/            ^ self
@@ -1306,32 +1310,32 @@
     "if moved outside of view, start autoscroll"
 
     ((y < 0) and:[firstLineShown ~~ 0]) ifTrue:[
-	self compressMotionEvents:false.
-	self startAutoScrollUp:y negated.
-	^ self
+        self compressMotionEvents:false.
+        self startAutoScrollUp:y negated.
+        ^ self
     ].
     (y > height) ifTrue:[
-	self compressMotionEvents:false.
-	self startAutoScrollDown:(y - height).
-	^ self
+        self compressMotionEvents:false.
+        self startAutoScrollDown:(y - height).
+        ^ self
     ].
     ((x < 0) and:[viewOrigin x ~~ 0]) ifTrue:[
-	self compressMotionEvents:false.
-	self startAutoScrollLeft:x.
-	^ self
+        self compressMotionEvents:false.
+        self startAutoScrollLeft:x.
+        ^ self
     ].
     (x > width) ifTrue:[
-	self compressMotionEvents:false.
-	self startAutoScrollRight:(x - width).
-	^ self
+        self compressMotionEvents:false.
+        self startAutoScrollRight:(x - width).
+        ^ self
     ].
 
     "move inside - stop autoscroll if any"
     autoScrollBlock notNil ifTrue:[
-	self stopScrollSelect
+        self stopScrollSelect
     ].
 
-    self extendSelectionToX:x y:y.
+    self extendSelectionToX:x y:y setPrimarySelection:false.
 
     "Modified: / 08-08-2010 / 11:20:54 / cg"
 !
@@ -1408,15 +1412,20 @@
     "mouse- button release - turn off autoScroll if any"
 
     (button == 1) ifTrue:[
-	autoScrollBlock notNil ifTrue:[
-	    self stopScrollSelect
-	].
-	dragIsActive ifTrue:[
-	    self unselect
-	].
-	clickPos := nil.
+        self hasSelection ifTrue:[
+            self setPrimarySelection.
+            self selectionChanged.
+        ].
+
+        autoScrollBlock notNil ifTrue:[
+            self stopScrollSelect
+        ].
+        dragIsActive ifTrue:[
+            self unselect
+        ].
+        clickPos := nil.
     ] ifFalse:[
-	super buttonRelease:button x:x y:y
+        super buttonRelease:button x:x y:y
     ].
     dragIsActive := false.
 
@@ -1610,6 +1619,12 @@
 extendSelectionToX:x y:y
     "mouse-move while button was pressed - handle selection changes"
 
+    self extendSelectionToX:x y:y setPrimarySelection:true
+!
+
+extendSelectionToX:x y:y setPrimarySelection:aBoolean
+    "mouse-move while button was pressed - handle selection changes"
+
     |movedVisibleLine movedLine movedCol
      movedUp
      oldStartLine oldEndLine oldStartCol oldEndCol|
@@ -1731,8 +1746,10 @@
     ].
 
     self validateNewSelection.
-    self setPrimarySelection.
-    self selectionChanged.
+    aBoolean ifTrue:[
+        self setPrimarySelection.
+        self selectionChanged.
+    ].
 
     "/ The searchAction is mantained until a cut/replace or a search with a user selection is done
 "/    self clearSearchAction.
@@ -4855,11 +4872,11 @@
 !TextView class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libwidg/TextView.st,v 1.368 2014-01-17 10:59:50 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libwidg/TextView.st,v 1.369 2014-02-13 15:52:44 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libwidg/TextView.st,v 1.368 2014-01-17 10:59:50 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libwidg/TextView.st,v 1.369 2014-02-13 15:52:44 cg Exp $'
 !
 
 version_HG
--- a/Toggle.st	Wed Feb 12 22:17:26 2014 +0000
+++ b/Toggle.st	Sun Feb 23 20:18:07 2014 +0000
@@ -449,7 +449,7 @@
 
     super fetchDeviceResources.
 
-    lampColor notNil ifTrue:[lampColor := lampColor onDevice:device].
+    lampColor notNil ifTrue:[lampColor := lampColor onDevice:self graphicsDevice].
 
     "Created: 13.1.1997 / 23:46:31 / cg"
 !
@@ -483,9 +483,9 @@
 
     lampColor := DefaultLampColor.
     mm := styleSheet at:#'toggle.lampWidthMM' default:1.5.
-    lampWidth := (device horizontalPixelPerMillimeter * mm) rounded.
+    lampWidth := (self graphicsDevice horizontalPixelPerMillimeter * mm) rounded.
     mm := styleSheet at:#'toggle.lampHeightMM' default:3.0.
-    lampHeight := (device verticalPixelPerMillimeter * mm) rounded.
+    lampHeight := (self graphicsDevice verticalPixelPerMillimeter * mm) rounded.
 
     onLevel := styleSheet at:#'toggle.activeLevel' default:onLevel.
     offLevel := styleSheet at:#'toggle.passiveLevel' default:offLevel.
@@ -507,8 +507,8 @@
     bg := styleSheet colorAt:#'toggle.backgroundColor'.
     bg notNil ifTrue:[
         self backgroundColor:bg.
-        shadowColor := (bg averageColorIn:(0@0 corner:7@7)) darkened onDevice:device.
-        lightColor := (bg averageColorIn:(0@0 corner:7@7)) lightened onDevice:device.
+        shadowColor := (bg averageColorIn:(0@0 corner:7@7)) darkened onDevice:self graphicsDevice.
+        lightColor := (bg averageColorIn:(0@0 corner:7@7)) lightened onDevice:self graphicsDevice.
     ].
 
     "Modified: / 3.11.1997 / 02:22:02 / cg"
@@ -626,9 +626,10 @@
 !Toggle class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libwidg/Toggle.st,v 1.56 2009-10-21 14:28:02 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libwidg/Toggle.st,v 1.57 2014-02-18 16:59:47 stefan Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libwidg/Toggle.st,v 1.56 2009-10-21 14:28:02 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libwidg/Toggle.st,v 1.57 2014-02-18 16:59:47 stefan Exp $'
 ! !
+
--- a/VariablePanel.st	Wed Feb 12 22:17:26 2014 +0000
+++ b/VariablePanel.st	Sun Feb 23 20:18:07 2014 +0000
@@ -754,7 +754,7 @@
     ].
 
     DefaultSeparatingLine := StyleSheet at:#'variablePanel.separatingLine' default:false.
-    DefaultHandleColor := StyleSheet colorAt:#'variablePanel.handleColor' default:Black.
+    DefaultHandleColor := StyleSheet colorAt:#'variablePanel.handleColor' default:Color black.
 
     DefaultHandleImage := StyleSheet at:#'variablePanel.handleImage'
 
@@ -1013,8 +1013,8 @@
     (styleSymbol ~~ handleStyle) ifTrue:[
         handleStyle := styleSymbol.
         handleStyle == #next ifTrue:[
-            shadowForm := self class shadowFormOn:device.
-            lightForm := self class lightFormOn:device.
+            shadowForm := self class shadowFormOn:self graphicsDevice.
+            lightForm := self class lightFormOn:self graphicsDevice.
         ] ifFalse:[
             shadowForm := lightForm := nil
         ].
@@ -1664,7 +1664,7 @@
         self lineStyle:#dashed.
     ] ifFalse:[
         trackLine == #dottedLine ifTrue:[
-            oldStyle := lineStyle.
+            oldStyle := gc lineStyle.
             self lineStyle:#dotted.
         ]
     ].
@@ -1823,7 +1823,7 @@
     <resource: #style (#'variablePanel.barHeight'
                        #'variablePanel.barHeightMM')>
 
-    |bH h lvl|
+    |bH h lvl currentDeviceFont|
 
     shadowForm notNil ifTrue:[
         bH := shadowForm height + 2.
@@ -1831,7 +1831,7 @@
         bH := styleSheet at:#'variablePanel.barHeight'.
         bH isNil ifTrue:[
             h := styleSheet at:#'variablePanel.barHeightMM' default:2.
-            bH := (h * device verticalPixelPerMillimeter) rounded.
+            bH := (h * self graphicsDevice verticalPixelPerMillimeter) rounded.
         ].
     ].
     lvl := styleSheet at:#'variablePanel.barLevel' default:0.
@@ -1843,7 +1843,7 @@
     knobHeight := bH.
 
     handleLabels notNil ifTrue:[
-        font := font onDevice:device.
+        currentDeviceFont := gc createFontOnDevice.
         bH := handleLabels inject:bH into:[:maxSoFar :thisLabel |
                                            thisLabel isNil ifTrue:[
                                                 maxSoFar
@@ -1851,7 +1851,7 @@
                                                 maxSoFar max:(thisLabel heightOn:self)
                                            ]
                                           ].
-        bH := bH + font descent - 1
+        bH := bH + currentDeviceFont descent - 1
     ].
 
     self barHeight:bH.
@@ -1868,7 +1868,7 @@
 
     cursor := self class 
                 cursorForOrientation:orientation
-                onDevice:device
+                onDevice:self graphicsDevice
 
     "Modified: / 30.9.1998 / 18:20:35 / cg"
 !
@@ -1880,7 +1880,7 @@
 
     super initStyle.
 
-    handleColor := DefaultHandleColor onDevice:device.
+    handleColor := DefaultHandleColor onDevice:self graphicsDevice.
 
     DefaultHandleStyle isNil ifTrue:[
         handleStyle := styleSheet name
@@ -1897,21 +1897,21 @@
     separatingLine := DefaultSeparatingLine.
 
     DefaultHandleImage notNil ifTrue:[
-        shadowForm := DefaultHandleImage onDevice:device.
+        shadowForm := DefaultHandleImage onDevice:self graphicsDevice.
         barWidth := shadowForm width.
     ] ifFalse:[
         handleStyle == #next ifTrue:[
             DefaultHandleImage notNil ifTrue:[
-                shadowForm := DefaultHandleImage onDevice:device.
+                shadowForm := DefaultHandleImage onDevice:self graphicsDevice.
             ] ifFalse:[
-                shadowForm := self class shadowFormOn:device.
-                lightForm := self class lightFormOn:device.
+                shadowForm := self class shadowFormOn:self graphicsDevice.
+                lightForm := self class lightFormOn:self graphicsDevice.
             ].
             barWidth := shadowForm width.
         ] ifFalse:[
             shadowForm := lightForm := nil.
 
-            mm := device verticalPixelPerMillimeter.
+            mm := self graphicsDevice verticalPixelPerMillimeter.
             barWidth := (1.5 * mm) rounded. "motif style width"
         ].
     ].
@@ -2320,21 +2320,21 @@
                     colorAt:#'variablePanel.snapSelectedBgColor'
                     default:(StyleSheet colorAt:#'button.activeBackgroundColor').
         color notNil ifTrue:[
-            snapAdornment selectedBgColor:(color onDevice:device)
+            snapAdornment selectedBgColor:(color onDevice:self graphicsDevice)
         ].
 
         color := StyleSheet 
                     colorAt:#'variablePanel.snapEnterBgColor'
                     default:(StyleSheet colorAt:#'button.enteredBackgroundColor').
         color notNil ifTrue:[
-            snapAdornment enterBgColor:(color onDevice:device)
+            snapAdornment enterBgColor:(color onDevice:self graphicsDevice)
         ].
 
         self class snapIcons keysAndValuesDo:[:aKey :anIcon|
-            anIcon device == device ifTrue:[
+            anIcon device == self graphicsDevice ifTrue:[
                 icon := anIcon
             ] ifFalse:[
-                icon := anIcon copy onDevice:device.
+                icon := anIcon copy onDevice:self graphicsDevice.
                 icon clearMaskedPixels.
                 device == Display ifTrue:[
                     self class snapIcons at:aKey put:icon.
@@ -2599,10 +2599,10 @@
 !VariablePanel class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libwidg/VariablePanel.st,v 1.97 2014-01-16 14:33:02 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libwidg/VariablePanel.st,v 1.98 2014-02-18 17:16:37 stefan Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libwidg/VariablePanel.st,v 1.97 2014-01-16 14:33:02 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libwidg/VariablePanel.st,v 1.98 2014-02-18 17:16:37 stefan Exp $'
 ! !
 
--- a/Workspace.st	Wed Feb 12 22:17:26 2014 +0000
+++ b/Workspace.st	Sun Feb 23 20:18:07 2014 +0000
@@ -60,7 +60,19 @@
     (but, a lisp or prolog workspace would define its own action,
      to call for another compiler/interpreter  ...)
 
-
+    Special workspace- and doIt variables:
+        workspaces can be configured to automatically define undefined variables
+        as either workspace- or doIt variables. When encountering undefined variables,
+        the parser asks for an action, which is responded with #workspace or doIt if a
+        workspace is the requestor of a doIt. Both are implemented as value holders, and
+        the parser will generate code sending value/value: instead of normal assignment.
+        Workspace variables are kept in the Workspace class and will both persist between doIts
+        and also be visible across workspaces. They are perfect for scripting (and therefore anabled
+        by default when stx is started with one of the scripting options).
+        DoIt variables are only valid during a single doIt.
+        Be aware that when you ask from the outside via workspaceVariableAt:, you'll get a valueHolder.
+        This is by purbose, as it allows for easy monitoring and tracing of changes.
+            
     Caveat:
         in this version, Workspace does not yet support doIt in MVC setups.
         For now, simulate this by setting the doItAction, to notify the
@@ -463,16 +475,36 @@
 !
 
 workspaceVariableAt:name
+    "retrieve a workspace variable's value"
+
+    ^ (self workspaceVariableHolderAt:name) value
+
+    "
+     Workspace workspaceVariableAt:'foo' put:1234.
+     Workspace workspaceVariableAt:'foo' 
+    "
+!
+
+workspaceVariableAt:name put:aValue
+    "set or define a workspace variable"
+
+    (self workspaceVariables at:name ifAbsentPut:[ ValueHolder new]) value:aValue
+!
+
+workspaceVariableHolderAt:name
     "retrieve a workspace variable (actually, a holder onto it)"
 
     WorkspaceVariables isNil ifTrue:[^ nil].
     ^ WorkspaceVariables at:name ifAbsent:nil.
 
-
+    "
+     Workspace workspaceVariableAt:'foo' put:1234.
+     Workspace workspaceVariableAt:'foo' put:1234.
+    "
 !
 
 workspaceVariableNames
-    "retrieve the collection of workspace variable names"
+    "retrieve the collection of workspace variable names only"
 
     WorkspaceVariables isNil ifTrue:[^ #()].
     ^ WorkspaceVariables keys
@@ -481,7 +513,7 @@
 !
 
 workspaceVariables
-    "retrieve the collection of workspace variables.
+    "retrieve the collection of workspace variable holders.
      That is a dictionary associating names to values."
 
     WorkspaceVariables isNil ifTrue:[
@@ -603,7 +635,7 @@
 errorBackgroundColor
     errorBgColor notNil ifTrue:[ ^ errorBgColor ].
     DefaultErrorBackgroundColor notNil ifTrue:[ ^ DefaultErrorBackgroundColor ].
-    device hasColors ifTrue:[ ^ Color red ].
+    self graphicsDevice hasColors ifTrue:[ ^ Color red ].
 
     ^ selectionBgColor
 !
@@ -658,7 +690,7 @@
 
 warningBackgroundColor
     DefaultWarningBackgroundColor notNil ifTrue:[ ^ DefaultWarningBackgroundColor ].
-    device hasColors ifTrue:[ ^ Color orange ].
+    self graphicsDevice hasColors ifTrue:[ ^ Color orange ].
 
     ^ selectionBgColor
 !
@@ -1018,7 +1050,7 @@
     expandingTop := true.       "/ hack to make the top of the selection visible
     self makeSelectionVisible.
 
-    device flush.
+    self flush.
 
     aBlock ensure:[
         "
@@ -1187,7 +1219,7 @@
 
                 name notEmptyOrNil ifTrue:[
                     Workspace addWorkspaceVariable:name.
-                    (Workspace workspaceVariableAt:name) value:dropObject theObject.
+                    Workspace workspaceVariableAt:name put:dropObject theObject.
                     self paste:name.
                 ].
             ].
@@ -1997,7 +2029,7 @@
                     and:[ InspectorView defaultIntegerDisplayRadix ~= 10 ]]) ifTrue:[
                         s := result displayString , ' "',(result radixPrintStringRadix: InspectorView defaultIntegerDisplayRadix),'"'.
                     ] ifFalse:[
-                        s := result displayString "printString"
+                        s := result printStringForPrintIt "old: displayString" "very old: printString"
                     ].
                     self insertSelectedStringAtCursor:s
                 ]
@@ -2205,10 +2237,10 @@
 !Workspace class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libwidg/Workspace.st,v 1.312 2014-02-09 21:48:14 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libwidg/Workspace.st,v 1.317 2014-02-22 15:55:26 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libwidg/Workspace.st,v 1.312 2014-02-09 21:48:14 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libwidg/Workspace.st,v 1.317 2014-02-22 15:55:26 cg Exp $'
 ! !