Merge jv
authorMerge Script
Fri, 06 May 2016 06:55:08 +0200
branchjv
changeset 16459 85d703589d34
parent 16445 6bc184e74f9c (current diff)
parent 16458 d94f4a87e747 (diff)
child 16570 dc5e958a20dc
Merge
AbstractLauncherApplication.st
Make.proto
SystemBrowser.st
Tools__NewSystemBrowser.st
Tools__SearchDialog.st
bc.mak
libtool.rc
stx_libtool.st
--- a/AbstractLauncherApplication.st	Thu May 05 06:48:38 2016 +0200
+++ b/AbstractLauncherApplication.st	Fri May 06 06:55:08 2016 +0200
@@ -2200,10 +2200,11 @@
 bringWindow:aWindow intoBounds:bounds
     "shift & resize a view to be completely inside bounds."
 
-    |oldOrg newOrg oldCorner newCorner delta|
+    |topView oldOrg newOrg oldCorner newCorner delta|
     
-    oldOrg := newOrg := aWindow topView origin.
-    oldCorner := newCorner := aWindow topView corner. 
+    topView := aWindow topView.
+    oldOrg := newOrg := topView origin.
+    oldCorner := newCorner := topView corner. 
 
     (bounds containsPoint:oldOrg) ifFalse:[
         newOrg := bounds origin + (10@10).
@@ -2220,25 +2221,28 @@
             ].
         ].
     ].
-    aWindow topView 
+    topView 
         raiseDeiconified;
         origin:newOrg corner:newCorner.
 !
 
-bringWindowOntoScreen:aWindow
+bringWindowOntoScreen:aWindow 
     "shift & resize a view to be visible.
      If there are multiple screens,bring them all onto the screen where the launcher is"
-
-    |allBounds bounds|
-        
-    allBounds := self device monitorBoundsAt:aWindow center.
-    allBounds size > 0 ifTrue:[
-        bounds := allBounds detect:[:bounds | bounds containsPoint:self window center] ifNone:nil.
+    
+    |allBounds bounds myDevice|
+
+    myDevice := self device.
+    allBounds := myDevice monitorBoundsAt:aWindow center.
+    allBounds notEmptyOrNil ifTrue:[
+        bounds := allBounds 
+                detect:[:bounds | bounds containsPoint:self window center ]
+                ifNone:[ nil ].
     ].
     bounds isNil ifTrue:[
-        bounds := 0@0 extent:self device usableExtent.
-    ].
-    self bringWindow:aWindow intoBounds:bounds.
+        bounds := 0@0 extent:myDevice usableExtent.
+    ].
+    self bringWindow:aWindow intoBounds:bounds
 !
 
 deIconifyAllWindows
@@ -2310,18 +2314,16 @@
 fullScreenHardcopy
     "after a second (to allow redraw of views under menu ...),
      save the contents of the whole screen."
-
-    self window sensor ctrlDown ifTrue:[
+    
+    |mySensor|
+
+    mySensor := self window sensor.
+    mySensor ctrlDown ifTrue:[
         ^ self fullScreenHardcopyUngrabbed
     ].
-
-    Processor
-        addTimedBlock:[
-                        self
-                            saveScreenImage:(Image fromScreen)
-                            defaultName:'screen'
-                      ]
-        afterSeconds:(self window sensor shiftDown ifTrue:5 ifFalse:1)
+    Processor 
+        addTimedBlock:[ self saveScreenImage:(Image fromScreen) defaultName:'screen' ]
+        afterSeconds:(mySensor shiftDown ifTrue:5 ifFalse:1)
 !
 
 fullScreenHardcopyUngrabbed
@@ -2541,7 +2543,8 @@
 !
 
 viewBrowse
-    "let user pick a view and browse its Application class. Only smalltalk views are allowed"
+    "let user pick a view and browse its Application class. 
+     Of course, only smalltalk views are allowed"
 
     |v app appClass browser|
 
@@ -2608,18 +2611,19 @@
 !
 
 viewInspect
-    "let user pick a view and inspect it. Only smalltalk views are allowed"
+    "let user pick a view and inspect it. 
+     Of course, only smalltalk views are allowed"
 
     |v|
 
     (v := self pickAView) notNil ifTrue:[
         v inspect
     ]
-
 !
 
 viewMigrate
-    "let user pick a view and migrate it to some other display"
+    "let user pick a view and migrate it to some other display.
+     Only smalltalk views are allowed"
 
     |v|
 
@@ -2631,7 +2635,7 @@
 viewSelectAndShrink
     "let user pick a view and shrink it to a reasonable size
      Added for stupid mac, to get windows back onto the screen,
-     which have their resize handle hidden."
+     which have their resize handle hidden or unreachable."
 
     |v|
 
@@ -2647,12 +2651,13 @@
      let user specify a widget and save its contents."
 
     Processor
-        addTimedBlock:[
-                        |v|
-                        (v := Screen current viewFromUser) notNil ifTrue:[
-                            self saveScreenImage:(Image fromView:v) defaultName:'hardcopy'
-                        ]
-                      ]
+        addTimedBlock:
+            [
+                |v|
+                (v := Screen current viewFromUser) notNil ifTrue:[
+                    self saveScreenImage:(Image fromView:v) defaultName:'hardcopy'
+                ]
+            ]
         afterSeconds:(self window sensor shiftDown ifTrue:5 ifFalse:1)
 
     "Created: / 21.8.1998 / 20:44:12 / cg"
--- a/Make.proto	Thu May 05 06:48:38 2016 +0200
+++ b/Make.proto	Fri May 06 06:55:08 2016 +0200
@@ -334,7 +334,7 @@
 $(OUTDIR)Tools__HierarchicalChangeList.$(O) Tools__HierarchicalChangeList.$(C) Tools__HierarchicalChangeList.$(H): Tools__HierarchicalChangeList.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libtool/Tools__BrowserList.$(H) $(INCLUDE_TOP)/stx/libtool/Tools__BrowserListWithFilter.$(H) $(INCLUDE_TOP)/stx/libtool/Tools__ChangeList.$(H) $(INCLUDE_TOP)/stx/libtool/Tools__NavigatorModel.$(H) $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(STCHDR)
 $(OUTDIR)Tools__HierarchicalPackageFilterList.$(O) Tools__HierarchicalPackageFilterList.$(C) Tools__HierarchicalPackageFilterList.$(H): Tools__HierarchicalPackageFilterList.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libtool/Tools__BrowserList.$(H) $(INCLUDE_TOP)/stx/libtool/Tools__HierarchicalProjectList.$(H) $(INCLUDE_TOP)/stx/libtool/Tools__NavigatorModel.$(H) $(INCLUDE_TOP)/stx/libtool/Tools__ProjectList.$(H) $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(INCLUDE_TOP)/stx/libwidg2/AbstractHierarchicalItem.$(H) $(INCLUDE_TOP)/stx/libwidg2/HierarchicalItem.$(H) $(INCLUDE_TOP)/stx/libwidg2/HierarchicalItemWithLabel.$(H) $(STCHDR)
 $(OUTDIR)Tools__InheritanceClassList.$(O) Tools__InheritanceClassList.$(C) Tools__InheritanceClassList.$(H): Tools__InheritanceClassList.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libtool/Tools__BrowserList.$(H) $(INCLUDE_TOP)/stx/libtool/Tools__ClassList.$(H) $(INCLUDE_TOP)/stx/libtool/Tools__HierarchicalClassList.$(H) $(INCLUDE_TOP)/stx/libtool/Tools__NavigatorModel.$(H) $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(STCHDR)
-$(OUTDIR)extensions.$(O): extensions.st $(INCLUDE_TOP)/stx/libbasic/AbstractTime.$(H) $(INCLUDE_TOP)/stx/libbasic/ArithmeticValue.$(H) $(INCLUDE_TOP)/stx/libbasic/ArrayedCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/Autoload.$(H) $(INCLUDE_TOP)/stx/libbasic/Bag.$(H) $(INCLUDE_TOP)/stx/libbasic/Behavior.$(H) $(INCLUDE_TOP)/stx/libbasic/Block.$(H) $(INCLUDE_TOP)/stx/libbasic/Boolean.$(H) $(INCLUDE_TOP)/stx/libbasic/ByteArray.$(H) $(INCLUDE_TOP)/stx/libbasic/Character.$(H) $(INCLUDE_TOP)/stx/libbasic/CharacterArray.$(H) $(INCLUDE_TOP)/stx/libbasic/Class.$(H) $(INCLUDE_TOP)/stx/libbasic/ClassDescription.$(H) $(INCLUDE_TOP)/stx/libbasic/Collection.$(H) $(INCLUDE_TOP)/stx/libbasic/CompiledCode.$(H) $(INCLUDE_TOP)/stx/libbasic/Date.$(H) $(INCLUDE_TOP)/stx/libbasic/Dictionary.$(H) $(INCLUDE_TOP)/stx/libbasic/Error.$(H) $(INCLUDE_TOP)/stx/libbasic/Exception.$(H) $(INCLUDE_TOP)/stx/libbasic/ExecutableFunction.$(H) $(INCLUDE_TOP)/stx/libbasic/Filename.$(H) $(INCLUDE_TOP)/stx/libbasic/GenericException.$(H) $(INCLUDE_TOP)/stx/libbasic/Geometric.$(H) $(INCLUDE_TOP)/stx/libbasic/IdentityDictionary.$(H) $(INCLUDE_TOP)/stx/libbasic/Integer.$(H) $(INCLUDE_TOP)/stx/libbasic/Interval.$(H) $(INCLUDE_TOP)/stx/libbasic/KeyedCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/LibraryDefinition.$(H) $(INCLUDE_TOP)/stx/libbasic/LimitedPrecisionReal.$(H) $(INCLUDE_TOP)/stx/libbasic/Magnitude.$(H) $(INCLUDE_TOP)/stx/libbasic/Method.$(H) $(INCLUDE_TOP)/stx/libbasic/MethodDictionary.$(H) $(INCLUDE_TOP)/stx/libbasic/NameSpace.$(H) $(INCLUDE_TOP)/stx/libbasic/Notification.$(H) $(INCLUDE_TOP)/stx/libbasic/Number.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/OrderedCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/Point.$(H) $(INCLUDE_TOP)/stx/libbasic/ProgrammingLanguage.$(H) $(INCLUDE_TOP)/stx/libbasic/ProjectDefinition.$(H) $(INCLUDE_TOP)/stx/libbasic/Query.$(H) $(INCLUDE_TOP)/stx/libbasic/ReadOnlySequenceableCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/Rectangle.$(H) $(INCLUDE_TOP)/stx/libbasic/SequenceableCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/Set.$(H) $(INCLUDE_TOP)/stx/libbasic/SharedPool.$(H) $(INCLUDE_TOP)/stx/libbasic/SmallInteger.$(H) $(INCLUDE_TOP)/stx/libbasic/Smalltalk.$(H) $(INCLUDE_TOP)/stx/libbasic/SmalltalkLanguage.$(H) $(INCLUDE_TOP)/stx/libbasic/StandaloneStartup.$(H) $(INCLUDE_TOP)/stx/libbasic/String.$(H) $(INCLUDE_TOP)/stx/libbasic/StringCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/Symbol.$(H) $(INCLUDE_TOP)/stx/libbasic/Timestamp.$(H) $(INCLUDE_TOP)/stx/libbasic/UndefinedObject.$(H) $(INCLUDE_TOP)/stx/libbasic/UninterpretedBytes.$(H) $(INCLUDE_TOP)/stx/libbasic/UserNotification.$(H) $(INCLUDE_TOP)/stx/libbasic/UserPreferences.$(H) $(INCLUDE_TOP)/stx/libbasic/Warning.$(H) $(INCLUDE_TOP)/stx/libbasic2/Iterator.$(H) $(INCLUDE_TOP)/stx/libbasic2/RunArray.$(H) $(INCLUDE_TOP)/stx/libbasic2/SocketAddress.$(H) $(INCLUDE_TOP)/stx/libbasic2/Text.$(H) $(INCLUDE_TOP)/stx/libbasic2/UUID.$(H) $(INCLUDE_TOP)/stx/libbasic3/Change.$(H) $(INCLUDE_TOP)/stx/libbasic3/ChangeSet.$(H) $(INCLUDE_TOP)/stx/libbasic3/CompositeChange.$(H) $(INCLUDE_TOP)/stx/libbasic3/ProfileTree.$(H) $(INCLUDE_TOP)/stx/libcomp/AbstractSyntaxHighlighter.$(H) $(INCLUDE_TOP)/stx/libcomp/Breakpoint.$(H) $(INCLUDE_TOP)/stx/libcomp/BreakpointDescription.$(H) $(INCLUDE_TOP)/stx/libcomp/Explainer.$(H) $(INCLUDE_TOP)/stx/libcomp/Parser.$(H) $(INCLUDE_TOP)/stx/libcomp/Scanner.$(H) $(INCLUDE_TOP)/stx/libview/Color.$(H) $(INCLUDE_TOP)/stx/libview/DeviceGraphicsContext.$(H) $(INCLUDE_TOP)/stx/libview/DisplaySurface.$(H) $(INCLUDE_TOP)/stx/libview/Form.$(H) $(INCLUDE_TOP)/stx/libview/GraphicsContext.$(H) $(INCLUDE_TOP)/stx/libview/GraphicsMedium.$(H) $(INCLUDE_TOP)/stx/libview/Image.$(H) $(INCLUDE_TOP)/stx/libview/PopUpView.$(H) $(INCLUDE_TOP)/stx/libview/SimpleView.$(H) $(INCLUDE_TOP)/stx/libview/TopView.$(H) $(INCLUDE_TOP)/stx/libview/View.$(H) $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(INCLUDE_TOP)/stx/libview2/MultiImage.$(H) $(INCLUDE_TOP)/stx/libwidg/EditTextView.$(H) $(INCLUDE_TOP)/stx/libwidg/GenericToolbarIconLibrary.$(H) $(INCLUDE_TOP)/stx/libwidg/ListView.$(H) $(INCLUDE_TOP)/stx/libwidg/MenuView.$(H) $(INCLUDE_TOP)/stx/libwidg/PopUpMenu.$(H) $(INCLUDE_TOP)/stx/libwidg/SelectionInListView.$(H) $(INCLUDE_TOP)/stx/libwidg/TextView.$(H) $(INCLUDE_TOP)/stx/libwidg2/ListModelView.$(H) $(INCLUDE_TOP)/stx/libwidg2/SelectionInListModelView.$(H) $(STCHDR)
+$(OUTDIR)extensions.$(O): extensions.st $(INCLUDE_TOP)/stx/libbasic/AbstractTime.$(H) $(INCLUDE_TOP)/stx/libbasic/ArithmeticValue.$(H) $(INCLUDE_TOP)/stx/libbasic/ArrayedCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/Autoload.$(H) $(INCLUDE_TOP)/stx/libbasic/Bag.$(H) $(INCLUDE_TOP)/stx/libbasic/Behavior.$(H) $(INCLUDE_TOP)/stx/libbasic/Block.$(H) $(INCLUDE_TOP)/stx/libbasic/Boolean.$(H) $(INCLUDE_TOP)/stx/libbasic/ByteArray.$(H) $(INCLUDE_TOP)/stx/libbasic/Character.$(H) $(INCLUDE_TOP)/stx/libbasic/CharacterArray.$(H) $(INCLUDE_TOP)/stx/libbasic/Class.$(H) $(INCLUDE_TOP)/stx/libbasic/ClassDescription.$(H) $(INCLUDE_TOP)/stx/libbasic/Collection.$(H) $(INCLUDE_TOP)/stx/libbasic/CompiledCode.$(H) $(INCLUDE_TOP)/stx/libbasic/Date.$(H) $(INCLUDE_TOP)/stx/libbasic/Dictionary.$(H) $(INCLUDE_TOP)/stx/libbasic/Error.$(H) $(INCLUDE_TOP)/stx/libbasic/Exception.$(H) $(INCLUDE_TOP)/stx/libbasic/ExecutableFunction.$(H) $(INCLUDE_TOP)/stx/libbasic/Filename.$(H) $(INCLUDE_TOP)/stx/libbasic/GenericException.$(H) $(INCLUDE_TOP)/stx/libbasic/Geometric.$(H) $(INCLUDE_TOP)/stx/libbasic/IdentityDictionary.$(H) $(INCLUDE_TOP)/stx/libbasic/Integer.$(H) $(INCLUDE_TOP)/stx/libbasic/Interval.$(H) $(INCLUDE_TOP)/stx/libbasic/KeyedCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/LibraryDefinition.$(H) $(INCLUDE_TOP)/stx/libbasic/LimitedPrecisionReal.$(H) $(INCLUDE_TOP)/stx/libbasic/Magnitude.$(H) $(INCLUDE_TOP)/stx/libbasic/Method.$(H) $(INCLUDE_TOP)/stx/libbasic/MethodDictionary.$(H) $(INCLUDE_TOP)/stx/libbasic/NameSpace.$(H) $(INCLUDE_TOP)/stx/libbasic/Notification.$(H) $(INCLUDE_TOP)/stx/libbasic/Number.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/OrderedCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/Point.$(H) $(INCLUDE_TOP)/stx/libbasic/ProgrammingLanguage.$(H) $(INCLUDE_TOP)/stx/libbasic/ProjectDefinition.$(H) $(INCLUDE_TOP)/stx/libbasic/Query.$(H) $(INCLUDE_TOP)/stx/libbasic/ReadOnlySequenceableCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/Rectangle.$(H) $(INCLUDE_TOP)/stx/libbasic/SequenceableCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/Set.$(H) $(INCLUDE_TOP)/stx/libbasic/SharedPool.$(H) $(INCLUDE_TOP)/stx/libbasic/SmallInteger.$(H) $(INCLUDE_TOP)/stx/libbasic/Smalltalk.$(H) $(INCLUDE_TOP)/stx/libbasic/SmalltalkLanguage.$(H) $(INCLUDE_TOP)/stx/libbasic/StandaloneStartup.$(H) $(INCLUDE_TOP)/stx/libbasic/String.$(H) $(INCLUDE_TOP)/stx/libbasic/StringCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/Symbol.$(H) $(INCLUDE_TOP)/stx/libbasic/Timestamp.$(H) $(INCLUDE_TOP)/stx/libbasic/UndefinedObject.$(H) $(INCLUDE_TOP)/stx/libbasic/UninterpretedBytes.$(H) $(INCLUDE_TOP)/stx/libbasic/UserNotification.$(H) $(INCLUDE_TOP)/stx/libbasic/UserPreferences.$(H) $(INCLUDE_TOP)/stx/libbasic/Warning.$(H) $(INCLUDE_TOP)/stx/libbasic2/Iterator.$(H) $(INCLUDE_TOP)/stx/libbasic2/RunArray.$(H) $(INCLUDE_TOP)/stx/libbasic2/SocketAddress.$(H) $(INCLUDE_TOP)/stx/libbasic2/Text.$(H) $(INCLUDE_TOP)/stx/libbasic2/UUID.$(H) $(INCLUDE_TOP)/stx/libbasic3/Change.$(H) $(INCLUDE_TOP)/stx/libbasic3/ChangeSet.$(H) $(INCLUDE_TOP)/stx/libbasic3/CompositeChange.$(H) $(INCLUDE_TOP)/stx/libbasic3/ProfileTree.$(H) $(INCLUDE_TOP)/stx/libcomp/AbstractSyntaxHighlighter.$(H) $(INCLUDE_TOP)/stx/libcomp/Breakpoint.$(H) $(INCLUDE_TOP)/stx/libcomp/BreakpointDescription.$(H) $(INCLUDE_TOP)/stx/libcomp/Parser.$(H) $(INCLUDE_TOP)/stx/libcomp/Scanner.$(H) $(INCLUDE_TOP)/stx/libview/Color.$(H) $(INCLUDE_TOP)/stx/libview/DeviceGraphicsContext.$(H) $(INCLUDE_TOP)/stx/libview/DisplaySurface.$(H) $(INCLUDE_TOP)/stx/libview/Form.$(H) $(INCLUDE_TOP)/stx/libview/GraphicsContext.$(H) $(INCLUDE_TOP)/stx/libview/GraphicsMedium.$(H) $(INCLUDE_TOP)/stx/libview/Image.$(H) $(INCLUDE_TOP)/stx/libview/PopUpView.$(H) $(INCLUDE_TOP)/stx/libview/SimpleView.$(H) $(INCLUDE_TOP)/stx/libview/TopView.$(H) $(INCLUDE_TOP)/stx/libview/View.$(H) $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(INCLUDE_TOP)/stx/libview2/MultiImage.$(H) $(INCLUDE_TOP)/stx/libwidg/EditTextView.$(H) $(INCLUDE_TOP)/stx/libwidg/GenericToolbarIconLibrary.$(H) $(INCLUDE_TOP)/stx/libwidg/ListView.$(H) $(INCLUDE_TOP)/stx/libwidg/MenuView.$(H) $(INCLUDE_TOP)/stx/libwidg/PopUpMenu.$(H) $(INCLUDE_TOP)/stx/libwidg/SelectionInListView.$(H) $(INCLUDE_TOP)/stx/libwidg/TextView.$(H) $(INCLUDE_TOP)/stx/libwidg2/ListModelView.$(H) $(INCLUDE_TOP)/stx/libwidg2/SelectionInListModelView.$(H) $(STCHDR)
 
 # ENDMAKEDEPEND --- do not remove this line
 
--- a/SystemBrowser.st	Thu May 05 06:48:38 2016 +0200
+++ b/SystemBrowser.st	Fri May 06 06:55:08 2016 +0200
@@ -2594,7 +2594,9 @@
 !SystemBrowser class methodsFor:'special search startup'!
 
 allCallsOn:aSelectorString
-    "return a collection of methods which send aSelector."
+    "return a collection of methods which send aSelector.
+     This takes some time, because source code is parsed to see
+     if there is really a message send inside (and not just a symbol reference)"
 
     ^ self 
         allCallsOn:aSelectorString 
@@ -2603,7 +2605,9 @@
         match:false
 
     "
-     SystemBrowser allCallsOn:#at:put:
+     Time millisecondsToRun:[
+         SystemBrowser allCallsOn:#at:put:
+     ].            
     "
 
     "Created: 24.1.1997 / 19:42:57 / cg"
@@ -5666,103 +5670,100 @@
     "Modified: / 24-07-2011 / 09:50:30 / cg"
 !
 
-searchBlockForString:aString ignoreCase:ignoreCase match:doMatch
+searchBlockForString:aString ignoreCase:ignoreCase match:doMatchArg
     "return a block to search for a string."
 
-    |searchBlock s lcString|
-
-    (doMatch and:[ aString includesMatchCharacters ]) ifTrue:[
-        s := '*' , aString , '*'.
+    |checkBlock pattern doMatch|
+
+    doMatch := doMatchArg.
+    aString includesMatchCharacters ifFalse:[
+        doMatch := false.
+    ].    
+    doMatch ifTrue:[
         "a matchString"
-        searchBlock := [:c :m :sel | 
-                            |src|       
-                            src := m source.
-                            src isNil ifTrue:[
-                                ('Browser [info]: no source for ' , m printString) infoPrintCR.
-                                false
-                            ] ifFalse:[
-                                s match:src caseSensitive:ignoreCase not
-                            ]
-                       ]
+        pattern := aString.    
+        aString first == $* ifFalse:[
+            pattern := '*',pattern
+        ].    
+        aString last == $* ifFalse:[
+            pattern := pattern,'*'
+        ].
+        ignoreCase ifTrue:[
+            checkBlock := [:src | pattern match:src caseSensitive:false]
+        ] ifFalse:[    
+            checkBlock := [:src | pattern match:src caseSensitive:true]
+        ]
     ] ifFalse:[
         ignoreCase ifTrue:[
-            lcString := aString asLowercase.
-            searchBlock := 
-                [:c :m :sel | 
-                    |src|
-
-                    src := m source.
-                    src isNil ifTrue:[
-                        ('Browser [info]: no source for ' , m printString) infoPrintCR.
-                        false
-                    ] ifFalse:[
-                        (src asLowercase findString:lcString caseSensitive:true) ~~ 0
-                    ]
-               ]
+            checkBlock := [:src | src includesString:aString caseSensitive:false]
         ] ifFalse:[
-            searchBlock := 
-                [:c :m :sel | 
-                    |src|
-
-                    src := m source.
-                    src isNil ifTrue:[
-                        ('Browser [info]: no source for ' , m printString) infoPrintCR.
-                        false
-                    ] ifFalse:[
-                        (src findString:aString caseSensitive:ignoreCase not) ~~ 0
-                    ]
-               ]
-        ].
+            checkBlock := [:src | src includesString:aString caseSensitive:true]
+        ].    
     ].
-    ^ searchBlock.
+    ^ [:cls :mthd :sel | 
+        |src|
+
+        src := mthd source.
+        src isNil ifTrue:[
+            ('Browser [info]: no source for ' , mthd printString) infoPrintCR.
+            false
+        ] ifFalse:[
+            checkBlock value:src
+        ]
+      ]
 
     "
      SystemBrowser findString:'should'   in:(Array with:Object) ignoreCase:false
     "
 !
 
-searchBlockForStringLiteral:aString ignoreCase:ignoreCase match:doMatch
+searchBlockForStringLiteral:aString ignoreCase:ignoreCase match:doMatchArg
     "return a block to search for a string-literal."
 
-    |searchBlock s|
-
-    (doMatch and:[ aString includesMatchCharacters]) ifTrue:[
-        s := '*' , aString , '*'.
+    |pattern s doMatch checkLiteral|
+
+    aString isEmpty ifTrue:[^ [:cls :mthd :sel | true ]].
+    
+    doMatch := doMatchArg.
+    (aString includesMatchCharacters) ifFalse:[
+        doMatch := false
+    ].
+    doMatch ifTrue:[
         "a matchString"
-        searchBlock := [:c :m :sel | 
-                            |lits|       
-                            lits := m literals ? #().
-                            lits contains:[:lit |
-                                lit isString
-                                and:[lit isSymbol not
-                                and:[s match:lit caseSensitive:ignoreCase not]]
-                            ]
-                       ]
+        pattern := aString.    
+        aString first == $* ifFalse:[
+            pattern := '*',pattern
+        ].    
+        aString last == $* ifFalse:[
+            pattern := pattern,'*'
+        ].
+        checkLiteral := 
+            [:lit |
+                lit isString
+                and:[lit isSymbol not
+                and:[s match:lit caseSensitive:ignoreCase not]]
+            ]
     ] ifFalse:[
         ignoreCase ifTrue:[
-            s := aString asLowercase.
-            searchBlock := [:c :m :sel | 
-                                |lits|       
-                                lits := m literals ? #().
-                                lits contains:[:lit |
-                                    lit isString
-                                    and:[lit isSymbol not
-                                    and:[s = lit asLowercase]]
-                                ]
-                           ]
+            checkLiteral :=
+                [:lit |
+                    lit isString
+                    and:[lit isSymbol not
+                    and:[lit includesString:aString caseSensitive:true]]
+                ]
         ] ifFalse:[
-            searchBlock := [:c :m :sel | 
-                                |lits|       
-                                lits := m literals ? #().
-                                lits contains:[:lit |
-                                    lit isString
-                                    and:[lit isSymbol not
-                                    and:[s = lit]]
-                                ]
-                           ]
-        ].
+            checkLiteral :=
+                [:lit |
+                    lit isString
+                    and:[lit isSymbol not
+                    and:[lit includesString:aString]]
+                ]
+        ].    
     ].
-    ^ searchBlock.
+        
+    ^ [:cls :mthd :sel | 
+        (mthd literalsDetect:checkLiteral ifNone:[nil]) notNil
+      ]
 
     "
      SystemBrowser findStringLiteral:'error' in:(Array with:Object) ignoreCase:true match:true
@@ -6280,7 +6281,8 @@
     "return all instance- (if wantInst is true) and/or classmethods (if wantClass is true) 
      from classes in aCollectionOfClasses, where aBlock evaluates to true."
 
-    |list checkedClasses checkBlock nClasses nClassesDone oldPercentage newPercentage|
+    |list checkedClasses checkBlock nClasses 
+     nClassesDone oldPercentage newPercentage nClassesSinceLastPercentage bulkSize|
 
     checkedClasses := IdentitySet new.
     list := OrderedCollection new.
@@ -6311,9 +6313,13 @@
     nClasses := aCollectionOfClasses size.
     nClassesDone := 0.
     oldPercentage := 0.
+    nClassesSinceLastPercentage := 0.
+    bulkSize := (nClasses // 30) max:10. "/ roughly every 3%.
     
     aCollectionOfClasses do:[:aClass |
         (aClass notNil and:[aClass isObsolete not]) ifTrue:[
+            nClassesSinceLastPercentage := nClassesSinceLastPercentage + 1.
+            
             "
              output disabled - it slows down things too much (when searching for
              implementors or senders)
@@ -6326,13 +6332,14 @@
 "/                Transcript show:'searching '; show:aClass class name; showCR:' ...'; endEntry.
                 checkBlock value:(aClass class)
             ].
-            nClassesDone > 5 ifTrue:[
+            nClassesSinceLastPercentage > bulkSize ifTrue:[
                 "/ Processor yield
                 newPercentage := nClassesDone * 100 // nClasses.
                 newPercentage ~= oldPercentage ifTrue:[
                     ProgressNotification progressPercentage:newPercentage.
                     oldPercentage := newPercentage.
                 ].
+                nClassesSinceLastPercentage := 0.
             ].
         ].
         nClassesDone := nClassesDone + 1.
--- a/Tools__NewSystemBrowser.st	Thu May 05 06:48:38 2016 +0200
+++ b/Tools__NewSystemBrowser.st	Fri May 06 06:55:08 2016 +0200
@@ -6001,7 +6001,7 @@
 
     <resource: #menu>
 
-    ^
+    ^ 
      #(Menu
         (
          (MenuItem
@@ -6031,7 +6031,7 @@
           )
          (MenuItem
             label: 'Classes'
-            submenu:
+            submenu: 
            (Menu
               (
                (MenuItem
@@ -6174,6 +6174,17 @@
                   label: '-'
                 )
                (MenuItem
+                  label: 'Pick a View, Browse its Application Class'
+                  itemValue: pickViewAndBrowseApplicationClass
+                )
+               (MenuItem
+                  label: 'Pick a View, Browse Widget''s Class'
+                  itemValue: pickViewAndBrowseViewClass
+                )
+               (MenuItem
+                  label: '-'
+                )
+               (MenuItem
                   label: 'Special'
                   submenuChannel: specialBrowseMenu
                 )
@@ -6228,7 +6239,7 @@
           )
          (MenuItem
             label: 'Methods'
-            submenu:
+            submenu: 
            (Menu
               (
                (MenuItem
@@ -26305,7 +26316,8 @@
     self
         askForMethodAndSpawnSearchTitle:'String to Search for in Sources:'
         browserLabel:'Methods containing "%1"'
-        searchWith:#( #'findString:in:ignoreCase:match:' #'findString:inMethods:ignoreCase:match:' )
+        searchWith:#( #'findString:in:ignoreCase:match:' #'findString:inMethods:ignoreCase:match:' 
+                      #'findStringLiteral:in:ignoreCase:match:' #'findStringLiteral:inMethods:ignoreCase:match:' )
         searchWhat:#string
         searchArea:whereDefault
         withCaseIgnore:true
@@ -27200,6 +27212,34 @@
     ^ classes asOrderedCollection
 !
 
+pickViewAndBrowseApplicationClass
+    "let user click on a view, then browse its appliction class"
+
+    |view app|
+
+    view := Screen current viewFromUser.
+    view isNil ifTrue:[^ self].
+    (app := view application) isNil ifTrue:[
+        (app := view topView application) isNil ifTrue:[
+            Dialog information:'Neither widget nor its topview have an application'.
+            ^ self
+        ].
+    ].
+    self createBuffer.
+    self switchToClass:app class selector:nil updateHistory:false.
+!
+
+pickViewAndBrowseWidgetClass
+    "let user click on a view, then browse its class"
+
+    |view|
+
+    view := Screen current viewFromUser.
+    view isNil ifTrue:[^ self].
+    self createBuffer.
+    self switchToClass:view class selector:nil updateHistory:false.
+!
+
 spawnClassDocumentationBrowserIn:where
     "browse documentation;
         where is: #newBrowser - open a new browser
@@ -37660,7 +37700,7 @@
 !
 
 codeMenuFormat
-    "format (prettyPrint) the selected method(s)"
+    "format (prettyPrint) the selected method(s) and accept"
 
     |modifiedBefore|
 
@@ -38749,7 +38789,8 @@
 !
 
 formatCode
-    "format (prettyPrint) the selected method's code"
+    "format (prettyPrint) the selected method's code.
+     Does not accept, so caller can decide"
 
     |tree newText mthd codeView|
 
@@ -38775,7 +38816,8 @@
     codeView
         undoableDo:[ codeView replaceContentsWith:newText ]
         info:'Format'.
-    codeView modified:true.
+    "/ codeView modified:true.
+    navigationState modified:true.
     navigationState realModifiedState:true.
     ^ newText.
 !
@@ -49214,7 +49256,7 @@
     |label|
 
     self withSearchCursorDo:[
-        |cachedList newBrowser theSingleSelector searchBlock|
+        |cachedList newBrowser theSingleSelector searchBlock answer|
 
         aSelectorCollection size == 1 ifTrue:[
             theSingleSelector := aSelectorCollection first.
@@ -49223,36 +49265,40 @@
             label := resources string:labelPrefix.
         ].
 
-        searchBlock := [
-                            |l|
-
-                            cachedList notNil ifTrue:[
-                                l := cachedList.
-                                cachedList := nil
-                            ] ifFalse:[
-                                l := IdentitySet new.
-                                aSelectorCollection do:[:aSelector |
-                                    l addAll:(self class
-                                                    findSendersOf:aSelector
-                                                    in:setOfClasses
-                                                    ignoreCase:false
-                                                    match:false
-                                                )
-                                ].
-                                l := l asOrderedCollection
-                            ].
-                            l
-                       ].
+        searchBlock := 
+            [
+                |l|
+
+                cachedList notNil ifTrue:[
+                    l := cachedList.
+                    cachedList := nil
+                ] ifFalse:[
+                    l := IdentitySet new.
+                    aSelectorCollection do:[:aSelector |
+                        l addAll:(self class
+                                        findSendersOf:aSelector in:setOfClasses
+                                        ignoreCase:false match:false
+                                    )
+                    ].
+                    l := l asOrderedCollection
+                ].
+                l
+           ].
 
         theSingleSelector notNil ifTrue:[
             cachedList := searchBlock value.
             cachedList size == 0 ifTrue:[
-                (Dialog
-                    confirm:(label , (resources string:' - none found'))
-                    yesLabel:(resources string:'Show Implementors') noLabel:'OK'
-                    initialAnswer:false
-                ) ifTrue:[
-                    self spawnMethodImplementorsBrowserFor:aSelectorCollection in:openHow
+                answer := Dialog
+                    confirmWithCancel:(label , (resources string:' - none found'))
+                    labels:(resources array: #('Cancel' 'Search String' 'Show Implementors'))
+                    values:#(nil #string #implementors)
+                    default:nil.
+                (answer == #string) ifTrue:[
+                    self spawnMethodStringSearchBrowserFor:aSelectorCollection in:openHow
+                ] ifFalse:[
+                    (answer == #implementors) ifTrue:[
+                        self spawnMethodImplementorsBrowserFor:aSelectorCollection in:openHow
+                    ].
                 ].
                 ^ self
             ].
@@ -49278,6 +49324,73 @@
     "Created: / 05-09-2006 / 10:43:21 / cg"
 !
 
+spawnMethodStringSearchBrowserFor:aStringCollection in:openHow
+    "open a new browser or add a buffer showing the selected methods only"
+
+    ^ self
+        spawnMethodStringSearchBrowserFor:aStringCollection
+        match:false
+        in:openHow
+        classes:environment allClasses
+        label:'string search'
+!
+
+spawnMethodStringSearchBrowserFor:aStringCollection match:doMatch in:openHow classes:classes label:labelPrefix
+    "open a new browser or add a buffer showing the selected methods only"
+
+    self withSearchCursorDo:[
+        |newBrowser label impls searchBlock cachedList theSingleString|
+
+        aStringCollection size == 1 ifTrue:[
+            theSingleString := aStringCollection first.
+            label := resources string:(labelPrefix,' with %1') with:(theSingleString allBold)
+        ] ifFalse:[
+            label := resources string:labelPrefix.
+        ].
+
+        searchBlock := 
+            [
+                |list|
+
+                (list := cachedList) notNil ifTrue:[
+                    cachedList := nil
+                ] ifFalse:[
+                    list := IdentitySet new.
+                    aStringCollection do:[:eachString |
+                        list addAll:(self class
+                                        findString:eachString 
+                                        in:classes
+                                        ignoreCase:false 
+                                        match:doMatch
+                                    )
+                    ].
+                    list := list asOrderedCollection
+                ].
+                list
+            ].
+
+        cachedList := searchBlock value.
+        (cachedList size == 1 and:[cachedList first == self theSingleSelectedMethod]) ifTrue:[
+            (Dialog
+                confirm:label,' - ',(resources stringWithCRs:'only the selected method found.\\Browse anyway?')
+                initialAnswer:false
+            ) ifFalse:[
+                ^ self
+            ]
+        ].
+
+        newBrowser := self
+                        spawnMethodBrowserForSearch:searchBlock
+                        sortBy:nil
+                        in:openHow
+                        label:label.
+        
+        newBrowser autoSearchPattern:(aStringCollection asStringWith:'|') ignoreCase:false.
+        newBrowser sortBy value:#classes.
+        newBrowser
+    ]
+!
+
 spawnProjectExtensionsBrowserFor:aMethodCollection in:openHow
     "open a new browser or add a buffer showing the selected methods senders only"
 
@@ -55649,7 +55762,7 @@
 !
 
 askForMethodAndSpawnSearchTitle:title browserLabel:labelHolderOrBlock 
-    searchWith:aSelectorOrBlock searchWhat:searchWhat searchArea:whereDefault
+    searchWith:searchWithSpec searchWhat:searchWhat searchArea:whereDefault
     withCaseIgnore:withCaseIgnore withTextEntry:withTextEntry 
     withMatch:withMatch withMethodList:withMethodList 
     setSearchPattern:setSearchPatternAction
@@ -55675,11 +55788,28 @@
      searchWhat is a symbol such as #selector, #code etc.
     "
 
-    |dialog|
-
+    |dialog selectorOrBlockOrSelectorPair literalStringSearchSelectors|
+
+    selectorOrBlockOrSelectorPair := searchWithSpec.
+    
     dialog := SearchDialog new
         initialText:aString;
-        showMetaFilter:true;
+        showMetaFilter:true.
+
+    "/ hack...
+    searchWhat == #string ifTrue:[
+        selectorOrBlockOrSelectorPair size == 4 ifTrue:[
+            "/ the first two are for a string search,
+            "/ the last two for a string-in-literal search.
+            "/ need to clean that ugly interface up...
+            literalStringSearchSelectors := selectorOrBlockOrSelectorPair copyFrom:3.
+            selectorOrBlockOrSelectorPair := selectorOrBlockOrSelectorPair copyTo:2.
+
+            dialog withSearchStringInLiterals:true.
+        ].    
+    ].
+    
+    dialog    
         setupToAskForMethodSearchTitle:title
         forBrowser:self
         searchWhat:searchWhat
@@ -55691,7 +55821,7 @@
         allowBuffer:true
         allowBrowser:true
         withTextEntry:withTextEntry.
-
+    
     [:restart|
         dialog askThenDo:[
             |classes string ignoreCase openHow match methods isMethod searchAction
@@ -55711,38 +55841,46 @@
 
             self withSearchCursorDo:[
                 |initialList list newBrowser numFound label
-                 selector entities arguments numArgs answer
-                 alternativeSelector question altArguments t|
-
-                aSelectorOrBlock isArray ifTrue:[
+                 selectorList selector entities arguments numArgs answer
+                 alternativeSelector question altArguments t extraStringMsg|
+
+                (literalStringSearchSelectors notNil and:[dialog searchStringInLiterals]) ifTrue:[ 
+                    selectorList := literalStringSearchSelectors.
+                    extraStringMsg := ' (in String literals)'. 
+                ] ifFalse:[ 
+                    selectorList := selectorOrBlockOrSelectorPair.
+                    extraStringMsg := ''. 
+                ].
+
+                selectorList isArray ifTrue:[
                     classes notNil ifTrue:[
-                        selector := aSelectorOrBlock first.
+                        selector := selectorList first.
                         entities := classes.
                     ] ifFalse:[
-                        selector := aSelectorOrBlock second.
+                        selector := selectorList second.
                         entities := methods.
                     ].
                     numArgs := selector numArgs.
                 ] ifFalse:[
                     entities := classes.
-                    aSelectorOrBlock isSymbol ifTrue:[
-                        selector := aSelectorOrBlock.
+                    selectorList isSymbol ifTrue:[
+                        selector := selectorList.
                     ] ifFalse:[
                         selector := nil
                     ].
-                    numArgs := aSelectorOrBlock numArgs.
+                    numArgs := selectorList numArgs.
                 ].
                 (selector notNil
                 and:[ (selector numArgs == 1)
                 and:[ (selector endsWith:'In:') or:[ selector endsWith:'inMethods:' ]]]) ifTrue:[
                     arguments := Array with:entities
                 ] ifFalse:[
-                    arguments := (Array
-                                        with:string
-                                        with:entities
-                                        with:((selector notNil and:[selector endsWith:'isMethod:']) ifTrue:[isMethod] ifFalse:[ignoreCase])
-                                        with:match
-                                  ) copyTo:numArgs.
+                    arguments := { string . 
+                                   entities . 
+                                   ((selector notNil and:[selector endsWith:'isMethod:']) 
+                                                ifTrue:[isMethod] ifFalse:[ignoreCase]) .
+                                   match 
+                                 } copyTo:numArgs.
                 ].
 
                 searchAction :=
@@ -55760,17 +55898,17 @@
                             selector notNil ifTrue:[
                                 result := self class perform:selector withArguments:arguments.
                             ] ifFalse:[
-                                result := aSelectorOrBlock valueWithArguments:arguments
+                                result := selectorList valueWithArguments:arguments
                             ].
                             "/ sorry for this special case: when searching in a package,
                             "/ also search extensionMethods
                             dialog searchAreaSelected == #currentPackage ifTrue:[
-                                aSelectorOrBlock isArray ifTrue:[
+                                selectorList isArray ifTrue:[
                                     "/ findSendersOf:inMethods:ignoreCase:match:
                                     extensionMethods := environment allExtensionsForPackage:(dialog currentPackage).
                                     arguments2 := arguments copy.
                                     arguments2 at:2 put:extensionMethods.
-                                    moreResults := self class perform:(aSelectorOrBlock at:2) withArguments:arguments2.
+                                    moreResults := self class perform:(selectorList at:2) withArguments:arguments2.
                                     result := result , moreResults.
                                 ]
                             ].
@@ -55803,7 +55941,11 @@
 
                 numFound := initialList size.
                 numFound == 0 ifTrue:[
-                    question := resources stringWithCRs:label with:((string ? '') allBold colorizeAllWith:Color red darkened).
+                    question := resources 
+                                    stringWithCRs:label,extraStringMsg 
+                                    with:((string ? '') 
+                                            allBold 
+                                                colorizeAllWith:Color red darkened).
                     question := question , (resources string:' - none found.').
 
                     ((selector == #findImplementors:in:ignoreCase:match:)
@@ -58161,7 +58303,7 @@
 !
 
 getMethodInfoForMethod:aMethod
-    "get something about aMethod
+    "get some info about aMethod
      to be shown in the info line at the bottom"
 
     |msg msg2 method wrapper|
--- a/Tools__SearchDialog.st	Thu May 05 06:48:38 2016 +0200
+++ b/Tools__SearchDialog.st	Fri May 06 06:55:08 2016 +0200
@@ -22,7 +22,8 @@
 		allowBuffer allowBrowser searchWhat searchClassProtocolHolder
 		searchInstanceProtocolHolder selectorOrCode selectionList
 		listHolder matchProcess inputField showMetaFilter
-		metaclassesOnlyHolder classesOnlyHolder initialText'
+		metaclassesOnlyHolder classesOnlyHolder initialText
+		withSearchStringInLiterals searchStringInLiteralsHolder'
 	classVariableNames:'LastCodeSearched LastCodeSearchWasMethod LastGlobalSearched
 		LastStringSearched LastSearchWasMatch LastSearchWasCaseSensitive
 		LastStringSearchArea LastCodeSearchArea AREA_LISTOFMETHODS
@@ -63,6 +64,99 @@
     "Created: / 19-11-2010 / 12:11:50 / cg"
 ! !
 
+!SearchDialog class methodsFor:'help'!
+
+helpSpec
+    ^ Dictionary new addPairsFrom:#(
+#listOfChangedClasses
+'Search only in changed classes'
+
+#listOfChangedMethods
+'Search only in changed methods'
+
+#currentClassesNameSpace
+'Search in the namespace(s) of the selected class(es)'
+
+#currentClassesPackage
+'Search in the package(s) of the selected class(es)'
+
+#currentNameSpace
+'Search in the current selected or selected classes namespace'
+
+#currentPackage
+'Search in the current selected or selected classes package'
+
+#currentClassesPackage
+'Search in the current selected classes package'
+
+#currentPackageAndSubPackages
+'Search in the current (selected) package and subpackages.\(disabled if there are no subpackages)'
+
+#everywhere
+'Search everywhere (all loaded classes)'
+
+#listOfMethods
+'Search only in the list of (shown) methods'
+
+#ownersWithPrivateClasses
+'Search in class and the owning and private classes.\(disabled if there are none)'
+
+#ownersHierarchiesWithPrivateClasses
+'Search in class, owners, private classes and all subclasses.\(disabled if there are none)'
+
+#classes
+'Search in selected class(es) only'
+
+#classesWithPrivateClasses
+'Search in selected class(es) and any private classes.\(disabled if there are no private classes)'
+
+#classHierarchies
+'Search in selected class(es) and down all subclasses.\(disabled if there are no subclasses)'
+
+#classHierarchiesWithPrivateClasses
+'Search in selected class(es), down all subclasses and all of their private classes.\(disabled if there are none)'
+
+#classesAndSuperclasses
+'Search in selected class(es) and up all super classes.\(disabled if there are none)'
+
+#classCategories
+'Search in selected class category(s)'
+
+#listOfSelectedMethodClasses
+'Search in class(es) of selected method(s)'
+
+#listOfSelectedMethodPackages
+'Search in package(es) of selected method(s)'
+
+#listOfSelectedMethods
+'Search in selected method(s)'
+
+#selectedPackages
+'Search in selected package(s)'
+
+#searchPatternField
+'The searched string or name. Does completion on TAB-key'
+
+#codeEntryField
+'Code fragment to match against in the search.\Press "pattern-help" to learn more about code searches'
+
+#nonMetaClassesOnly
+'Search only in instance methods (non-meta classes)'
+
+#metaClassesOnly
+'Search only in class methods (meta classes)'
+
+#searchStringInLiterals
+'Search string in literal constants; not in source code'
+
+#match
+'Perform a pattern match search, as oposed to an exact string search.\Pattern is a simple GLOB pattern (as in filenames)'
+
+#caseSensitive
+'Perform a case sensitive search (default is to ignore case differences)'
+)
+! !
+
 !SearchDialog class methodsFor:'queries'!
 
 lastCodeSearchArea
@@ -87,13 +181,25 @@
     initialText := aString.
 !
 
-showMetaFilter:something
-    showMetaFilter := something.
+showMetaFilter:aBoolean
+    "enable another checkbox, to allow searching in meta/non-meta"
+
+    showMetaFilter := aBoolean.
+!
+
+withSearchStringInLiterals:aBoolean
+    "enable another checkbox, to allow searching for a string
+     in the literals only"
+     
+    withSearchStringInLiterals := aBoolean.
 ! !
 
 !SearchDialog methodsFor:'accessing-entered values'!
 
 classesOnly
+    "the value of the corresponding check toggle;
+     if on, only search in non-metaclasses"
+
     ^ (classesOnlyHolder ? false) value
 
     "Created: / 20-08-2012 / 13:25:26 / cg"
@@ -112,6 +218,9 @@
 !
 
 metaclassesOnly
+    "the value of the corresponding check toggle;
+     if on, only search in metaclasses"
+
     ^ (metaclassesOnlyHolder ? false) value
 
     "Created: / 20-08-2012 / 13:17:12 / cg"
@@ -122,10 +231,16 @@
 !
 
 openHow
+    "the value of the corresponding button pressed to close the dialog;
+     a symbol describing what to do (newBrowser/newBuffer/find)"
+
     ^ openHow.
 !
 
 searchAreaSelected
+    "the value of the corresponding radio button;
+     a symbol describing where to search"
+
     ^ whereRadioGroup value.
 !
 
@@ -134,10 +249,24 @@
 !
 
 searchIsCaseSensitive
+    "the value of the corresponding check toggle;
+     if on, search is case sensitive; otherwise ignore case"
+
     ^ (caseHolder value ? false)
 !
 
+searchStringInLiterals
+    "the value of the corresponding check toggle;
+     if on, only literal strings should be searched;
+     otherwise, the sourcecode is searched"
+     
+    ^ searchStringInLiteralsHolder value ? false.
+!
+
 searchWithMatch
+    "the value of the corresponding check toggle;
+     if on, do a GLOB match; otherwise an exact search"
+
     ^ matchHolder value ? false.
 !
 
@@ -145,6 +274,21 @@
     ^ selectorOrCode.
 ! !
 
+!SearchDialog methodsFor:'help'!
+
+flyByHelpTextFor:aComponent
+    |symbolicHelpKey text|
+
+    (symbolicHelpKey := aComponent helpKey) notNil ifTrue:[
+    Transcript showCR:symbolicHelpKey.
+        text := self class helpSpec at:symbolicHelpKey ifAbsent:[ nil ].
+        text notNil ifTrue:[
+            ^ NewSystemBrowser classResources stringWithCRs:text.
+        ].    
+    ].
+    ^ nil
+! !
+
 !SearchDialog methodsFor:'obsolete'!
 
 addCheckBoxForClassMethodSearch
@@ -232,18 +376,20 @@
         (searchWhat ~~ #resource) ifTrue:[ 
             initialCaseSensitive := (LastSearchWasCaseSensitive ? false) 
         ].  
-        self 
+        (self 
             addCheckBox:(resources string:'Case Sensitive')
-            on:(caseHolder := initialCaseSensitive asValue).
+            on:(caseHolder := initialCaseSensitive asValue))
+            helpKey:#caseSensitive.
     ].
     withMatch ifTrue:[
         initialMatch := true.
         (searchWhat ~~ #resource) ifTrue:[ 
             initialMatch := (LastSearchWasMatch ? true) 
         ].
-        self 
+        (self 
             addCheckBox:(resources string:'Match')
-            on:(matchHolder := initialMatch asValue).
+            on:(matchHolder := initialMatch asValue))
+            helpKey:#match.
 "/                (isSelector and:[ sel notNil. ]) ifTrue:[ 
 "/                    sel includesMatchCharacters ifTrue:[ 
 "/                        matchHolder value:false.
@@ -379,6 +525,10 @@
     withMethodList:withMethodList allowFind:allowFindArg allowBuffer:allowBufferArg 
     allowBrowser:allowBrowserArg withTextEntry:withTextEntryArg 
 
+    "the real construction of the box is done here. 
+     Any additional parameters (metaOnly, searchLiterals etc. must have been done
+     already."
+    
     "searchWhat:
         one of:#selector 
      searchArea:
@@ -422,16 +572,16 @@
         self addTextEntryWithCaseIgnore:withCaseIgnore withMatch:withMatch.
     ].
 
-    searchAreas := OrderedCollection new.
-
-    self addHorizontalLine.
-    "/ self addVerticalSpace.
-
     (showMetaFilter ? false) ifTrue:[
         currentPanel := self.
         self addCheckBoxForMetaClassesOnly.
     ].
-
+    (withSearchStringInLiterals ? false) ifTrue:[    
+        currentPanel := self.
+        self addCheckBoxForSearchInLiteralsOnly
+    ].
+    
+    self addHorizontalLine.
 
     hPanel := HorizontalPanelView "SimpleView" new.
     hPanel verticalLayout:#top.
@@ -443,6 +593,7 @@
 
     (self addTextLabel:(resources string:'Search in:')) adjust:#left.
 
+    searchAreas := OrderedCollection new.
     whereRadioGroup := RadioButtonGroup new.
 
     self addCheckBoxForEverywhere.
@@ -636,16 +787,22 @@
 !SearchDialog methodsFor:'setup'!
 
 addCheckBox:b forSearchArea:area 
+    self addCheckBox:b forSearchArea:area helpKey:area
+!
+
+addCheckBox:b forSearchArea:area helpKey:symbolicHelpKey
     currentPanel add:b.
     whereRadioGroup add:b value:area.
     searchAreas add:area.
     self makeTabable:b.
+    symbolicHelpKey notNil ifTrue:[ b helpKey:symbolicHelpKey ].
 !
 
 addCheckBoxForChangedClassesList
     |b|
 
     b := RadioButton "CheckBox" label:(resources string:'Changed Classes').
+    
     self addCheckBox:b forSearchArea:#listOfChangedClasses.
     ChangeSet current changedClasses isEmpty ifTrue:[
         b disable
@@ -657,6 +814,7 @@
     |b|
 
     b := RadioButton "CheckBox" label:(resources string:'Changed Methods').
+
     self addCheckBox:b forSearchArea:#listOfChangedMethods.
     ChangeSet current changeSelectors isEmpty ifTrue:[
         b disable
@@ -739,12 +897,14 @@
     
     b := CheckBox label:(resources string:'Metaclasses Only') in:p.
     b model:(metaclassesOnlyHolder := false asValue).
+    b helpKey:#metaClassesOnly.
     metaclassesOnlyHolder onChangeEvaluate:[metaclassesOnlyHolder value ifTrue:[classesOnlyHolder value:false]].
     self makeTabable:b.
 
     b := CheckBox label:(resources string:'Classes Only') in:p.
     b left:0.5.
     b model:(classesOnlyHolder := false asValue).
+    b helpKey:#nonMetaClassesOnly.
     classesOnlyHolder onChangeEvaluate:[classesOnlyHolder value ifTrue:[metaclassesOnlyHolder value:false]].
     self makeTabable:b.
 
@@ -798,6 +958,20 @@
     ^ b.
 !
 
+addCheckBoxForSearchInLiteralsOnly
+    |p b|
+
+    p := View new.
+    
+    b := CheckBox label:(resources string:'Search Literals Only') in:p.
+    b model:(searchStringInLiteralsHolder := false asValue).
+    p helpKey:#searchStringInLiterals.
+    self makeTabable:b.
+
+    currentPanel add:p.
+    ^ nil.
+!
+
 addCheckBoxForSelectedClass
     |b lbl arg|
 
@@ -973,15 +1147,15 @@
 addCheckBoxForSelectedPackage
     |b lbl arg|
 
-    currentClassCategory notNil ifTrue:[ 
-        lbl := 'Class category ("%1")'.
-        arg := currentClassCategory.
+    currentPackage notNil ifTrue:[ 
+        lbl := 'Class package ("%1")'.
+        arg := currentPackage.
     ] ifFalse:[ 
-        lbl := 'Selected classes categories (%1)'.
-        arg := selectedCategories size.
+        lbl := 'Selected classes packages (%1)'.
+        arg := selectedPackages size.
     ].
     b := RadioButton "CheckBox" label:(resources string:lbl with:arg).
-    self addCheckBox:b forSearchArea:#classCategories.
+    self addCheckBox:b forSearchArea:#selectedPackages.
     ^ b.
 !
 
@@ -990,10 +1164,12 @@
 
     y := self yPosition.
     b1 := self addCheckBox:(resources string:'Instance Protocol') on:(self searchInstanceProtocolHolder).
+    b1 helpKey:#classesOnly.
     "/ b1 width:0.5.
 
     "/ self yPosition:y.
     b2 := self addCheckBox:(resources string:'Class Protocol') on:(self searchClassProtocolHolder).
+    b2 helpKey:#metaClassesOnly.
     "/ b2 left:0.5; width:0.5.
 
     "Created: / 06-12-2011 / 11:24:11 / cg"
@@ -1072,6 +1248,7 @@
     inputField selectAllInitially.
     inputField immediateAccept:true.
     inputField takeFocus.
+    inputField helpKey:#searchPatternField.
 
     searchWhat == #string ifFalse:[
         inputField 
@@ -1113,6 +1290,7 @@
 
     box := View new.
     box extent:(600 @ 200).
+    box helpKey:#codeEntryField.
 
     panel := VariableHorizontalPanel in:box.
     panel origin:0.0@0.0 corner:(1.0@1.0).
--- a/bc.mak	Thu May 05 06:48:38 2016 +0200
+++ b/bc.mak	Fri May 06 06:55:08 2016 +0200
@@ -262,7 +262,7 @@
 $(OUTDIR)Tools__HierarchicalChangeList.$(O) Tools__HierarchicalChangeList.$(C) Tools__HierarchicalChangeList.$(H): Tools__HierarchicalChangeList.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libtool\Tools__BrowserList.$(H) $(INCLUDE_TOP)\stx\libtool\Tools__BrowserListWithFilter.$(H) $(INCLUDE_TOP)\stx\libtool\Tools__ChangeList.$(H) $(INCLUDE_TOP)\stx\libtool\Tools__NavigatorModel.$(H) $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(STCHDR)
 $(OUTDIR)Tools__HierarchicalPackageFilterList.$(O) Tools__HierarchicalPackageFilterList.$(C) Tools__HierarchicalPackageFilterList.$(H): Tools__HierarchicalPackageFilterList.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libtool\Tools__BrowserList.$(H) $(INCLUDE_TOP)\stx\libtool\Tools__HierarchicalProjectList.$(H) $(INCLUDE_TOP)\stx\libtool\Tools__NavigatorModel.$(H) $(INCLUDE_TOP)\stx\libtool\Tools__ProjectList.$(H) $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(INCLUDE_TOP)\stx\libwidg2\AbstractHierarchicalItem.$(H) $(INCLUDE_TOP)\stx\libwidg2\HierarchicalItem.$(H) $(INCLUDE_TOP)\stx\libwidg2\HierarchicalItemWithLabel.$(H) $(STCHDR)
 $(OUTDIR)Tools__InheritanceClassList.$(O) Tools__InheritanceClassList.$(C) Tools__InheritanceClassList.$(H): Tools__InheritanceClassList.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libtool\Tools__BrowserList.$(H) $(INCLUDE_TOP)\stx\libtool\Tools__ClassList.$(H) $(INCLUDE_TOP)\stx\libtool\Tools__HierarchicalClassList.$(H) $(INCLUDE_TOP)\stx\libtool\Tools__NavigatorModel.$(H) $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(STCHDR)
-$(OUTDIR)extensions.$(O): extensions.st $(INCLUDE_TOP)\stx\libbasic\AbstractTime.$(H) $(INCLUDE_TOP)\stx\libbasic\ArithmeticValue.$(H) $(INCLUDE_TOP)\stx\libbasic\ArrayedCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\Autoload.$(H) $(INCLUDE_TOP)\stx\libbasic\Bag.$(H) $(INCLUDE_TOP)\stx\libbasic\Behavior.$(H) $(INCLUDE_TOP)\stx\libbasic\Block.$(H) $(INCLUDE_TOP)\stx\libbasic\Boolean.$(H) $(INCLUDE_TOP)\stx\libbasic\ByteArray.$(H) $(INCLUDE_TOP)\stx\libbasic\Character.$(H) $(INCLUDE_TOP)\stx\libbasic\CharacterArray.$(H) $(INCLUDE_TOP)\stx\libbasic\Class.$(H) $(INCLUDE_TOP)\stx\libbasic\ClassDescription.$(H) $(INCLUDE_TOP)\stx\libbasic\Collection.$(H) $(INCLUDE_TOP)\stx\libbasic\CompiledCode.$(H) $(INCLUDE_TOP)\stx\libbasic\Date.$(H) $(INCLUDE_TOP)\stx\libbasic\Dictionary.$(H) $(INCLUDE_TOP)\stx\libbasic\Error.$(H) $(INCLUDE_TOP)\stx\libbasic\Exception.$(H) $(INCLUDE_TOP)\stx\libbasic\ExecutableFunction.$(H) $(INCLUDE_TOP)\stx\libbasic\Filename.$(H) $(INCLUDE_TOP)\stx\libbasic\GenericException.$(H) $(INCLUDE_TOP)\stx\libbasic\Geometric.$(H) $(INCLUDE_TOP)\stx\libbasic\IdentityDictionary.$(H) $(INCLUDE_TOP)\stx\libbasic\Integer.$(H) $(INCLUDE_TOP)\stx\libbasic\Interval.$(H) $(INCLUDE_TOP)\stx\libbasic\KeyedCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\LibraryDefinition.$(H) $(INCLUDE_TOP)\stx\libbasic\LimitedPrecisionReal.$(H) $(INCLUDE_TOP)\stx\libbasic\Magnitude.$(H) $(INCLUDE_TOP)\stx\libbasic\Method.$(H) $(INCLUDE_TOP)\stx\libbasic\MethodDictionary.$(H) $(INCLUDE_TOP)\stx\libbasic\NameSpace.$(H) $(INCLUDE_TOP)\stx\libbasic\Notification.$(H) $(INCLUDE_TOP)\stx\libbasic\Number.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\OrderedCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\Point.$(H) $(INCLUDE_TOP)\stx\libbasic\ProgrammingLanguage.$(H) $(INCLUDE_TOP)\stx\libbasic\ProjectDefinition.$(H) $(INCLUDE_TOP)\stx\libbasic\Query.$(H) $(INCLUDE_TOP)\stx\libbasic\ReadOnlySequenceableCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\Rectangle.$(H) $(INCLUDE_TOP)\stx\libbasic\SequenceableCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\Set.$(H) $(INCLUDE_TOP)\stx\libbasic\SharedPool.$(H) $(INCLUDE_TOP)\stx\libbasic\SmallInteger.$(H) $(INCLUDE_TOP)\stx\libbasic\Smalltalk.$(H) $(INCLUDE_TOP)\stx\libbasic\SmalltalkLanguage.$(H) $(INCLUDE_TOP)\stx\libbasic\StandaloneStartup.$(H) $(INCLUDE_TOP)\stx\libbasic\String.$(H) $(INCLUDE_TOP)\stx\libbasic\StringCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\Symbol.$(H) $(INCLUDE_TOP)\stx\libbasic\Timestamp.$(H) $(INCLUDE_TOP)\stx\libbasic\UndefinedObject.$(H) $(INCLUDE_TOP)\stx\libbasic\UninterpretedBytes.$(H) $(INCLUDE_TOP)\stx\libbasic\UserNotification.$(H) $(INCLUDE_TOP)\stx\libbasic\UserPreferences.$(H) $(INCLUDE_TOP)\stx\libbasic\Warning.$(H) $(INCLUDE_TOP)\stx\libbasic2\Iterator.$(H) $(INCLUDE_TOP)\stx\libbasic2\RunArray.$(H) $(INCLUDE_TOP)\stx\libbasic2\SocketAddress.$(H) $(INCLUDE_TOP)\stx\libbasic2\Text.$(H) $(INCLUDE_TOP)\stx\libbasic2\UUID.$(H) $(INCLUDE_TOP)\stx\libbasic3\Change.$(H) $(INCLUDE_TOP)\stx\libbasic3\ChangeSet.$(H) $(INCLUDE_TOP)\stx\libbasic3\CompositeChange.$(H) $(INCLUDE_TOP)\stx\libbasic3\ProfileTree.$(H) $(INCLUDE_TOP)\stx\libcomp\AbstractSyntaxHighlighter.$(H) $(INCLUDE_TOP)\stx\libcomp\Breakpoint.$(H) $(INCLUDE_TOP)\stx\libcomp\BreakpointDescription.$(H) $(INCLUDE_TOP)\stx\libcomp\Explainer.$(H) $(INCLUDE_TOP)\stx\libcomp\Parser.$(H) $(INCLUDE_TOP)\stx\libcomp\Scanner.$(H) $(INCLUDE_TOP)\stx\libview\Color.$(H) $(INCLUDE_TOP)\stx\libview\DeviceGraphicsContext.$(H) $(INCLUDE_TOP)\stx\libview\DisplaySurface.$(H) $(INCLUDE_TOP)\stx\libview\Form.$(H) $(INCLUDE_TOP)\stx\libview\GraphicsContext.$(H) $(INCLUDE_TOP)\stx\libview\GraphicsMedium.$(H) $(INCLUDE_TOP)\stx\libview\Image.$(H) $(INCLUDE_TOP)\stx\libview\PopUpView.$(H) $(INCLUDE_TOP)\stx\libview\SimpleView.$(H) $(INCLUDE_TOP)\stx\libview\TopView.$(H) $(INCLUDE_TOP)\stx\libview\View.$(H) $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(INCLUDE_TOP)\stx\libview2\MultiImage.$(H) $(INCLUDE_TOP)\stx\libwidg\EditTextView.$(H) $(INCLUDE_TOP)\stx\libwidg\GenericToolbarIconLibrary.$(H) $(INCLUDE_TOP)\stx\libwidg\ListView.$(H) $(INCLUDE_TOP)\stx\libwidg\MenuView.$(H) $(INCLUDE_TOP)\stx\libwidg\PopUpMenu.$(H) $(INCLUDE_TOP)\stx\libwidg\SelectionInListView.$(H) $(INCLUDE_TOP)\stx\libwidg\TextView.$(H) $(INCLUDE_TOP)\stx\libwidg2\ListModelView.$(H) $(INCLUDE_TOP)\stx\libwidg2\SelectionInListModelView.$(H) $(STCHDR)
+$(OUTDIR)extensions.$(O): extensions.st $(INCLUDE_TOP)\stx\libbasic\AbstractTime.$(H) $(INCLUDE_TOP)\stx\libbasic\ArithmeticValue.$(H) $(INCLUDE_TOP)\stx\libbasic\ArrayedCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\Autoload.$(H) $(INCLUDE_TOP)\stx\libbasic\Bag.$(H) $(INCLUDE_TOP)\stx\libbasic\Behavior.$(H) $(INCLUDE_TOP)\stx\libbasic\Block.$(H) $(INCLUDE_TOP)\stx\libbasic\Boolean.$(H) $(INCLUDE_TOP)\stx\libbasic\ByteArray.$(H) $(INCLUDE_TOP)\stx\libbasic\Character.$(H) $(INCLUDE_TOP)\stx\libbasic\CharacterArray.$(H) $(INCLUDE_TOP)\stx\libbasic\Class.$(H) $(INCLUDE_TOP)\stx\libbasic\ClassDescription.$(H) $(INCLUDE_TOP)\stx\libbasic\Collection.$(H) $(INCLUDE_TOP)\stx\libbasic\CompiledCode.$(H) $(INCLUDE_TOP)\stx\libbasic\Date.$(H) $(INCLUDE_TOP)\stx\libbasic\Dictionary.$(H) $(INCLUDE_TOP)\stx\libbasic\Error.$(H) $(INCLUDE_TOP)\stx\libbasic\Exception.$(H) $(INCLUDE_TOP)\stx\libbasic\ExecutableFunction.$(H) $(INCLUDE_TOP)\stx\libbasic\Filename.$(H) $(INCLUDE_TOP)\stx\libbasic\GenericException.$(H) $(INCLUDE_TOP)\stx\libbasic\Geometric.$(H) $(INCLUDE_TOP)\stx\libbasic\IdentityDictionary.$(H) $(INCLUDE_TOP)\stx\libbasic\Integer.$(H) $(INCLUDE_TOP)\stx\libbasic\Interval.$(H) $(INCLUDE_TOP)\stx\libbasic\KeyedCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\LibraryDefinition.$(H) $(INCLUDE_TOP)\stx\libbasic\LimitedPrecisionReal.$(H) $(INCLUDE_TOP)\stx\libbasic\Magnitude.$(H) $(INCLUDE_TOP)\stx\libbasic\Method.$(H) $(INCLUDE_TOP)\stx\libbasic\MethodDictionary.$(H) $(INCLUDE_TOP)\stx\libbasic\NameSpace.$(H) $(INCLUDE_TOP)\stx\libbasic\Notification.$(H) $(INCLUDE_TOP)\stx\libbasic\Number.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\OrderedCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\Point.$(H) $(INCLUDE_TOP)\stx\libbasic\ProgrammingLanguage.$(H) $(INCLUDE_TOP)\stx\libbasic\ProjectDefinition.$(H) $(INCLUDE_TOP)\stx\libbasic\Query.$(H) $(INCLUDE_TOP)\stx\libbasic\ReadOnlySequenceableCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\Rectangle.$(H) $(INCLUDE_TOP)\stx\libbasic\SequenceableCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\Set.$(H) $(INCLUDE_TOP)\stx\libbasic\SharedPool.$(H) $(INCLUDE_TOP)\stx\libbasic\SmallInteger.$(H) $(INCLUDE_TOP)\stx\libbasic\Smalltalk.$(H) $(INCLUDE_TOP)\stx\libbasic\SmalltalkLanguage.$(H) $(INCLUDE_TOP)\stx\libbasic\StandaloneStartup.$(H) $(INCLUDE_TOP)\stx\libbasic\String.$(H) $(INCLUDE_TOP)\stx\libbasic\StringCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\Symbol.$(H) $(INCLUDE_TOP)\stx\libbasic\Timestamp.$(H) $(INCLUDE_TOP)\stx\libbasic\UndefinedObject.$(H) $(INCLUDE_TOP)\stx\libbasic\UninterpretedBytes.$(H) $(INCLUDE_TOP)\stx\libbasic\UserNotification.$(H) $(INCLUDE_TOP)\stx\libbasic\UserPreferences.$(H) $(INCLUDE_TOP)\stx\libbasic\Warning.$(H) $(INCLUDE_TOP)\stx\libbasic2\Iterator.$(H) $(INCLUDE_TOP)\stx\libbasic2\RunArray.$(H) $(INCLUDE_TOP)\stx\libbasic2\SocketAddress.$(H) $(INCLUDE_TOP)\stx\libbasic2\Text.$(H) $(INCLUDE_TOP)\stx\libbasic2\UUID.$(H) $(INCLUDE_TOP)\stx\libbasic3\Change.$(H) $(INCLUDE_TOP)\stx\libbasic3\ChangeSet.$(H) $(INCLUDE_TOP)\stx\libbasic3\CompositeChange.$(H) $(INCLUDE_TOP)\stx\libbasic3\ProfileTree.$(H) $(INCLUDE_TOP)\stx\libcomp\AbstractSyntaxHighlighter.$(H) $(INCLUDE_TOP)\stx\libcomp\Breakpoint.$(H) $(INCLUDE_TOP)\stx\libcomp\BreakpointDescription.$(H) $(INCLUDE_TOP)\stx\libcomp\Parser.$(H) $(INCLUDE_TOP)\stx\libcomp\Scanner.$(H) $(INCLUDE_TOP)\stx\libview\Color.$(H) $(INCLUDE_TOP)\stx\libview\DeviceGraphicsContext.$(H) $(INCLUDE_TOP)\stx\libview\DisplaySurface.$(H) $(INCLUDE_TOP)\stx\libview\Form.$(H) $(INCLUDE_TOP)\stx\libview\GraphicsContext.$(H) $(INCLUDE_TOP)\stx\libview\GraphicsMedium.$(H) $(INCLUDE_TOP)\stx\libview\Image.$(H) $(INCLUDE_TOP)\stx\libview\PopUpView.$(H) $(INCLUDE_TOP)\stx\libview\SimpleView.$(H) $(INCLUDE_TOP)\stx\libview\TopView.$(H) $(INCLUDE_TOP)\stx\libview\View.$(H) $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(INCLUDE_TOP)\stx\libview2\MultiImage.$(H) $(INCLUDE_TOP)\stx\libwidg\EditTextView.$(H) $(INCLUDE_TOP)\stx\libwidg\GenericToolbarIconLibrary.$(H) $(INCLUDE_TOP)\stx\libwidg\ListView.$(H) $(INCLUDE_TOP)\stx\libwidg\MenuView.$(H) $(INCLUDE_TOP)\stx\libwidg\PopUpMenu.$(H) $(INCLUDE_TOP)\stx\libwidg\SelectionInListView.$(H) $(INCLUDE_TOP)\stx\libwidg\TextView.$(H) $(INCLUDE_TOP)\stx\libwidg2\ListModelView.$(H) $(INCLUDE_TOP)\stx\libwidg2\SelectionInListModelView.$(H) $(STCHDR)
 
 # ENDMAKEDEPEND --- do not remove this line
 
--- a/libtool.rc	Thu May 05 06:48:38 2016 +0200
+++ b/libtool.rc	Fri May 06 06:55:08 2016 +0200
@@ -3,7 +3,7 @@
 // automagically generated from the projectDefinition: stx_libtool.
 //
 VS_VERSION_INFO VERSIONINFO
-  FILEVERSION     6,2,1,139
+  FILEVERSION     6,2,1,140
   PRODUCTVERSION  6,2,5,0
 #if (__BORLANDC__)
   FILEFLAGSMASK   VS_FF_DEBUG | VS_FF_PRERELEASE
@@ -20,12 +20,12 @@
     BEGIN
       VALUE "CompanyName", "eXept Software AG\0"
       VALUE "FileDescription", "Smalltalk/X Tools (LIB)\0"
-      VALUE "FileVersion", "6.2.1.139\0"
+      VALUE "FileVersion", "6.2.1.140\0"
       VALUE "InternalName", "stx:libtool\0"
       VALUE "LegalCopyright", "Copyright Claus Gittinger 1988-2012\nCopyright eXept Software AG 2012\0"
       VALUE "ProductName", "Smalltalk/X\0"
       VALUE "ProductVersion", "6.2.5.0\0"
-      VALUE "ProductDate", "Wed, 04 May 2016 07:23:08 GMT\0"
+      VALUE "ProductDate", "Fri, 06 May 2016 03:00:19 GMT\0"
     END
 
   END
--- a/stx_libtool.st	Thu May 05 06:48:38 2016 +0200
+++ b/stx_libtool.st	Fri May 06 06:55:08 2016 +0200
@@ -421,8 +421,10 @@
 !
 
 extensionMethodNames
-    "list class/selector pairs of extensions.
-     A correponding method with real names must be present in my concrete subclasses"
+    "lists the extension methods which are to be included in the project.
+     Entries are 2-element array literals, consisting of class-name and selector.
+     A correponding method with real names must be present in my concrete subclasses
+     if it has extensions."
 
     ^ #(
         ApplicationModel inspectorExtraAttributes
@@ -579,11 +581,6 @@
         'Collection class' iconInBrowserSymbol
         'Date class' iconInBrowserSymbol
         'Error class' iconInBrowserSymbol
-        'Explainer class' infoStringForClasses:withPrefix:
-        'Explainer class' methodImplementorsInfoFor:inEnvironment:
-        'Explainer class' methodInheritanceInfoFor:
-        'Explainer class' methodRedefinitionInfoFor:
-        'Explainer class' methodSpecialInfoFor:
         'GenericException class' iconInBrowserSymbol
         'GenericToolbarIconLibrary class' bookmarks22x22
         'GenericToolbarIconLibrary class' bug16x16Icon