Merge jv
authorHG Automerge
Thu, 24 Nov 2016 21:55:24 +0000
branchjv
changeset 7716 3dba89415c91
parent 7715 925b859e1758 (current diff)
parent 7702 2c1397577aa2 (diff)
child 7717 bf77414d0c8d
child 7764 618f2a37eee2
Merge
DeviceGraphicsContext.st
DisplaySurface.st
FontDescription.st
Image.st
SimpleView.st
StandardSystemView.st
ViewStyle.st
WinWorkstation.st
XWorkstation.st
stx_libview.st
--- a/DeviceGraphicsContext.st	Fri Nov 18 21:26:33 2016 +0000
+++ b/DeviceGraphicsContext.st	Thu Nov 24 21:55:24 2016 +0000
@@ -3983,10 +3983,10 @@
 !
 
 windowName:aString
-    "define the views name in the windows title area."
+    "define the view's name in the window's title area."
 
     drawableId notNil ifTrue: [
-	device setWindowName:aString in:drawableId.
+        device setWindowName:aString in:drawableId.
     ]
 !
 
--- a/DeviceWorkstation.st	Fri Nov 18 21:26:33 2016 +0000
+++ b/DeviceWorkstation.st	Thu Nov 24 21:55:24 2016 +0000
@@ -1101,7 +1101,13 @@
 !
 
 cursorPoint
+    "ST-80 compatibility: 
+     return the position of the mouse pointer on this display
+     (in screen coordinates)"
+
     ^ self pointerPosition
+
+    "Modified (comment): / 17-11-2016 / 22:10:20 / cg"
 !
 
 displayOpaqueString:s x:x y:y
@@ -1268,13 +1274,15 @@
     |pos|
 
     self waitButton.
-    pos := self cursorPoint.
+    pos := self pointerPosition.
     self waitNoButton.
     ^ pos
 
     "
      Sensor waitClickButton.
     "
+
+    "Modified: / 17-11-2016 / 22:10:39 / cg"
 !
 
 waitNoButton
@@ -2163,7 +2171,7 @@
 !
 
 ignoreBackingStore:aBoolean
-    "if the argument is true, the views backingStore setting will be ignored, and
+    "if the argument is true, the view's backingStore setting will be ignored, and
      no backing store used - this can be used on servers where backing store is
      very slow (from rc-file)"
 
@@ -2560,6 +2568,18 @@
 !
 
 supportsXftFonts
+    "can we draw into windows using Xft fonts?
+     Obviously, this will only ever be answered true by XWindow displays"
+
+    ^ false
+!
+
+supportsXftFontsInBitmaps
+    "can we draw into bitmap/pixmaps using Xft fonts?
+     Obviously, this will only ever be answered true by XWindow displays.
+     This is a separate query (for now), because rendering into pixmaps
+     seems not to work currently"
+     
     ^ false
 ! !
 
@@ -4800,7 +4820,7 @@
 
 dispatchEventFor:aViewIdOrNil withMask:eventMask
     "central event handling method:
-     get next event and send an appropriate message to the views sensor,
+     get next event and send an appropriate message to the view's sensor,
      or to the view directly (if the view has none).
      If the argument aViewIdOrNil is nil, events for any view are processed,
      otherwise only events for the view with given id are processed
@@ -7661,10 +7681,10 @@
 addKnownView:aView withId:aWindowID
     "add the View aView with id:aWindowID to the list of known views/id's.
      This map is needed later (on event arrival) to get the view from
-     the views id (which is passed along with the devices event) quickly."
+     the view's id (which is passed along with the devices event) quickly."
 
     knownViews isNil ifTrue:[
-	knownViews := WeakValueDictionary new:500.
+        knownViews := WeakValueDictionary new:500.
     ].
     knownViews at:aWindowID put:aView.
 
--- a/DisplaySurface.st	Fri Nov 18 21:26:33 2016 +0000
+++ b/DisplaySurface.st	Thu Nov 24 21:55:24 2016 +0000
@@ -16,7 +16,7 @@
 GraphicsMedium subclass:#DisplaySurface
 	instanceVariableNames:'viewBackground cursor eventMask moreAttributes renderer uuid
 		backed flags delegate updateRegion'
-	classVariableNames:'SaveUnderFlagMask GotExposeFlagMask'
+	classVariableNames:'GotExposeFlagMask SaveUnderFlagMask'
 	poolDictionaries:''
 	category:'Graphics-Support'
 !
@@ -50,42 +50,42 @@
 
     [instance variables:]
 
-	viewBackground  <Color|Form|Image>      the views background
-
-	cursor          <Cursor>                the cursor
-
-	eventMask                               mask specifying the enabled
-						events.
-
-	moreAttributes                          optional dictionary, allowing for more attributes
-						to be store there
-	    fields:
-		middleButtonMenu                a fix popup menu for the middle button.
-
-		keyCommands                     not yet supported
-
-
-	backed                                  one of #always, #whenMapped or #never
-						corresponds to X's backing store mechanism.
-						May be ignored by other devices.
-
-	flags                                   flag bits
-
-	    saveUnder                               bit 1; 1 if saveunder store for
-							    that view is enabled
-
-	    gotExpose                               bit 2; 1 if an expose/noExpose event arrived
-							    (for exposure handling after a scroll)
+        viewBackground  <Color|Form|Image>      the view's background
+
+        cursor          <Cursor>                the cursor
+
+        eventMask                               mask specifying the enabled
+                                                events.
+
+        moreAttributes                          optional dictionary, allowing for more attributes
+                                                to be store there
+            fields:
+                middleButtonMenu                a fix popup menu for the middle button.
+
+                keyCommands                     not yet supported
+
+
+        backed                                  one of #always, #whenMapped or #never
+                                                corresponds to X's backing store mechanism.
+                                                May be ignored by other devices.
+
+        flags                                   flag bits
+
+            saveUnder                               bit 1; 1 if saveunder store for
+                                                            that view is enabled
+
+            gotExpose                               bit 2; 1 if an expose/noExpose event arrived
+                                                            (for exposure handling after a scroll)
 
        delegate                                for event delegation
 
     [see also:]
-	DeviceWorkstation
-	WindowGroup
-	StandardSYstemView SimpleView View
+        DeviceWorkstation
+        WindowGroup
+        StandardSYstemView SimpleView View
 
     [author:]
-	Claus Gittinger
+        Claus Gittinger
 "
 ! !
 
@@ -189,7 +189,7 @@
 !
 
 insideColor:aColor
-    "set the views background color - ST-80 compatibility"
+    "set the view's background color - ST-80 compatibility"
 
     self viewBackground:aColor.
     self background:aColor
@@ -387,7 +387,7 @@
 !
 
 viewGravity
-    "return the views gravity"
+    "return the view's gravity"
 
     ^ #NorthWest
 !
@@ -421,13 +421,13 @@
 !DisplaySurface methodsFor:'accessing-cursor'!
 
 cursor
-    "return the views cursor"
+    "return the view's cursor"
 
     ^ cursor
 !
 
 cursor:aCursor
-    "set the views cursor. This cursor will be automatically displayed whenever
+    "set the view's cursor. This cursor will be automatically displayed whenever
      the mouse-pointer enters the receiver.
      Cursors are typically set at view creation time and left as installed."
 
@@ -441,10 +441,10 @@
      v open.
      [v shown] whileFalse:[Processor yield].
      [v shown] whileTrue:[
-	(Delay forSeconds:1) wait.
-	v cursor:(Cursor normal).
-	(Delay forSeconds:1) wait.
-	v cursor:(Cursor wait).
+        (Delay forSeconds:1) wait.
+        v cursor:(Cursor normal).
+        (Delay forSeconds:1) wait.
+        v cursor:(Cursor wait).
      ]
     "
 
@@ -452,21 +452,24 @@
 !
 
 cursor:aCursor now:showImmediately
-    "set the views cursor. This cursor will be automatically displayed whenever
+    "set the view's cursor. This cursor will be automatically displayed whenever
      the mouse-pointer enters the receiver.
-     Cursors are typically set at view creation time and left as installed."
+     Cursors are typically set at view creation time and left as installed.
+     The showImmediately parameter controls if the request is to be buffered,
+     or enforced immediately. Under XWindows, that makes a performance difference if many
+     cursors (a whole group) are set, because the setting involves an XServer round trip."
 
     aCursor notNil ifTrue:[
-	(aCursor ~~ cursor) ifTrue:[
-	    cursor := aCursor.
-	    self drawableId notNil ifTrue:[
-		self setCursor.
-		(showImmediately and:[realized]) ifTrue:[
-		    "flush, to make cursor immediately visible"
-		    self flush
-		]
-	    ]
-	]
+        (aCursor ~~ cursor) ifTrue:[
+            cursor := aCursor.
+            self drawableId notNil ifTrue:[
+                self setCursor.
+                (showImmediately and:[realized]) ifTrue:[
+                    "flush, to make cursor immediately visible"
+                    self flush
+                ]
+            ]
+        ]
     ]
 
     "
@@ -477,10 +480,10 @@
      v open.
      [v shown] whileFalse:[Processor yield].
      [v shown] whileTrue:[
-	(Delay forSeconds:1) wait.
-	v cursor:(Cursor normal).
-	(Delay forSeconds:1) wait.
-	v cursor:(Cursor wait).
+        (Delay forSeconds:1) wait.
+        v cursor:(Cursor normal).
+        (Delay forSeconds:1) wait.
+        v cursor:(Cursor wait).
      ]
     "
 
@@ -516,12 +519,16 @@
     |savedCursor|
 
     cursor == aCursor ifTrue:[
-	^ aBlock value
+        ^ aBlock value
     ].
 
     savedCursor := cursor.
-    self cursor:aCursor now:true.
-    ^ aBlock ensure:[self cursor:savedCursor now:true]
+    ^ [
+        self cursor:aCursor now:true.
+        aBlock value
+    ] ensure:[
+        self cursor:savedCursor now:true
+    ]
 
     "Modified: 27.2.1997 / 17:20:43 / cg"
 !
@@ -632,28 +639,28 @@
 !DisplaySurface methodsFor:'accessing-limits'!
 
 maxExtent
-    "return the views maximum extent - this is nil here.
+    "return the view's maximum extent - this is nil here.
      Only standardSystemViews support this."
 
     ^ nil
 !
 
 maxExtent:extent
-    "set the views maximum extent - ignored here.
+    "set the view's maximum extent - ignored here.
      Only standardSystemViews support this."
 
     ^ self
 !
 
 minExtent
-    "return the views minimum extent - this is nil here.
+    "return the view's minimum extent - this is nil here.
      Only standardSystemViews support this."
 
     ^ nil
 !
 
 minExtent:extent
-    "set the views minimum extent - ignored here.
+    "set the view's minimum extent - ignored here.
      Only standardSystemViews support this."
 
     ^ self
@@ -744,7 +751,7 @@
 !
 
 setPointerPosition:aRelativePoint
-    "set the pointer to aRelativePoint relative to the views origin"
+    "set the pointer to aRelativePoint relative to the view's origin"
 
     device setPointerPosition:aRelativePoint in:self drawableId.
 
@@ -757,63 +764,63 @@
 !DisplaySurface methodsFor:'accessing-names'!
 
 icon
-    "return the views icon - this is nil here.
+    "return the view's icon - this is nil here.
      Only standardSystemViews support labels and icons."
 
     ^ nil
 !
 
 icon:aBitmap
-    "set the views icon - ignored here.
+    "set the view's icon - ignored here.
      Only standardSystemViews support labels and icons."
 
     ^ self
 !
 
 iconLabel
-    "return the views icon label - this is nil here.
+    "return the view's icon label - this is nil here.
      Only standardSystemViews support labels and icons."
 
     ^ nil
 !
 
 iconLabel:aLabel
-    "set the views icon label - ignored here.
+    "set the view's icon label - ignored here.
      Only standardSystemViews support labels and icons."
 
     ^ self
 !
 
 iconMask
-    "return the views iconMask - this is nil here.
+    "return the view's iconMask - this is nil here.
      Only standardSystemViews may support labels and icons."
 
     ^ nil
 !
 
 iconView
-    "return the views iconView - this is nil here.
+    "return the view's iconView - this is nil here.
      Only standardSystemViews support labels and icons."
 
     ^ nil
 !
 
 iconView:aView
-    "set the views icon view - ignored here.
+    "set the view's icon view - ignored here.
      Only standardSystemViews support labels and icons."
 
     ^ self
 !
 
 label
-    "return the views label - this is nil here.
+    "return the view's label - this is nil here.
      Only standardSystemViews support labels and icons."
 
     ^ nil
 !
 
 label:aLabel
-    "set the views label - ignored here.
+    "set the view's label - ignored here.
      Only standardSystemViews support labels and icons."
 
     ^ self
@@ -981,11 +988,13 @@
     device setClipboardObject:something ownerView:self.
 !
 
-setClipboardText:something
+setClipboardText:aString
     "set the text selection - both the local one, and tell the display
      that we have changed it (i.e. place it into the clipBoard)."
 
-    device setClipboardText:something ownerView:self
+    device setClipboardText:aString ownerView:self
+
+    "Modified (format): / 21-11-2016 / 23:36:59 / cg"
 !
 
 setSelection:something
@@ -2438,7 +2447,7 @@
 
 heightOfContents
     "return the height of the contents in pixels.
-     Since we don't know here, just return the views size.
+     Since we don't know here, just return the view's size.
      This will make your scrollbars show 100%-visible.
      Must be redefined in subviews to make scrollbars really work."
 
@@ -2447,7 +2456,7 @@
 
 widthOfContents
     "return the width of the contents in pixels.
-     Since we don't know here, just return the views size.
+     Since we don't know here, just return the view's size.
      This will make your scrollbars show 100%-visible.
      Must be redefined in subviews to make scrollbars really work."
 
--- a/Font.st	Fri Nov 18 21:26:33 2016 +0000
+++ b/Font.st	Thu Nov 24 21:55:24 2016 +0000
@@ -436,20 +436,26 @@
     "Modified: 14.4.1997 / 18:22:31 / cg"
 !
 
-onDevice:aDevice ifAbsent:exceptionBlock 
-    "create a new Font representing the same font as
-     myself on aDevice. This does NOT try to look for existing
+onDevice:aDevice xFontsOnly:xFontsOnly xftFontsOnly:xftFontsOnly ifAbsent:exceptionBlock 
+    "create a new Font representing the same font as myself on aDevice. 
+     The xFontsOnly/xftFontsOnly are only relevant for XWindow devices;
+     xFontsOnly will suppress xft fonts, whereas xftFontsOnly will suppress x fonts
+     (the first is useful if ST/X has a slow remote X connection for display,
+      on which xft fonts are very slow. Yes, this is actually a reasonable setup
+      in use at one of our customers)
+     This does NOT try to look for existing
      or replacement fonts (i.e. can be used to get physical fonts)."
 
     |id xftFont|
 
     "receiver was not associated - do it now"
     device isNil ifTrue:[
-        (aDevice supportsXftFonts 
-        and:[ UserPreferences current useXFontsOnly not ]) ifTrue:[
-            xftFont := (XftFontDescription for:self) onDevice:aDevice ifAbsent:[nil].
-            xftFont notNil ifTrue:[^ xftFont].
-            UserPreferences current useXftFontsOnly ifTrue:[^ nil].
+        aDevice supportsXftFonts ifTrue:[
+            xFontsOnly ifFalse:[
+                xftFont := (XftFontDescription for:self) onDevice:aDevice ifAbsent:[nil].
+                xftFont notNil ifTrue:[^ xftFont].
+                xftFontsOnly ifTrue:[^ nil].
+            ].    
         ].    
         
         "ask that device for the font"
--- a/FontDescription.st	Fri Nov 18 21:26:33 2016 +0000
+++ b/FontDescription.st	Thu Nov 24 21:55:24 2016 +0000
@@ -1352,13 +1352,34 @@
      myself on aDevice. This does NOT try to look for existing
      or replacement fonts (i.e. can be used to get physical fonts)."
 
+    |prefs|
+
+    prefs := UserPreferences current.
+    ^ self
+        onDevice:aDevice 
+        xFontsOnly:(prefs useXFontsOnly) 
+        xftFontsOnly:(prefs useXftFontsOnly) 
+        ifAbsent:exceptionBlock 
+!
+
+onDevice:aDevice xFontsOnly:xFontsOnly xftFontsOnly:xftFontsOnly ifAbsent:exceptionBlock 
+    "create a new Font representing the same font as myself on aDevice. 
+     The xFontsOnly/xftFontsOnly are only relevant for XWindow devices;
+     xFontsOnly will suppress xft fonts, whereas xftFontsOnly will suppress x fonts
+     (the first is useful if ST/X has a slow remote X connection for display,
+      on which xft fonts are very slow. Yes, this is actually a reasonable setup
+      in use at one of our customers)
+     This does NOT try to look for existing
+     or replacement fonts (i.e. can be used to get physical fonts)."
+
     |newFont id xftFont|
 
-    (aDevice supportsXftFonts 
-    and:[ UserPreferences current useXFontsOnly not ]) ifTrue:[
-        xftFont := (XftFontDescription for:self) onDevice:aDevice ifAbsent:[nil].
-        xftFont notNil ifTrue:[^ xftFont].
-        UserPreferences current useXftFontsOnly ifTrue:[^ nil].
+    (aDevice supportsXftFonts) ifTrue:[
+        xFontsOnly ifTrue:[
+            xftFont := (XftFontDescription for:self) onDevice:aDevice ifAbsent:[nil].
+            xftFont notNil ifTrue:[^ xftFont].
+            xftFontsOnly useXftFontsOnly ifTrue:[^ nil].
+        ].    
     ].    
 
     "ask that device for the font"
--- a/Image.st	Fri Nov 18 21:26:33 2016 +0000
+++ b/Image.st	Thu Nov 24 21:55:24 2016 +0000
@@ -5995,7 +5995,7 @@
      ]
     "
 
-    "Modified: / 05-02-2011 / 17:46:58 / cg"
+    "Modified: / 22-11-2016 / 03:34:08 / cg"
 !
 
 fromSubImage:anImage in:aRectangle
--- a/SimpleView.st	Fri Nov 18 21:26:33 2016 +0000
+++ b/SimpleView.st	Thu Nov 24 21:55:24 2016 +0000
@@ -1,3 +1,5 @@
+"{ Encoding: utf8 }"
+
 "
  COPYRIGHT (c) 1989 by Claus Gittinger
 	      All Rights Reserved
@@ -593,13 +595,13 @@
 layoutComputation
 "
     Due to historic reasons, there are 2 mechanisms to resize a view:
-	- (old, to be eliminated mechanism)
-	    based upon info found in
-		relativeOrigin / relativeCorner / relativeExtent
-		originRule / cornerRule / extentRule
-
-	- (new, will migrate to that one)
-	    letting a layoutObject compute things
+        - (old, to be eliminated mechanism)
+            based upon info found in
+                relativeOrigin / relativeCorner / relativeExtent
+                originRule / cornerRule / extentRule
+
+        - (new, will migrate to that one)
+            letting a layoutObject compute things
 
     Actually, the old mechanism is just as powerful, as the new (layoutObject
     based) mechanism; with the help of block=rules, you can compute whatever
@@ -609,20 +611,20 @@
     relative-sized).
     Therefore (and also to make porting of ST-80 apps easier), ST/X will migrate
     to use layoutObjects.
-    You will not see a difference at the views protocol level, since
+    You will not see a difference at the view's protocol level, since
     existing interfaces will (silently) create layoutObjects as appropriate.
     However, you should remove all direct accesses to the above mentioned
     instance variables, to be prepared for that change.
 
     Notice, that a view recomputes its size whenever its superview
     changes size. This is done via:
-	sizeChanged
-	    -> allSubviews: superViewChangedSize
+        sizeChanged
+            -> allSubviews: superViewChangedSize
 
     If the geometry computation as performed in superViewChangedSize
     is not powerful enough for your application, you can either:
-	- redefine superViewChangedSize
-	- create a special layoutObject which computes a new layout.
+        - redefine superViewChangedSize
+        - create a special layoutObject which computes a new layout.
 "
 !
 
@@ -684,7 +686,7 @@
     A dynamic menu can be provided by the view itself, or by the model.
     In addition, TextViews allow a separate menuHolder to provide the menu
     (i.e. it may be different from the model).
-    If the model shall provide the menu, set the views menuMessage to a selector
+    If the model shall provide the menu, set the view's menuMessage to a selector
     which is sent to the model. This message should return a popUpMenu.
 
     For textViews, the above is also valid, except if the menuHolder is explicitely
@@ -1486,7 +1488,7 @@
 !
 
 resources
-    "return the views resources -
+    "return the view's resources -
      that's a ResourcePack containing national language strings"
 
     ^ self classResources
@@ -2337,7 +2339,7 @@
 
 heightOfContents
     "return the height of the contents in logical units
-     - defaults to views visible area here.
+     - defaults to view's visible area here.
     This method MUST be redefined in all view classess which are
     going to be scrolled AND show data which has different size than
     the view. For example, a view showing A4-size documents should return
@@ -2375,7 +2377,7 @@
     A view showing a bitmap of width 500 should return 500.
     If not redefined, scrollbars have no way of knowing the actual size
     of the contents being shown. This is called by scrollBars to compute
-    the relative width of the document vs. the views actual width.
+    the relative width of the document vs. the view's actual width.
     The value returned here must be based on a scale of 1, since users
     of this will scale as appropriate."
 
@@ -2655,12 +2657,12 @@
 !
 
 corner:corner
-    "set the views corner;
+    "set the view's corner;
      the corner argument may be:
-	 a point
-	    where integer fields mean 'pixel-values'
-	    and float values mean 'relative-to-superview'
-	    and nil means 'take current value';
+         a point
+            where integer fields mean 'pixel-values'
+            and float values mean 'relative-to-superview'
+            and nil means 'take current value';
      or a block returning a point which is interpreted as above.
      Please migrate to use layoutObjects, if possible."
 
@@ -2669,31 +2671,31 @@
     self explicitExtent:true.
 
     corner isBlock ifTrue:[
-	cornerRule := corner.
-	self drawableId notNil ifTrue:[
-	    pixelCorner := corner value
-	] ifFalse:[
-	    self extentChangedFlag:true
-	]
+        cornerRule := corner.
+        self drawableId notNil ifTrue:[
+            pixelCorner := corner value
+        ] ifFalse:[
+            self extentChangedFlag:true
+        ]
     ] ifFalse:[
-	x := corner x.
-	y := corner y.
-	x isNil ifTrue:[x := self corner x].
-	y isNil ifTrue:[y := self corner y].
-	c := x @ y.
-	((x isInteger not) or:[y isInteger not]) ifTrue:[
-	    relativeCorner := c.
-	    pixelCorner := self cornerFromRelativeCorner.
-	    pixelCorner isNil ifTrue:[
-		self extentChangedFlag:true
-	    ]
-	] ifFalse:[
-	    pixelCorner := c
-	]
+        x := corner x.
+        y := corner y.
+        x isNil ifTrue:[x := self corner x].
+        y isNil ifTrue:[y := self corner y].
+        c := x @ y.
+        ((x isInteger not) or:[y isInteger not]) ifTrue:[
+            relativeCorner := c.
+            pixelCorner := self cornerFromRelativeCorner.
+            pixelCorner isNil ifTrue:[
+                self extentChangedFlag:true
+            ]
+        ] ifFalse:[
+            pixelCorner := c
+        ]
     ].
 
     pixelCorner notNil ifTrue:[
-	self pixelCorner:pixelCorner
+        self pixelCorner:pixelCorner
     ]
 
     "Modified: 15.7.1996 / 09:51:06 / cg"
@@ -2706,53 +2708,53 @@
 !
 
 extent:extent
-    "set the views extent;
+    "set the view's extent;
      extent may be:
-	a point
-	    where integer fields mean 'pixel-values'
-	    and float values mean 'relative-to-superview'
-	    and nil means 'leave current value';
+        a point
+            where integer fields mean 'pixel-values'
+            and float values mean 'relative-to-superview'
+            and nil means 'leave current value';
      or a block returning a point which is interpreted as above.
      Be careful when using relative extents: rounding errors may
      accumulate. Better use origin/corner.
      Best: migrate to use layour objects.
 
      Notice: this sets the views explicitExtent flag, which prevents it normally
-	     from resizing itself to its preferredExtent.
-	     See initialExtent: for a variation."
+             from resizing itself to its preferredExtent.
+             See initialExtent: for a variation."
 
     |w h pixelExtent e|
 
     self explicitExtent:true.
 
     extent isBlock ifTrue:[
-	extentRule := extent.
-	self drawableId notNil ifTrue:[
-	    pixelExtent := extent value
-	] ifFalse:[
-	    self extentChangedFlag:true
-	]
+        extentRule := extent.
+        self drawableId notNil ifTrue:[
+            pixelExtent := extent value
+        ] ifFalse:[
+            self extentChangedFlag:true
+        ]
     ] ifFalse:[
-	extentRule := nil.
-	w := extent x.
-	h := extent y.
-	w isNil ifTrue:[w := width].
-	h isNil ifTrue:[h := height].
-	e := w@h.
-	((w isInteger not) or:[h isInteger not]) ifTrue:[
-	    "/ w > 1 ifTrue:[self halt].
-	    relativeExtent := e.
-	    pixelExtent := self extentFromRelativeExtent.
-	    pixelExtent isNil ifTrue:[
-		self extentChangedFlag:true
-	    ]
-	] ifFalse:[
-	    relativeExtent := nil.
-	    pixelExtent := e
-	]
+        extentRule := nil.
+        w := extent x.
+        h := extent y.
+        w isNil ifTrue:[w := width].
+        h isNil ifTrue:[h := height].
+        e := w@h.
+        ((w isInteger not) or:[h isInteger not]) ifTrue:[
+            "/ w > 1 ifTrue:[self halt].
+            relativeExtent := e.
+            pixelExtent := self extentFromRelativeExtent.
+            pixelExtent isNil ifTrue:[
+                self extentChangedFlag:true
+            ]
+        ] ifFalse:[
+            relativeExtent := nil.
+            pixelExtent := e
+        ]
     ].
     pixelExtent notNil ifTrue:[
-	self pixelExtent:pixelExtent
+        self pixelExtent:pixelExtent
     ]
 
     "Modified: / 07-07-2010 / 16:44:57 / cg"
@@ -2796,13 +2798,13 @@
 !
 
 height:aNumber
-    "set the views height in pixels"
+    "set the view's height in pixels"
 
     "/ check: the following leads to an error in the notebook...
 "/    aNumber isInteger ifTrue:[
 "/        height := aNumber.
 "/    ] ifFalse:[
-	self extent:(width @ aNumber)
+        self extent:(width @ aNumber)
 "/    ].
 
     "Modified: / 02-02-2011 / 12:16:44 / cg"
@@ -2844,7 +2846,7 @@
 !
 
 initialExtent:extent
-    "set the views extent, but don't change its explicitExtent setting.
+    "set the view's extent, but don't change its explicitExtent setting.
      a variant of #extent."
 
     |expl|
@@ -2855,13 +2857,13 @@
 !
 
 initialHeight:aNumber
-    "set the views height in pixels, but don't change its explicitExtent setting"
+    "set the view's height in pixels, but don't change its explicitExtent setting"
 
     self initialExtent:(width @ aNumber)
 !
 
 initialWidth:aNumber
-    "set the views width in pixels, but don't change its explicitExtent setting"
+    "set the view's width in pixels, but don't change its explicitExtent setting"
 
     self initialExtent:(aNumber @ height)
 !
@@ -3232,44 +3234,44 @@
 !
 
 origin:origin
-    "set the views origin;
+    "set the view's origin;
      origin may be:
-	a point
-	    where integer fields mean 'pixel-values'
-	    and float values mean 'relative-to-superview'
-	    and nil means 'take current value';
+        a point
+            where integer fields mean 'pixel-values'
+            and float values mean 'relative-to-superview'
+            and nil means 'take current value';
      or a block returning a point which is interpreted as above.
      Please migrate to use layout objects."
 
     |newLeft newTop pixelOrigin o|
 
     origin isBlock ifTrue:[
-	originRule := origin.
-	self drawableId notNil ifTrue:[
-	    pixelOrigin := origin value
-	] ifFalse:[
-	    self originChangedFlag:true
-	]
+        originRule := origin.
+        self drawableId notNil ifTrue:[
+            pixelOrigin := origin value
+        ] ifFalse:[
+            self originChangedFlag:true
+        ]
     ] ifFalse:[
-	o := origin.
-	newLeft := origin x.
-	newTop := origin y.
-	newLeft isNil ifTrue:[newLeft := left].
-	newTop isNil ifTrue:[newTop := top].
-	o := newLeft @ newTop.
-	((newLeft isInteger not) or:[newTop isInteger not]) ifTrue:[
-	    relativeOrigin := o.
-	    pixelOrigin := self originFromRelativeOrigin.
-	    pixelOrigin isNil ifTrue:[
-		self originChangedFlag:true
-	    ]
-	] ifFalse:[
-	    relativeOrigin := nil.
-	    pixelOrigin := o
-	]
+        o := origin.
+        newLeft := origin x.
+        newTop := origin y.
+        newLeft isNil ifTrue:[newLeft := left].
+        newTop isNil ifTrue:[newTop := top].
+        o := newLeft @ newTop.
+        ((newLeft isInteger not) or:[newTop isInteger not]) ifTrue:[
+            relativeOrigin := o.
+            pixelOrigin := self originFromRelativeOrigin.
+            pixelOrigin isNil ifTrue:[
+                self originChangedFlag:true
+            ]
+        ] ifFalse:[
+            relativeOrigin := nil.
+            pixelOrigin := o
+        ]
     ].
     pixelOrigin notNil ifTrue:[
-	self pixelOrigin:pixelOrigin
+        self pixelOrigin:pixelOrigin
     ].
 
     "Modified: 19.4.1996 / 15:12:36 / cg"
@@ -3389,7 +3391,7 @@
 !
 
 preferredExtent:anExtentPoint
-    "override the views own preferredExtent computation,
+    "override the view's own preferredExtent computation,
      and let it prefer the size given by the argument."
 
     preferredExtent := anExtentPoint.
@@ -3520,7 +3522,7 @@
 !
 
 setHeight:aNumber
-    "set the views height in pixels"
+    "set the view's height in pixels"
 
     height := aNumber.
 
@@ -3535,7 +3537,7 @@
 !
 
 setWidth:aNumber
-    "set the views width in pixels"
+    "set the view's width in pixels"
 
     width := aNumber.
 
@@ -3654,13 +3656,13 @@
 !
 
 width:aNumber
-    "set the views width in pixels"
+    "set the view's width in pixels"
 
     "/ check: the following leads to an error in the notebook...
 "/    aNumber isInteger ifTrue:[
 "/        width := aNumber.
 "/    ] ifFalse:[
-	self extent:(aNumber @ height)
+        self extent:(aNumber @ height)
 "/    ]
 
     "Modified: / 02-02-2011 / 12:16:26 / cg"
@@ -3970,17 +3972,17 @@
 
     "
      mhmh - for backward compatibility, try to ask
-     the model first, then use the views menu.
+     the model first, then use the view's menu.
     "
     (menuHolder respondsTo:sym) ifFalse:[
-	(self respondsTo:sym) ifTrue:[
-	    menuHolder := self
-	]
+        (self respondsTo:sym) ifTrue:[
+            menuHolder := self
+        ]
     ].
 
     sym numArgs > 0 ifTrue:[
-	"/ squeak compatibility (with args): create the empty menu here, let model add items
-	^ menuHolder perform:sym withOptionalArgument:(Menu new) and:(device shiftDown).
+        "/ squeak compatibility (with args): create the empty menu here, let model add items
+        ^ menuHolder perform:sym withOptionalArgument:(Menu new) and:(device shiftDown).
     ].
 
     "
@@ -4197,10 +4199,10 @@
 !
 
 sensor
-    "return the views sensor"
+    "return the view's sensor"
 
     windowGroup notNil ifTrue:[
-	^ windowGroup sensor.
+        ^ windowGroup sensor.
     ].
 
     "there is no window group. Deliver events synchronously"
@@ -6450,7 +6452,7 @@
     "the mouseWheel was turned - handle as a scroll operation.
      Specialized application windows may redefine this for any other
      operation.
-     Here, we scroll some amount which depends upon the views contents height
+     Here, we scroll some amount which depends upon the view's contents height
      (but never too much);
      if shift is pressed, always scroll a single scroll-step;
      if ctrl is pressed, always scroll one page."
@@ -6460,39 +6462,39 @@
     sensor := self sensor.
 
     UserPreferences current allowMouseWheelZoom ifTrue:[
-	zoomInOrOut := sensor ctrlDown or:[sensor metaDown].
-	zoomInOrOut ifTrue:[
-	    self mouseWheelZoom:amount.
-	    ^ self.
-	].
+        zoomInOrOut := sensor ctrlDown or:[sensor metaDown].
+        zoomInOrOut ifTrue:[
+            self mouseWheelZoom:amount.
+            ^ self.
+        ].
     ].
 
     horizontal := pageScroll := false.
     (UserPreferences current shiftMouseWheelScrollsHorizontally) ifTrue:[
-	horizontal := sensor shiftDown
+        horizontal := sensor shiftDown
     ] ifFalse:[                              
-	pageScroll := sensor shiftDown.
+        pageScroll := sensor shiftDown.
     ].
     
     pageScroll ifFalse:[
         amountToScroll := horizontal 
-			    ifTrue:[ self horizontalScrollStep]
-			    ifFalse:[ self verticalScrollStep ].
-	amountToScroll := self scaleMouseWheelScrollAmount:amountToScroll.
+                            ifTrue:[ self horizontalScrollStep]
+                            ifFalse:[ self verticalScrollStep ].
+        amountToScroll := self scaleMouseWheelScrollAmount:amountToScroll.
     ].
 
     amount > 0 ifTrue:[
-	pageScroll ifTrue:[
-	    horizontal ifTrue:[self pageLeft] ifFalse:[self pageUp]
-	] ifFalse:[
-	    horizontal ifTrue:[self scrollLeft:amountToScroll] ifFalse:[self scrollUp:amountToScroll]
-	]
+        pageScroll ifTrue:[
+            horizontal ifTrue:[self pageLeft] ifFalse:[self pageUp]
+        ] ifFalse:[
+            horizontal ifTrue:[self scrollLeft:amountToScroll] ifFalse:[self scrollUp:amountToScroll]
+        ]
     ] ifFalse:[
-	pageScroll ifTrue:[
-	    horizontal ifTrue:[self pageRight] ifFalse:[self pageDown]
-	] ifFalse:[
-	    horizontal ifTrue:[self scrollRight:amountToScroll] ifFalse:[self scrollDown:amountToScroll]
-	]
+        pageScroll ifTrue:[
+            horizontal ifTrue:[self pageRight] ifFalse:[self pageDown]
+        ] ifFalse:[
+            horizontal ifTrue:[self scrollRight:amountToScroll] ifFalse:[self scrollDown:amountToScroll]
+        ]
     ].
 
     "Modified: / 21.5.1999 / 19:58:42 / cg"
@@ -6512,20 +6514,20 @@
 
     "/ first ask my flags if its enforced or forbidden
     self requestFocusOnPointerEnter ifTrue:[
-	doRequestFocus := true
+        doRequestFocus := true
     ] ifFalse:[
-	self doNotRequestFocusOnPointerEnter ifTrue:[
-	    doRequestFocus := false
-	] ifFalse:[
-	    "/ then look for the settings.
-	    doRequestFocus := self wantsFocusWithPointerEnter
-	]
+        self doNotRequestFocusOnPointerEnter ifTrue:[
+            doRequestFocus := false
+        ] ifFalse:[
+            "/ then look for the settings.
+            doRequestFocus := self wantsFocusWithPointerEnter
+        ]
     ].
 
     doRequestFocus ifTrue:[
-	self requestFocus.
-    ].
-    dependents notNil ifTrue:[ self changed:#pointerInView ]
+        self requestFocus.
+    ].
+    dependents notNil ifTrue:[ self changed:#pointerInView with:true ]
     
     "Modified: / 01-08-2012 / 17:06:41 / cg"
 !
@@ -6534,7 +6536,7 @@
     "mouse pointer left"
 
     super pointerLeave:buttonState.
-    dependents notNil ifTrue:[ self changed:#pointerInView ]
+    dependents notNil ifTrue:[ self changed:#pointerInView with:false]
 !
 
 propertyChange:propertyId state: state
@@ -8149,86 +8151,86 @@
      and handled in the superClass (static menus are a historic leftOver).
      Otherwise, the follwing steps are performed:
 
-	- ask the receiver for the menu (via #yellowButtonMenu)
-	- ask the receiver for the menuPerformer.
-	- startUp the menu - it is supposed to return an actionSelector
-	- if the menuPerformer responds to the selector,
-	  send it to the performer;
-	  otherwise send it to the view (the receiver)
-	  This is funny, it allows additional menuItems to be added
-	  AND still get the views copy/cut/paste functionality.
-	  Without this, you had to redefine and forward all of those
-	  messages in the performer."
+        - ask the receiver for the menu (via #yellowButtonMenu)
+        - ask the receiver for the menuPerformer.
+        - startUp the menu - it is supposed to return an actionSelector
+        - if the menuPerformer responds to the selector,
+          send it to the performer;
+          otherwise send it to the view (the receiver)
+          This is funny, it allows additional menuItems to be added
+          AND still get the view's copy/cut/paste functionality.
+          Without this, you had to redefine and forward all of those
+          messages in the performer."
 
     |menu menuPerformer actionSelector prevReceiver wg|
 
     self middleButtonMenu isNil ifTrue:[
-	"
-	 try ST-80 style menus first:
-	 if there is a model, and a menuMessage is defined,
-	 ask model for the menu and launch that if non-nil.
-	"
-	menu := self yellowButtonMenu.
-	menu notNil ifTrue:[
-	    "
-	     got one, launch the menu. It is supposed
-	     to return an actionSelector.
-	    "
-	    menuPerformer := self menuPerformer value.
-
-	    "/ could be a spec ...
-	    menu isArray ifTrue:[
-		menu := menu decodeAsLiteralArray.
-		menu receiver:menuPerformer.
-		menu findGuiResourcesIn:(self menuHolder).
-	    ] ifFalse:[
-		(menu respondsTo:#receiver) ifTrue:[
-		    menuPerformer := menu receiver ? menuPerformer.
-		].
-	    ].
-
-	    "
-	     a temporary kludge:
-		 pass myself as receiver, the menuPerformer as performer;
-		 the menu will send its messages to either the
-		 menuPerformer or me (its receiver).
-		 This allows for the ST-80 behavior, where some messages
-		 go to the model, others to the view
-		 (copy/cut/paste).
-	    "
-	    (prevReceiver := menu receiver) isNil ifTrue:[
-		"/ kludge for oldStyle menus (MenuView/PopUpMenu)
-		"/ not req'd for real Menus
-		"/ (menu isKindOf:Menu) ifFalse:[
-		(menu respondsTo:#menuPerformer:) ifTrue:[
-		    menu receiver:self.    "/ really ?
-		    menu menuPerformer:menuPerformer.
-		] ifFalse:[
-		"/ ] ifTrue:[
-		    "/ new style menu
-		    menu receiver:menuPerformer.
-		]
-	    ].
-
-	    "/
-	    "/ startup the menu - this returns a selector
-	    "/
-	    actionSelector := self startUpMenu:menu.
-
-	    "/ before doing anything else, redraw expose area from
-	    "/ the menu (in case the action changes my state)
-	    (wg := self windowGroup) notNil ifTrue:[
-		wg processExposeEvents.
-	    ].
-
-	    (actionSelector notNil and:[actionSelector isSymbol]) ifTrue:[
-		self dispatchMenuSelection:actionSelector to: menuPerformer.
-	    ].
-
-	    menu receiver:prevReceiver.
-
-	    ^ self
-	].
+        "
+         try ST-80 style menus first:
+         if there is a model, and a menuMessage is defined,
+         ask model for the menu and launch that if non-nil.
+        "
+        menu := self yellowButtonMenu.
+        menu notNil ifTrue:[
+            "
+             got one, launch the menu. It is supposed
+             to return an actionSelector.
+            "
+            menuPerformer := self menuPerformer value.
+
+            "/ could be a spec ...
+            menu isArray ifTrue:[
+                menu := menu decodeAsLiteralArray.
+                menu receiver:menuPerformer.
+                menu findGuiResourcesIn:(self menuHolder).
+            ] ifFalse:[
+                (menu respondsTo:#receiver) ifTrue:[
+                    menuPerformer := menu receiver ? menuPerformer.
+                ].
+            ].
+
+            "
+             a temporary kludge:
+                 pass myself as receiver, the menuPerformer as performer;
+                 the menu will send its messages to either the
+                 menuPerformer or me (its receiver).
+                 This allows for the ST-80 behavior, where some messages
+                 go to the model, others to the view
+                 (copy/cut/paste).
+            "
+            (prevReceiver := menu receiver) isNil ifTrue:[
+                "/ kludge for oldStyle menus (MenuView/PopUpMenu)
+                "/ not req'd for real Menus
+                "/ (menu isKindOf:Menu) ifFalse:[
+                (menu respondsTo:#menuPerformer:) ifTrue:[
+                    menu receiver:self.    "/ really ?
+                    menu menuPerformer:menuPerformer.
+                ] ifFalse:[
+                "/ ] ifTrue:[
+                    "/ new style menu
+                    menu receiver:menuPerformer.
+                ]
+            ].
+
+            "/
+            "/ startup the menu - this returns a selector
+            "/
+            actionSelector := self startUpMenu:menu.
+
+            "/ before doing anything else, redraw expose area from
+            "/ the menu (in case the action changes my state)
+            (wg := self windowGroup) notNil ifTrue:[
+                wg processExposeEvents.
+            ].
+
+            (actionSelector notNil and:[actionSelector isSymbol]) ifTrue:[
+                self dispatchMenuSelection:actionSelector to: menuPerformer.
+            ].
+
+            menu receiver:prevReceiver.
+
+            ^ self
+        ].
     ].
 
     "/
@@ -9366,7 +9368,7 @@
 !
 
 resources
-    "return the views resources -
+    "return the view's resources -
      that's a ResourcePack containing national language strings"
 
     ^ resources
@@ -9738,11 +9740,11 @@
 
 mapAt:aPoint
     "make the view visible on the screen.
-     For topViews, if aPoint is nonNil, the views origin is located there
+     For topViews, if aPoint is nonNil, the view's origin is located there
      (unless you have a dictator as windowManager ;-)
      Notice:
-	Actually, this method is only valid for topViews;
-	however, it is defined here to allow things like 'Button new realize'"
+        Actually, this method is only valid for topViews;
+        however, it is defined here to allow things like 'Button new realize'"
 
     self mapAt:aPoint iconified:false
 
@@ -9751,65 +9753,65 @@
 
 mapAt:aPoint iconified:iconified
     "make the view visible on the screen.
-     For topViews, if aPoint is nonNil, the views origin is located there
+     For topViews, if aPoint is nonNil, the view's origin is located there
      (unless you have a dictator as windowManager ;-).
      If the iconified argument is true, the window is created as icon initially.
      Notice:
-	Actually, this method is only valid for topViews;
-	however, it is defined here to allow things like 'Button new realize'"
+        Actually, this method is only valid for topViews;
+        however, it is defined here to allow things like 'Button new realize'"
 
     |subs|
 
     realized ifFalse:[
-	self drawableId isNil ifTrue:[
-	    "
-	     first time ?
-	     yes, realize (implies a map)
-	    "
-	    self realizeKeepingGroup:false at:aPoint iconified:iconified
-	] ifFalse:[
-	    "
-	     no, map only
-	    "
-	    realized := true.
-	    aPoint isNil ifTrue:[
-		iconified ifTrue:[
-		    device
-			mapView:self id:self drawableId iconified:iconified
-			atX:0 y:0
-			width:width height:height
-			minExtent:(self minExtent) maxExtent:(self maxExtent).
-		] ifFalse:[
-		    device mapWindow:self drawableId.
-		]
-	    ] ifFalse:[
-		left := aPoint x.
-		top := aPoint y.
-		device
-		    mapView:self id:self drawableId iconified:iconified
-		    atX:left y:top
-		    width:width height:height
-		    minExtent:(self minExtent) maxExtent:(self maxExtent).
-	    ].
-
-	    "/
-	    "/ implies that all realized subviews
-	    "/ are now also mapped
-	    "/
-	    "/ not needed for topViews - the mapped event does exactly the same
-	    "/ however, X does not generate mapped events for non-topViews
-	    "/ when a view gets deiconified.
-
-	    superView notNil ifTrue:[
-		(subs := self subViews) notNil ifTrue:[
-		    subs do:[:v |
-			v realized "shown" ifFalse:[
-			    v mapped
-			]
-		    ]
-		]
-	    ]
-	].
+        self drawableId isNil ifTrue:[
+            "
+             first time ?
+             yes, realize (implies a map)
+            "
+            self realizeKeepingGroup:false at:aPoint iconified:iconified
+        ] ifFalse:[
+            "
+             no, map only
+            "
+            realized := true.
+            aPoint isNil ifTrue:[
+                iconified ifTrue:[
+                    device
+                        mapView:self id:self drawableId iconified:iconified
+                        atX:0 y:0
+                        width:width height:height
+                        minExtent:(self minExtent) maxExtent:(self maxExtent).
+                ] ifFalse:[
+                    device mapWindow:self drawableId.
+                ]
+            ] ifFalse:[
+                left := aPoint x.
+                top := aPoint y.
+                device
+                    mapView:self id:self drawableId iconified:iconified
+                    atX:left y:top
+                    width:width height:height
+                    minExtent:(self minExtent) maxExtent:(self maxExtent).
+            ].
+
+            "/
+            "/ implies that all realized subviews
+            "/ are now also mapped
+            "/
+            "/ not needed for topViews - the mapped event does exactly the same
+            "/ however, X does not generate mapped events for non-topViews
+            "/ when a view gets deiconified.
+
+            superView notNil ifTrue:[
+                (subs := self subViews) notNil ifTrue:[
+                    subs do:[:v |
+                        v realized "shown" ifFalse:[
+                            v mapped
+                        ]
+                    ]
+                ]
+            ]
+        ].
     ]
 
     "Modified: 23.8.1996 / 14:53:55 / stefan"
@@ -10393,19 +10395,19 @@
 invalidate
     "add a damage to redraw the receiver to its input event queue.
      This is preferable to calling redraw directly, in that the drawing is done by
-     the views process itself, and there is a possibilty to merge
+     the view's process itself, and there is a possibilty to merge
      multiple damage rectangles into single redraws.
      However, be aware, that the redrawing may be delayed for some time,
      until the receiver's windowGroupProcess gets rescheduled."
 
     shown ifFalse:[
-	"/ no need to add damage - will get a full-redraw anyway,
-	"/ when I will be shown again.
-	^ self
+        "/ no need to add damage - will get a full-redraw anyway,
+        "/ when I will be shown again.
+        ^ self
     ].
     self
-	invalidateDeviceRectangle:(Rectangle left:0 top:0 width:width height:height)
-	repairNow:false
+        invalidateDeviceRectangle:(Rectangle left:0 top:0 width:width height:height)
+        repairNow:false
 
     "Modified: / 9.11.1998 / 21:04:16 / cg"
 !
@@ -10413,16 +10415,16 @@
 invalidate:aRectangle
     "add a damage to redraw part of the receiver, to its input event queue.
      This is preferable to calling redraw directly,
-     in that the drawing is done by the views process itself,
+     in that the drawing is done by the view's process itself,
      and there is a possibilty to merge multiple damage rectangles into
      single redraws.
      However, be aware, that the redrawing may be delayed for some time,
      intil the receiver's windowGroupProcess gets rescheduled."
 
     shown ifFalse:[
-	"/ no need to add damage - will get a full-redraw anyway,
-	"/ when I will be shown again.
-	^ self
+        "/ no need to add damage - will get a full-redraw anyway,
+        "/ when I will be shown again.
+        ^ self
     ].
     self invalidate:aRectangle repairNow:false
 
--- a/StandardSystemView.st	Fri Nov 18 21:26:33 2016 +0000
+++ b/StandardSystemView.st	Thu Nov 24 21:55:24 2016 +0000
@@ -681,7 +681,7 @@
 !StandardSystemView methodsFor:'accessing-dimensions'!
 
 maxExtent
-    "return the views maximum allowed extent"
+    "return the view's maximum allowed extent"
 
     ^ maxExtent
 !
@@ -718,7 +718,7 @@
 !
 
 minExtent
-    "return the views minimum allowed extent"
+    "return the view's minimum allowed extent"
 
     ^ minExtent
 !
@@ -850,7 +850,7 @@
 !
 
 label
-    "return the views name in the title area"
+    "return the view's name in the title area"
 
     ^ label
 !
@@ -1283,11 +1283,11 @@
 
 printOn:aStream
     "just for your convenience in inspectors ...
-     ... add the views label to the displayString."
+     ... add the view's label to the displayString."
 
     super printOn:aStream.
     label notNil ifTrue:[
-	aStream nextPut:$(.  label printOn:aStream. aStream nextPut:$).
+        aStream nextPut:$(.  label printOn:aStream. aStream nextPut:$).
     ].
 ! !
 
--- a/TopView.st	Fri Nov 18 21:26:33 2016 +0000
+++ b/TopView.st	Thu Nov 24 21:55:24 2016 +0000
@@ -1,5 +1,3 @@
-"{ Encoding: utf8 }"
-
 "
  COPYRIGHT (c) 1995 by Claus Gittinger
 	      All Rights Reserved
@@ -915,7 +913,7 @@
 !
 
 heightIncludingBorder
-    "return the views overall-height"
+    "return the view's overall-height"
 
     ^ height
 !
@@ -1078,7 +1076,7 @@
 !
 
 widthIncludingBorder
-    "return the views overall-width"
+    "return the view's overall-width"
 
     ^ width
 !
--- a/ViewStyle.st	Fri Nov 18 21:26:33 2016 +0000
+++ b/ViewStyle.st	Thu Nov 24 21:55:24 2016 +0000
@@ -307,14 +307,9 @@
 !
 
 isWindowsVistaStyle
-    "answer true if this is a MS-Windows-Vista (or later) style.
-     XXX Currently we simply check the name"
+    ^ (name ? self name) == #winVista
 
-    |nm|
-
-    nm := name ? self name.
-
-    ^ nm == #winVista
+    "Modified (format): / 19-11-2016 / 15:49:48 / cg"
 !
 
 isWindowsXPStyle
--- a/WinWorkstation.st	Fri Nov 18 21:26:33 2016 +0000
+++ b/WinWorkstation.st	Thu Nov 24 21:55:24 2016 +0000
@@ -100,13 +100,15 @@
 #define CACHE_LAST_DC                   /* remember last DC in gcData */
 
 #ifdef CACHE_PEN
-# define NUM_PEN_CACHED       16        /* that many solid pens are globally remembered */
+# define xNUM_PEN_CACHED       16        /* that many solid pens are globally remembered */
+# define NUM_PEN_CACHED       64        /* that many solid pens are globally remembered */
 #else
 # define NUM_PEN_CACHED       0
 #endif
 
 #ifdef CACHE_BRUSH
-# define NUM_BRUSH_CACHED     16         /* that many brushes are globally remembered */
+# define xNUM_BRUSH_CACHED     16         /* that many brushes are globally remembered */
+# define NUM_BRUSH_CACHED     64         /* that many brushes are globally remembered */
 #else
 # define NUM_BRUSH_CACHED     0
 #endif
@@ -1067,7 +1069,8 @@
  * up to NUM_FREE_GC gc's are kept in a local list
  * (away from free/malloc)
  */
-#define NUM_FREE_GC     50
+#define xNUM_FREE_GC     50
+#define NUM_FREE_GC     150
 static struct gcData *gcDataFreeList = (struct gcData *)0;
 static int gcDataNumFree = 0;
 
@@ -9672,37 +9675,37 @@
     r := g := b := 0.
     found := false.
     (colorName startsWith:$#) ifTrue:[
-        "/ color in r/g/b hex notation
-        colorName size == 7 ifTrue:[
-            r := Integer readFrom:(colorName copyFrom:2 to:3) radix:16 onError:[nil].
-            g := Integer readFrom:(colorName copyFrom:4 to:5) radix:16 onError:[nil].
-            b := Integer readFrom:(colorName copyFrom:6 to:7) radix:16 onError:[nil].
-        ].
-        (r isNil or:[g isNil or:[b isNil]]) ifTrue:[^ nil].
-        found := true.
+	"/ color in r/g/b hex notation
+	colorName size == 7 ifTrue:[
+	    r := Integer readFrom:(colorName copyFrom:2 to:3) radix:16 onError:[nil].
+	    g := Integer readFrom:(colorName copyFrom:4 to:5) radix:16 onError:[nil].
+	    b := Integer readFrom:(colorName copyFrom:6 to:7) radix:16 onError:[nil].
+	].
+	(r isNil or:[g isNil or:[b isNil]]) ifTrue:[^ nil].
+	found := true.
     ] ifFalse:[
-        cName := colorName asString.
-        triple := StandardColorValues at:cName ifAbsent:nil.
-        triple isNil ifTrue:[
-            "/ try lowercase name
-            cName := cName asLowercase.
-            triple := StandardColorValues at:cName ifAbsent:nil.
-            triple isNil ifTrue:[
-                "/ try lowercase without intermixed spaces
-                cName := cName asCollectionOfWords asStringWith:nil.
-                triple := StandardColorValues at:cName ifAbsent:nil.
-            ].
-        ].
-        triple notNil ifTrue:[
-            r := triple at:1.
-            g := triple at:2.
-            b := triple at:3.
-            found := true.
-        ].
+	cName := colorName asString.
+	triple := StandardColorValues at:cName ifAbsent:nil.
+	triple isNil ifTrue:[
+	    "/ try lowercase name
+	    cName := cName asLowercase.
+	    triple := StandardColorValues at:cName ifAbsent:nil.
+	    triple isNil ifTrue:[
+		"/ try lowercase without intermixed spaces
+		cName := cName asCollectionOfWords asStringWith:nil.
+		triple := StandardColorValues at:cName ifAbsent:nil.
+	    ].
+	].
+	triple notNil ifTrue:[
+	    r := triple at:1.
+	    g := triple at:2.
+	    b := triple at:3.
+	    found := true.
+	].
     ].
     found ifFalse:[
-        "/ ('WinWorkstation: unknown color: ' , colorName) infoPrintCR.
-        ^ nil.
+	"/ ('WinWorkstation: unknown color: ' , colorName) infoPrintCR.
+	^ nil.
     ].
 
     ^ aBlock value:((r * 256) + r) value:((g * 256) + g) value:((b * 256) + b)
--- a/XWorkstation.st	Fri Nov 18 21:26:33 2016 +0000
+++ b/XWorkstation.st	Thu Nov 24 21:55:24 2016 +0000
@@ -1566,7 +1566,7 @@
 !
 
 ignoreBackingStore:aBoolean
-    "if the argument is true, the views backingStore setting will be ignored, and
+    "if the argument is true, the view's backingStore setting will be ignored, and
      no backing store used - this can be used on servers where backing store is
      very slow or is broken (can be put into display-rc-file)"
 
@@ -1930,6 +1930,22 @@
     "
 !
 
+supportsXftFontsInBitmaps
+    "return true, if XftFonts (nice looking truetype fonts)
+     are supported when drawing into bitmaps on this display.
+     Currently, this does not work, so xft drawing must be disabled when
+     rendering into bitmaps"
+
+     ^ false.
+     "/ ^ self supportsXftFonts
+
+    "
+     Display supportsXftFontsInBitmaps
+     Display hasRenderExtension
+     Display class hasXftLibrary
+    "
+!
+
 suppressShadowViews
     "return true, if this device wants to suppress shadow views
      (i.e. shadows under popups and modalBoxes).
--- a/stx_libview.st	Fri Nov 18 21:26:33 2016 +0000
+++ b/stx_libview.st	Thu Nov 24 21:55:24 2016 +0000
@@ -1,6 +1,6 @@
 "
- COPYRIGHT (c) 2006 by eXept Software AG
-	      All Rights Reserved
+ COPYRIGHT (c) Claus Gittinger / 2006 by eXept Software AG
+              All Rights Reserved
 
  This software is furnished under a license and may be used
  only in accordance with the terms of that license and with the
@@ -24,8 +24,8 @@
 
 copyright
 "
- COPYRIGHT (c) 2006 by eXept Software AG
-	      All Rights Reserved
+ COPYRIGHT (c) Claus Gittinger / 2006 by eXept Software AG
+              All Rights Reserved
 
  This software is furnished under a license and may be used
  only in accordance with the terms of that license and with the
@@ -498,7 +498,9 @@
 companyName
     "Return a companyname which will appear in <lib>.rc"
 
-    ^ 'eXept Software AG'
+    ^ 'Claus Gittinger / eXept Software AG'
+
+    "Modified: / 18-11-2016 / 11:47:54 / cg"
 !
 
 description
@@ -512,9 +514,9 @@
 legalCopyright
     "Return a copyright string which will appear in <lib>.rc"
 
-    ^ 'Copyright Claus Gittinger 1988-2012\nCopyright eXept Software AG 2012'
+    ^ 'Copyright Claus Gittinger 1988\nCopyright eXept Software AG 2012'
 
-    "Modified: / 18-07-2012 / 19:12:02 / cg"
+    "Modified: / 18-11-2016 / 12:19:05 / cg"
 !
 
 productName
--- a/styles/macosx.style	Fri Nov 18 21:26:33 2016 +0000
+++ b/styles/macosx.style	Thu Nov 24 21:55:24 2016 +0000
@@ -291,3 +291,4 @@
 activeHelp.borderColor           (Color grey:70)
 activeHelp.font                  (Font family:'helvetica' face:'roman' style:'bold' size:14)
 
+dialogBox.okAtLeft                 true