Merge jv
authorJan Vrany <jan.vrany@fit.cvut.cz>
Sat, 16 Jan 2016 10:41:12 +0000
branchjv
changeset 4930 7a6e813d8d17
parent 4929 4d15a7e35554 (current diff)
parent 4927 bb4b57cf335f (diff)
child 4932 f5eddfa983ab
Merge
DoWhatIMeanSupport.st
GraphColumnView2D.st
Make.proto
Make.spec
TerminalView.st
abbrev.stc
bc.mak
bmake.bat
libInit.cc
stx_libwidg2.st
vcmake.bat
--- a/.hgtags	Fri Jan 15 13:12:52 2016 +0000
+++ b/.hgtags	Sat Jan 16 10:41:12 2016 +0000
@@ -1,74 +1,75 @@
-03a3787770ed27f4484a4050c0b02b9f659ab80c expecco_1_7_1rc1
-03a3787770ed27f4484a4050c0b02b9f659ab80c expecco_1_7_1rc2
-03a3787770ed27f4484a4050c0b02b9f659ab80c expecco_1_7_1rc3
-03a3787770ed27f4484a4050c0b02b9f659ab80c expecco_1_7_1rc4
-070d3c13e766f1d9f99e3f6ae298c6b6e49e7900 expeccoNET_1_8_0_0
-155ee74fe15dffd3bcfd19a002e26e1eb87d693b expecco_2_7_5
-155ee74fe15dffd3bcfd19a002e26e1eb87d693b expecco_2_7_5a
-2274e8f6c28e375df1e03768afc73a57e608caa3 rel5_4_6
-22a0f066793d7f509cdb3aacf895abea2a73cd2e expecco_1_7_0b1
-22a0f066793d7f509cdb3aacf895abea2a73cd2e expecco_1_7_0b2
-22a0f066793d7f509cdb3aacf895abea2a73cd2e expecco_1_7_0b3
-22a0f066793d7f509cdb3aacf895abea2a73cd2e expecco_1_7_0rc1
-22dc37288c1454293ffec7cf32ff8f3e45fb5dd1 rel3_6_1
-2467d35b9a6c650e0dc1c15fae0be3cba04c21c2 expeccoNET_1_4_0rc1
-2467d35b9a6c650e0dc1c15fae0be3cba04c21c2 expecco_1_7_0rc5
-2d635ff574062f6d21c3a08120148ea06f080ec6 expeccoNET_1_6_0_0
-302ab06d71109826aeb478377e545fe342acc792 rel5_2_1
-313dc2dc2b7bd457c58fcc6fa775122bfaccfc1b expecco_2_6_2
+0411397ef0a2498ec8272c18a44f9452f4e44313 rel4_1_7
+0411397ef0a2498ec8272c18a44f9452f4e44313 release
+08e3afdffc2b1395544ec29047e1c22fe1970f0b expecco_2_2_0
+08e3afdffc2b1395544ec29047e1c22fe1970f0b expecco_2_2_5
+0a09fd78eb548312ea9859bc7d94221d809baaa1 rel5_2_1
+0e03635f5ced635c5f6c9dcaa13702c1bfc0fea5 stable_expecco_sel
+1ab5dc7d479627c3fe8b4e48bf09a55a10cede6e rel5_1_3
+1ab5dc7d479627c3fe8b4e48bf09a55a10cede6e stx_513
+250f9f98b4076066ff1b9287375e5c29b702227e expecco_1_3_4
+28f95648e3cc876a3f1d81f9809905f91d8fe1f0 expecco_ALM_1_9_5
+28f95648e3cc876a3f1d81f9809905f91d8fe1f0 expecco_ALM_1_9_6
 48ab2466447a3f12bcae5382f541479b5a8c94ec rel2_10_8_5
-49341ed1183072bfa539ccc3c8e8b062f4e9cd87 rel4_1_7
-49341ed1183072bfa539ccc3c8e8b062f4e9cd87 release
-4936edfc2eee0ea089247da7072dec7180221302 rel3_6_4
-4b9a49eceadca74fa05819ff8e27d49598c00c0d expecco_2_6_0
-4b9a49eceadca74fa05819ff8e27d49598c00c0d expecco_2_6_0_45_windows_final
-4b9a49eceadca74fa05819ff8e27d49598c00c0d expecco_2_6_0_49_windows_final
-4b9a49eceadca74fa05819ff8e27d49598c00c0d expecco_2_6_1
-50b3429eb6b401f3593326b3331699d506099a68 expeccoNET_1_7_0_0
-62bfe8d8fb4dc406a54041f1027abeb930ebbc23 rel3_4_1_1
-62bfe8d8fb4dc406a54041f1027abeb930ebbc23 rel3_4_1_2
-636df82ad7dd269b8bbd6479b1c7f21641525264 expeccoNET_1_5_1rc1
-6a48150110bed4aa7e8d98fa7f0af57cd0b47fbe expecco_2_6_0rc1
-6af2a4dea174fcfc0dcbae5e110b7a78249376eb expecco_2_2_0
-6af2a4dea174fcfc0dcbae5e110b7a78249376eb expecco_2_2_5
-6dc84e11433a420b9369937a4470c6a06e488406 rel5_1_4
-702df7addef9923d540dd7eaf43cdc258ba623c1 rel4_1_3_1
-7228edcc3fa0dec357a1031668915dd52a8f18a2 expecco_2_4_0
-7228edcc3fa0dec357a1031668915dd52a8f18a2 expecco_2_4_1
-838535cc8240d0b03578169b4352454f27230316 expecco_2_5_1
-84e3a54e32ef4ef332394ba96fa537faacf023b4 expeccoNET_1_6_8_0
-852001cc6bd5f6a91249d43a973bbe6ca4707b6b expeccoNET_1_5_0rc1
-852001cc6bd5f6a91249d43a973bbe6ca4707b6b expecco_1_8_2rc1
-8edcf98752714da6a4363bfa403300e0e96b6e35 expecco_ALM_1_9_5
-8edcf98752714da6a4363bfa403300e0e96b6e35 expecco_ALM_1_9_6
+4dea21fbacee469c6f0a79021662486d5b2b877f rel3_6_4
+51c444bfe5aeba5196e667b3c3834a96c27ca1f1 rel3_6_1
+532a328a9e0ec5da47acb16cdfeebebeed480c14 expecco_1_9_1_iX
+58b910fe451351b6f40e4ef2e5706a1f4ac486d7 expeccoALM_1_9_0_1
+5cbf651bb214a2028e31d36a9d89eb2ed18e6f18 expecco_1_5_0
+5ea9411aaac82ef8a744a3dcdacb10d47f5523a2 expecco_1_7_1rc1
+5ea9411aaac82ef8a744a3dcdacb10d47f5523a2 expecco_1_7_1rc2
+5ea9411aaac82ef8a744a3dcdacb10d47f5523a2 expecco_1_7_1rc3
+5ea9411aaac82ef8a744a3dcdacb10d47f5523a2 expecco_1_7_1rc4
+6674ba919908484b162812b8c271fa7a22d073f4 stable
+68183511e7efcb8caf7496c45d56d82648e8add4 rel5_4_6
+692abf4d8c299424fad2a04231e113b8a5e735ee rel3-1-2
+6abf010fa92f965266006d3fff30f9607aa4b19a expecco_2_5_1
+6cd0b3929aa2dfcedb66229f19dd6a454ea95cb3 expeccoNET_1_5_0rc1
+6cd0b3929aa2dfcedb66229f19dd6a454ea95cb3 expecco_1_8_2rc1
+72343b2ef436fb0631dbc7a13998d6a3ff01bc37 expecco_1_7_2rc1
+7579c3a3a9b44ba0ba860bce21102f7b5ad649ca rel5_2_8
+78122284aa8ba6215d47c594e97a91464bb43147 expecco_2_6_0rc1
+7fadc047104c3b47827ffd476f354b21cdc5ced1 expecco_2_7_0
+7fadc047104c3b47827ffd476f354b21cdc5ced1 expecco_2_7_0_49
+802ad52f18a5bc4c280a41b1bf2d84b8e2cbcc9f expeccoNET_1_5_1rc1
+8221d2e915df579ffa5cdd990b3e596649747390 expecco_2_0_0
+8221d2e915df579ffa5cdd990b3e596649747390 expecco_2_0_0_0
+845bd5d2523c7c3bcc0539addd5cb35b8c58e776 rel4_1_3_1
+84e3a54e32ef4ef332394ba96fa537faacf023b4 expeccoNET_1_6_0_0
+8aec4c5fbf5b46c42db226217dfde5a36924f20d rel5_1_4
+8b337debed52779702726cf657d19c7bdc548508 expecco_1_0_3
+915f6fa47e091bcc68e943ff1dac7086aaa92cb9 expecco_2_4_0
+915f6fa47e091bcc68e943ff1dac7086aaa92cb9 expecco_2_4_1
+963aca43a321fdf6deffafa9a7d45c307fe7c3c0 expecco_ALM_1_9_7
+99f6704c0369f001c1ce2c1ed45ee6f232a415bd expeccoNET_1_4_0rc1
+99f6704c0369f001c1ce2c1ed45ee6f232a415bd expecco_1_7_0rc5
+9b59aafa16d248acc05fc37ecee6682e52bd9c3c expecco_1_8_0rc1
 9d5cc59863e8c340851b14cf5993539eb6e5f317 rel2_10_8_6_last2
-a720a0edb5c71b2d6491e7b84da573fdc3a8cbbc expecco_1_7_0rc3
-aa775e90e539c31a61486c912d48d505bd3447aa expecco_1_6_0
-aa775e90e539c31a61486c912d48d505bd3447aa expecco_1_6_0rc5
-abed5a47e5457b66c655488b2bb9365ad1f76f68 rel3_4_3_1
-abf6fd1bc139d4bf2dcc20c0d9b9dd3dc127d015 rel3-1-2
-ac2b55f9a0ab073bc9879d13f9c80c497856d196 expecco_1_9_1_iX
-afd194220f54e0511644c524993fba9e00b184e5 expecco_2_5_0
-b5138d0a00beeef72d52d522397f317cf9ee5244 expecco_2_8_0
-b7d2f3fe5055a4f05d7612a665aecf6f50e7c7d1 expecco_1_5_0
-bc837fdacd461d14710e5b0c2d6571e89209b448 accessability
-c0f052e4f41424a557457ec6ee8acaeb2c3305a8 expeccoALM_1_9_0_1
-c4319600989e6c97585a84244e1ee52edbc832c6 rel5_2_8
-c504c98aaa492af3128570070ceaaab4dd934821 expecco_1_0_3
-c51c31744560d3a09300327d8b7e0ff66c8e404b rel5_1_3
-c51c31744560d3a09300327d8b7e0ff66c8e404b stx_513
-cf030b296e2118331050b100b251b73692f9a7bf expecco_2_7_1
-d2d772832f991835c77f5d74c55bf5e8c2fe1c02 stx_6_2_2
-d4818ca736835b4bbf55caf33b7e6f91763a0ffd expecco_2_1_0
-d793a43a8860ec3140d2b75a13453611ed2bf0bd expecco_2_7_0
-d793a43a8860ec3140d2b75a13453611ed2bf0bd expecco_2_7_0_49
-da507ebdf37d9511a63ac81d4816b3ae671e3d16 stable_expecco_sel
+a257aa6878ac44d97cb3ab314e09e8373a426826 accessability
+a335a284cf82e8476b8a5983f990a9d44be232d7 expecco_1_6_0
+a335a284cf82e8476b8a5983f990a9d44be232d7 expecco_1_6_0rc5
+a83bdc0dba68b8b9be3827e61adccf9b7e42daf2 stx_6_2_2
+aacb0c4d8dc034920ffbd618d7b023e17f9e6d84 expecco_2_5_0
+af2b69a16e0470761314b6347e1092631551391a expecco_1_7_0b1
+af2b69a16e0470761314b6347e1092631551391a expecco_1_7_0b2
+af2b69a16e0470761314b6347e1092631551391a expecco_1_7_0b3
+af2b69a16e0470761314b6347e1092631551391a expecco_1_7_0rc1
+b314d59c1654059bc0ca641723b74c526cc997f5 expeccoNET_1_7_0_0
+b956bec8751b8f510bd2a49648d076f37ff4ef49 expecco_1_7_0rc3
+b9e63b8565c102cdacb0383482cdfcf01d66084e expecco_2_7_1
+bb65b4154f8131bd7868307934b33a74e23e77a7 expeccoNET_1_8_0_0
+bf524e69869d19a7e3e33e6b7624d8cf0b160b28 expecco_1_7_0rc8
+c5204a7261c1cfdef202bf34da8af0d17a35477a expecco_2_7_5
+c5204a7261c1cfdef202bf34da8af0d17a35477a expecco_2_7_5a
 db1c1a8e0384ee00c721cebb795639489d59c2e8 rel2_10_8_6_last_before_vmData_change
-e0f4bf68e26aec58fb9c015c100d2fbe36139a13 expecco_1_3_4
-e3b9d046915df4867646a0f397f80ac5862a425c rel5_2_2
-e3c5f00861e12878d3be0ffab788097eb06b340a expecco_1_7_0rc8
-ec0aed04e61fd3745bf1a7447e3e676e53becd4a expecco_1_7_2rc1
-f293d37675b542aa16dfeecf6fbf0ea23e7b04f8 expecco_2_0_0
-f293d37675b542aa16dfeecf6fbf0ea23e7b04f8 expecco_2_0_0_0
-fd554490f4e755ba4aa1c099d44c69084c116831 expecco_1_8_0rc1
-fe119476cba35e1c2d763da2bec8968edcadf882 stable
+df82e28ca88236402c737fe5a3606cd689836532 expecco_2_1_0
+e12757d015753c1a1124b536d83f41c043d9fff6 rel3_4_1_1
+e12757d015753c1a1124b536d83f41c043d9fff6 rel3_4_1_2
+e492b99bfa39278f794507b477e0c284c2f8939e expecco_2_6_0
+e492b99bfa39278f794507b477e0c284c2f8939e expecco_2_6_0_45_windows_final
+e492b99bfa39278f794507b477e0c284c2f8939e expecco_2_6_0_49_windows_final
+e492b99bfa39278f794507b477e0c284c2f8939e expecco_2_6_1
+e6736a82809fc1e187dea347f06b35ef0fc6db2f expecco_2_6_2
+f33247cf79b9ad991bf8ff87e874d85571fa368d expecco_2_8_0
+f98873e4d965107b2849700efa3b438444c80dbe expeccoNET_1_6_8_0
+fbd05e92d50601c98440de540b3ad0c703eee00a rel3_4_3_1
+fcfa161492ae2872be77e679c257aec090a4f477 rel5_2_2
--- a/CheckBox.st	Fri Jan 15 13:12:52 2016 +0000
+++ b/CheckBox.st	Sat Jan 16 10:41:12 2016 +0000
@@ -11,6 +11,8 @@
 "
 "{ Package: 'stx:libwidg2' }"
 
+"{ NameSpace: Smalltalk }"
+
 HorizontalPanelView subclass:#CheckBox
 	instanceVariableNames:'toggleView labelView labelForegroundColor
 		disabledLabelForegroundColor disabledLabelEtchedForegroundColor
@@ -885,7 +887,8 @@
 
 nativeWindowType
     "return a symbol describing my native window type
-     (may be used internally by the device as a native window creation hint)"
+     (may be used internally by the device as a native window creation hint,
+      if the device supports native windows)"
 
     ^ #CheckBox
 
@@ -944,10 +947,10 @@
 !CheckBox class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libwidg2/CheckBox.st,v 1.91 2014-12-03 23:49:16 cg Exp $'
+    ^ '$Header$'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libwidg2/CheckBox.st,v 1.91 2014-12-03 23:49:16 cg Exp $'
+    ^ '$Header$'
 ! !
 
--- a/DoWhatIMeanSupport.st	Fri Jan 15 13:12:52 2016 +0000
+++ b/DoWhatIMeanSupport.st	Sat Jan 16 10:41:12 2016 +0000
@@ -1478,8 +1478,8 @@
            (although not yet fully implemented, non-local rewrite procedures may and will be added in the future
      For example, in many situations, both a completion of a unary selector before the cursor,
      or adding another keyword part after the cursor is possible.
-     Thus, this provides a list of completions PLUS a list of edit operations (as per completion), to
-     perform the completion.
+     Thus, this provides a list of completions PLUS a list of edit operations (as per completion), 
+     to perform the completion.
      The caller has to open a dialog, providing the suggestions, and perform the corresponding edit operation.
      An additional array containing a textual description for each suggestion is also provided, which could
      be shown as info or appended to the suggestions (such as 'complete variable', 'complete keyword', etc.
@@ -1521,14 +1521,23 @@
     partialSource := source copyTo:crsrPos.
 
     methodOrNilArg isNil ifTrue:[
+        (partialSource endsWith:Character cr) ifTrue:[
+            partialSource := partialSource copyButLast.
+        ].    
         "/ first try parsing the current cursor line.
         "/ this helps doIts in a workspace, where additional garbage is often before the actual expression to be evaluated
         (i := partialSource lastIndexOf:Character cr) ~~ 0 ifTrue:[
             "/ because cursorPositions and node-positions are required elsewhere to be correct,
             "/ I cannot just snip off the line and parse that one alone (later corrections will do so at wrong position).
-            "/ Instead, create a copy of the whole source, with the stuff before the cursor lne being blanked out.
+            "/ Instead, create a copy of the whole source, with the stuff before the cursor line being blanked out.
+            "/ However, because somewhere else, we fetch characters from the codeView using the index,
+            "/ we must preserve the line structure (i.e. keep crs).
             cursorLineSource := partialSource copy.
-            cursorLineSource from:1 to:i put:Character space.
+            1 to:i do:[:pos | 
+                (cursorLineSource at:pos) ~= Character cr ifTrue:[
+                    cursorLineSource at:pos put:Character space.
+                ]
+            ].    
             self
                 tryCodeCompletionWithSource:cursorLineSource nodeInterval:interval
                 at:crsrPos mustBeExpression:true
@@ -1560,7 +1569,7 @@
         ^ self.
     ].
 
-    "/ then try parsing the whole source (from beginning up to the cursor)
+    "/ then try parsing the whole source
     self
         tryCodeCompletionWithSource:source nodeInterval:interval
         at:crsrPos mustBeExpression:false
--- a/ImageView.st	Fri Jan 15 13:12:52 2016 +0000
+++ b/ImageView.st	Sat Jan 16 10:41:12 2016 +0000
@@ -1,5 +1,3 @@
-"{ Encoding: utf8 }"
-
 "
  COPYRIGHT (c) 1993 by Claus Gittinger
 	      All Rights Reserved
@@ -97,7 +95,9 @@
 !ImageView class methodsFor:'initialization'!
 
 initialize
-    DoNotMagnifyQuery := QuerySignal new defaultAnswer:false.
+    DoNotMagnifyQuery isNil ifTrue:[
+        DoNotMagnifyQuery := QuerySignal new defaultAnswer:false.
+    ].
 ! !
 
 !ImageView class methodsFor:'menu specs'!
@@ -718,11 +718,11 @@
 !ImageView class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libwidg2/ImageView.st,v 1.83 2015-04-24 12:10:43 stefan Exp $'
+    ^ '$Header$'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libwidg2/ImageView.st,v 1.83 2015-04-24 12:10:43 stefan Exp $'
+    ^ '$Header$'
 ! !
 
 
--- a/ListModelView.st	Fri Jan 15 13:12:52 2016 +0000
+++ b/ListModelView.st	Sat Jan 16 10:41:12 2016 +0000
@@ -158,8 +158,10 @@
 initialize
     "setup the signals
     "
-    StopRedrawSignal := Notification newSignalMayProceed:true.
-    StopRedrawSignal nameClass:self message:#stopRedrawSignal.
+    StopRedrawSignal isNil ifTrue:[
+        StopRedrawSignal := Notification newSignalMayProceed:true.
+        StopRedrawSignal nameClass:self message:#stopRedrawSignal.
+    ].
 ! !
 
 !ListModelView class methodsFor:'Signal constants'!
--- a/Make.proto	Fri Jan 15 13:12:52 2016 +0000
+++ b/Make.proto	Sat Jan 16 10:41:12 2016 +0000
@@ -176,6 +176,7 @@
 $(OUTDIR)TabulatorSpecification.$(O) TabulatorSpecification.$(H): TabulatorSpecification.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(STCHDR)
 $(OUTDIR)TerminalView.$(O) TerminalView.$(H): TerminalView.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libview/DisplaySurface.$(H) $(INCLUDE_TOP)/stx/libview/GraphicsMedium.$(H) $(INCLUDE_TOP)/stx/libview/SimpleView.$(H) $(INCLUDE_TOP)/stx/libview/View.$(H) $(INCLUDE_TOP)/stx/libwidg/EditTextView.$(H) $(INCLUDE_TOP)/stx/libwidg/ListView.$(H) $(INCLUDE_TOP)/stx/libwidg/TextCollector.$(H) $(INCLUDE_TOP)/stx/libwidg/TextView.$(H) $(STCHDR)
 $(OUTDIR)TextBox.$(O) TextBox.$(H): TextBox.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libview/DisplaySurface.$(H) $(INCLUDE_TOP)/stx/libview/GraphicsMedium.$(H) $(INCLUDE_TOP)/stx/libview/ModalBox.$(H) $(INCLUDE_TOP)/stx/libview/SimpleView.$(H) $(INCLUDE_TOP)/stx/libview/StandardSystemView.$(H) $(INCLUDE_TOP)/stx/libview/TopView.$(H) $(INCLUDE_TOP)/stx/libview/View.$(H) $(INCLUDE_TOP)/stx/libwidg/DialogBox.$(H) $(INCLUDE_TOP)/stx/libwidg/EnterBox.$(H) $(STCHDR)
+$(OUTDIR)ThumbWheel.$(O) ThumbWheel.$(H): ThumbWheel.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libview/DeviceGraphicsContext.$(H) $(INCLUDE_TOP)/stx/libview/DisplaySurface.$(H) $(INCLUDE_TOP)/stx/libview/GraphicsContext.$(H) $(INCLUDE_TOP)/stx/libview/GraphicsMedium.$(H) $(INCLUDE_TOP)/stx/libview/SimpleView.$(H) $(INCLUDE_TOP)/stx/libview/View.$(H) $(STCHDR)
 $(OUTDIR)TreeItem.$(O) TreeItem.$(H): TreeItem.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)UpDownButton.$(O) UpDownButton.$(H): UpDownButton.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libview/DisplaySurface.$(H) $(INCLUDE_TOP)/stx/libview/GraphicsMedium.$(H) $(INCLUDE_TOP)/stx/libview/SimpleView.$(H) $(INCLUDE_TOP)/stx/libview/View.$(H) $(STCHDR)
 $(OUTDIR)ViewScroller.$(O) ViewScroller.$(H): ViewScroller.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libview/DisplaySurface.$(H) $(INCLUDE_TOP)/stx/libview/GraphicsMedium.$(H) $(INCLUDE_TOP)/stx/libview/SimpleView.$(H) $(STCHDR)
--- a/Make.spec	Fri Jan 15 13:12:52 2016 +0000
+++ b/Make.spec	Sat Jan 16 10:41:12 2016 +0000
@@ -102,6 +102,7 @@
 	TabulatorSpecification \
 	TerminalView \
 	TextBox \
+	ThumbWheel \
 	TreeItem \
 	UpDownButton \
 	ViewScroller \
@@ -192,6 +193,7 @@
     $(OUTDIR_SLASH)TabulatorSpecification.$(O) \
     $(OUTDIR_SLASH)TerminalView.$(O) \
     $(OUTDIR_SLASH)TextBox.$(O) \
+    $(OUTDIR_SLASH)ThumbWheel.$(O) \
     $(OUTDIR_SLASH)TreeItem.$(O) \
     $(OUTDIR_SLASH)UpDownButton.$(O) \
     $(OUTDIR_SLASH)ViewScroller.$(O) \
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ThumbWheel.st	Sat Jan 16 10:41:12 2016 +0000
@@ -0,0 +1,771 @@
+"
+ COPYRIGHT (c) 1996 by eXept Software AG / Claus Gittinger
+	      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
+ inclusion of the above copyright notice.   This software may not
+ be provided or otherwise made available to, or used by, any
+ other person.  No title to or ownership of the software is
+ hereby transferred.
+"
+"{ Package: 'stx:libwidg2' }"
+
+View subclass:#ThumbWheel
+	instanceVariableNames:'orientation synchronousOperation thumbPosition thumbColor
+		thumbShadowColor thumbLightColor thumbEnteredColor tallyLevel
+		tallyAngle rangeStart rangeEnd rangeStep angleRange
+		unitsPerRotation entered press pressPos scrollAction
+		endlessRotation startMoveAction endMoveAction keyboardStep'
+	classVariableNames:'DefaultViewBackground DefaultThumbColor DefaultThumbShadowColor
+		DefaultThumbLightColor DefaultTallyMarks DefaultTallyLevel
+		DefaultLevel DefaultBorderWidth'
+	poolDictionaries:''
+	category:'Views-Interactors'
+!
+
+!ThumbWheel class methodsFor:'documentation'!
+
+copyright
+"
+ COPYRIGHT (c) 1996 by eXept Software AG / Claus Gittinger
+	      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
+ inclusion of the above copyright notice.   This software may not
+ be provided or otherwise made available to, or used by, any
+ other person.  No title to or ownership of the software is
+ hereby transferred.
+"
+
+
+
+!
+
+documentation
+"
+    A thumbWheel is like a slider, but looks different ...
+    ThumbWheels are useful with 3D applications, to control
+    things like rotation, translation and magnification.
+
+    [author:]
+	Claus Gittinger
+
+    [see also:]
+	Slider ScrollBar StepSlider
+"
+!
+
+examples
+"
+  basic setup:
+							[exBegin]
+    |top wheel|
+
+    top := StandardSystemView new.
+    top extent:200@200.
+
+    wheel := ThumbWheel in:top.
+    wheel orientation:#vertical.
+    wheel level:1.
+
+    wheel origin:0.0@0.0; extent:(wheel preferredExtent).
+
+    top open.
+							[exEnd]
+
+  two of them:
+							[exBegin]
+    |top wheel1 wheel2|
+
+    top := StandardSystemView new.
+    top extent:200@200.
+
+    wheel1 := ThumbWheel in:top.
+    wheel1 orientation:#vertical.
+    wheel1 level:1.
+
+    wheel1 origin:0.0@0.0; extent:(wheel1 preferredExtent).
+
+    wheel2 := ThumbWheel in:top.
+    wheel2 orientation:#horizontal.
+    wheel2 level:1.
+
+    wheel2 origin:0.0@1.0; extent:(wheel2 preferredExtent).
+    wheel2 topInset:(wheel2 preferredExtent y negated).
+    wheel2 bottomInset:(wheel2 preferredExtent y).
+    top open.
+							[exEnd]
+
+  performing an action:
+							[exBegin]
+    |top wheel|
+
+    top := StandardSystemView new.
+    top extent:200@200.
+
+    wheel := ThumbWheel in:top.
+    wheel orientation:#vertical.
+    wheel level:1.
+
+    wheel origin:0.0@0.0; extent:(wheel preferredExtent).
+    wheel scrollAction:[:value | Transcript showCR:value rounded].
+    top open.
+							[exEnd]
+  operating on a model:
+							[exBegin]
+    |top wheel model|
+
+    model := ValueHolder new.
+    model
+	onChangeSend:#value
+	to:[Transcript show:'value now: '; showCR:model value rounded].
+
+    top := StandardSystemView new.
+    top extent:200@200.
+
+    wheel := ThumbWheel in:top.
+    wheel orientation:#vertical.
+    wheel level:1.
+
+    wheel origin:0.0@0.0; extent:(wheel preferredExtent).
+    wheel model:model.
+    top open.
+							[exEnd]
+  endless rotation:
+							[exBegin]
+    |top wheel model|
+
+    model := ValueHolder new.
+    model
+	onChangeSend:#value
+	to:[Transcript show:'value now: '; showCR:model value rounded].
+
+    top := StandardSystemView new.
+    top extent:200@200.
+
+    wheel := ThumbWheel in:top.
+    wheel orientation:#vertical.
+    wheel level:1.
+    wheel endlessRotation:true.
+
+    wheel origin:0.0@0.0; extent:(wheel preferredExtent).
+    wheel model:model.
+    top open.
+							[exEnd]
+  concrete example:
+							[exBegin]
+    |top wheel1 wheel2 image magX magY hHolder vHolder imageView|
+
+    magX := magY := 1.
+
+    hHolder := ValueHolder new.
+    hHolder
+	onChangeSend:#value
+	to:[
+	    magX := hHolder value * 2 / 360.
+	    magX = 0 ifTrue:[magX := 0.01].
+	    Transcript show:'magX now '; showCR:magX.
+	    imageView clear.
+	    imageView magnification:magX@magY].
+
+    vHolder := ValueHolder new.
+    vHolder
+	onChangeSend:#value
+	to:[
+	    magY := vHolder value * 2 / 360.
+	    magY = 0 ifTrue:[magY := 0.01].
+	    Transcript show:'magY now '; showCR:magY.
+	    imageView clear.
+	    imageView magnification:magX@magY].
+
+    top := StandardSystemView new.
+    top extent:200@200.
+
+    wheel1 := ThumbWheel in:top.
+    wheel1 orientation:#vertical.
+    wheel1 level:1.
+    wheel1 origin:0.0@0.0; extent:(wheel1 preferredExtent).
+    wheel1 model:vHolder.
+
+    wheel2 := ThumbWheel in:top.
+    wheel2 orientation:#horizontal.
+    wheel2 level:1.
+    wheel2 origin:0.0@1.0; extent:(wheel2 preferredExtent).
+    wheel2 topInset:(wheel2 preferredExtent y negated).
+    wheel2 bottomInset:(wheel2 preferredExtent y).
+    wheel2 model:hHolder.
+
+    imageView := ImageEditView in:top.
+    imageView level:1.
+    imageView origin:0.0@0.0 corner:1.0@1.0.
+    imageView leftInset:(wheel1 preferredExtent x).
+    imageView bottomInset:(wheel2 preferredExtent y).
+    imageView image:(Image fromFile:'bitmaps/garfield.gif').
+    top open.
+							[exEnd]
+
+"
+! !
+
+!ThumbWheel methodsFor:'accessing'!
+
+keyboardStep
+    "return the scrollers keyboard step. If non-nil,
+     thats the stepping value used with cursorUp/cursorDown keys.
+     (not used with Scrollers, but provided for subclasses)"
+
+    ^ keyboardStep
+
+!
+
+keyboardStep:aNumber
+    "set the scrollers keyboard step. If non-nil,
+     thats the stepping value used with cursorUp/cursorDown keys.
+     (not used with Scrollers, but provided for subclasses)"
+
+    keyboardStep := aNumber
+
+!
+
+start
+    "return the wheels range minimum."
+
+    ^ rangeStart
+
+    "Created: 1.4.1997 / 12:30:04 / cg"
+    "Modified: 1.4.1997 / 12:52:31 / cg"
+!
+
+start:aNumber
+    "set the wheels range minimum."
+
+    rangeStart := aNumber
+
+    "Created: 1.4.1997 / 12:30:54 / cg"
+    "Modified: 1.4.1997 / 12:52:36 / cg"
+!
+
+start:start stop:stop
+    "set the wheels range minimum."
+
+    rangeStart := start.
+    rangeEnd := stop.
+
+    "Modified: / 1.4.1997 / 12:52:36 / cg"
+    "Created: / 23.1.1998 / 15:06:04 / cg"
+!
+
+step
+    "return the wheels range step."
+
+    ^ rangeStep
+
+    "Created: 1.4.1997 / 12:30:15 / cg"
+    "Modified: 1.4.1997 / 12:53:05 / cg"
+!
+
+step:aNumber
+    "set the wheels range step."
+
+    rangeStep := aNumber
+
+    "Created: 1.4.1997 / 12:30:32 / cg"
+    "Modified: 1.4.1997 / 12:52:49 / cg"
+!
+
+stop
+    "return the wheels range end."
+
+    ^ rangeEnd
+
+    "Created: 1.4.1997 / 12:30:09 / cg"
+    "Modified: 1.4.1997 / 12:52:59 / cg"
+!
+
+stop:aNumber
+    "set the wheels range end."
+
+    rangeEnd := aNumber
+
+    "Created: 1.4.1997 / 12:30:47 / cg"
+    "Modified: 1.4.1997 / 12:52:54 / cg"
+!
+
+thumbOrigin:pos
+    "same as thumbPosition (for protocol compatibility with sliders)"
+
+    self thumbPosition:pos
+
+    "Created: / 21.4.1998 / 20:57:20 / cg"
+    "Modified: / 21.4.1998 / 20:58:43 / cg"
+!
+
+thumbPosition
+    "sreturn the position"
+
+    ^ thumbPosition
+
+    "Created: / 21.4.1998 / 20:58:15 / cg"
+!
+
+thumbPosition:pos
+    "set the wheels position; the argument should be in the start..stop
+     interval."
+
+    |newPos delta|
+
+    delta := (rangeEnd-rangeStart).
+
+    newPos := pos.
+    endlessRotation ifTrue:[
+	[newPos < rangeStart] whileTrue:[
+	    newPos := newPos + delta
+	].
+	[newPos > rangeEnd] whileTrue:[
+	    newPos := newPos - delta
+	].
+    ].
+    newPos := (newPos max:rangeStart) min:rangeEnd.
+
+    rangeStep notNil ifTrue:[
+	newPos := newPos roundTo:rangeStep.
+	rangeStep isInteger ifTrue:[
+	    newPos := newPos asInteger
+	]
+    ].
+
+    newPos ~= thumbPosition ifTrue:[
+	thumbPosition := newPos.
+	shown ifTrue:[
+	    self invalidate.
+	]
+    ].
+
+    "Created: / 27.9.1996 / 18:10:57 / cg"
+    "Modified: / 6.6.1998 / 23:29:28 / cg"
+! !
+
+!ThumbWheel methodsFor:'accessing-behavior'!
+
+endMoveAction
+    "set the endMoveAction, a block which is evaluated when the wheel
+     stops to move (i.e. the user releases the mouse).
+     The default is nil (i.e. no action)"
+
+    ^ endMoveAction
+
+    "Created: / 18.8.1998 / 16:29:40 / cg"
+    "Modified: / 18.8.1998 / 16:31:41 / cg"
+!
+
+endMoveAction:aBlock
+    "set the endMoveAction, a block which is evaluated when the wheel
+     stops to move (i.e. the user releases the mouse)."
+
+    endMoveAction := aBlock.
+
+    "Created: / 18.8.1998 / 16:30:40 / cg"
+!
+
+endlessRotation:aBoolean
+    "if true, rotation wraps and endless rotation is permitted.
+     If false (the default), rotation ends at rangeStart/rangeEnd."
+
+    endlessRotation := aBoolean
+
+    "Created: / 5.2.1998 / 22:20:28 / cg"
+!
+
+scrollAction
+    "return the scrollAction, a block which is evaluated when the wheel
+     is turned (i.e. for every change)."
+
+    ^ scrollAction
+
+    "Modified: / 18.8.1998 / 16:31:59 / cg"
+!
+
+scrollAction:aBlock
+    "set the scrollAction, a block which is evaluated when the wheel
+     is turned (i.e. for every change)."
+
+    scrollAction := aBlock.
+
+    "Modified: / 18.8.1998 / 16:31:52 / cg"
+!
+
+startMoveAction
+    "return the startMoveAction, a block which is evaluated when the wheel
+     starts to turn (i.e. the user clicks on it).
+     The default is nil (i.e. no action)"
+
+    ^ startMoveAction
+
+    "Created: / 18.8.1998 / 16:29:36 / cg"
+    "Modified: / 18.8.1998 / 16:31:16 / cg"
+!
+
+startMoveAction:aBlock
+    "set the startMoveAction, a block which is evaluated when the wheel
+     starts to turn (i.e. the user clicks on it)."
+
+    startMoveAction := aBlock.
+
+    "Modified: / 18.8.1998 / 16:30:53 / cg"
+! !
+
+!ThumbWheel methodsFor:'accessing-look'!
+
+orientation
+    "return the wheels orientation; #horizontal or #vertical"
+
+    ^ orientation
+
+    "Created: 1.4.1997 / 12:29:46 / cg"
+!
+
+orientation:aSymbol
+    "set the wheels orientation; the argument may be one of
+     #horizontal or #vertical"
+
+    orientation := aSymbol.
+    shown ifTrue:[
+	self invalidate
+    ]
+
+    "Created: 27.9.1996 / 16:02:14 / cg"
+    "Modified: 1.4.1997 / 12:50:22 / cg"
+! !
+
+!ThumbWheel methodsFor:'drawing'!
+
+redrawX:x y:y width:w height:h
+    "redraw the thumbWheel.
+     Q: is it worth the effort - or should we simply use some bitmap ?"
+
+    |halfHeight y0 y1 halfWidth x0 x1 thumbColor|
+
+    halfHeight := height // 2.
+    halfWidth := width // 2.
+    y0 := 4.
+    y1 := height - 4.
+    x0 := 4.
+    x1 := width - 4.
+
+    self paint:viewBackground. "/ View defaultViewBackgroundColor.
+    self fillRectangleX:x y:y width:w height:h.
+
+    thumbColor := View defaultViewBackgroundColor.
+    thumbColor ~= viewBackground ifTrue:[
+	self paint:thumbColor.
+	orientation == #vertical ifTrue:[
+	    self fillRectangleX:3 y:y0 width:width-6 height:height-8.
+	] ifFalse:[
+	    self fillRectangleX:x0 y:3 width:width-8 height:height-6.
+	]
+    ].
+
+    ((thumbPosition truncateTo:tallyAngle))
+    to:((thumbPosition + angleRange truncateTo:tallyAngle)+tallyAngle) by:tallyAngle do:[:a |
+	|yT pA xT d|
+
+	pA := a - thumbPosition.
+	d := (pA degreesToRadians cos).
+	yT := halfHeight + (d * (halfHeight - 4)) - 1.
+	xT := halfWidth + (d * (halfWidth - 4)) - 1.
+
+	xT := xT min:x1.
+	yT := yT min:y1.
+
+	(pA > (angleRange * 7 // 8)) ifTrue:[
+	    self paint:shadowColor
+	] ifFalse:[
+	    self paint:Color black.
+	].
+
+	orientation == #vertical ifTrue:[
+	    self displayLineFromX:3 y:yT toX:width-4 y:yT.
+	] ifFalse:[
+	    self displayLineFromX:xT y:3 toX:xT y:height-4.
+	].
+
+	(pA between:(angleRange * 4 // 8) and:(angleRange * 7 // 8)) ifTrue:[
+	    self paint:Color white.
+	    orientation == #vertical ifTrue:[
+		self displayLineFromX:3 y:yT-1 toX:width-5 y:yT-1.
+	    ] ifFalse:[
+		self displayLineFromX:xT-1 y:3 toX:xT-1 y:height-5.
+	    ].
+
+	    (pA between:(angleRange * 4 // 8) and:(angleRange * 6 // 8)) ifTrue:[
+		self paint:Color white.
+		orientation == #vertical ifTrue:[
+		    self displayLineFromX:3 y:yT-2 toX:width-5 y:yT-2.
+		] ifFalse:[
+		    self displayLineFromX:xT-2 y:3 toX:xT-2 y:height-5.
+		]
+	    ]
+	]
+    ].
+
+    self paint:Color white. "/lightColor.
+    orientation == #vertical ifTrue:[
+	self displayLineFromX:2 y:y0 toX:2 y:y1.
+    ] ifFalse:[
+	self displayLineFromX:x0 y:2 toX:x1 y:2.
+    ].
+
+    self paint:shadowColor.
+    orientation == #vertical ifTrue:[
+	self displayLineFromX:width-4 y:y0 toX:width-4 y:y1.
+    ] ifFalse:[
+	self displayLineFromX:x0 y:height-4 toX:x1 y:height-4.
+    ].
+    self displayLineFromX:width-4 y:y0-1 toX:width-4 y:y1+1.
+
+    orientation == #vertical ifTrue:[
+	self displayLineFromX:width-4 y:y0 toX:width-4 y:y1.
+    ] ifFalse:[
+	self displayLineFromX:x0 y:height-4 toX:x1 y:height-4.
+    ].
+
+    "Created: / 27.9.1996 / 16:04:49 / cg"
+    "Modified: / 6.6.1998 / 23:30:38 / cg"
+! !
+
+!ThumbWheel methodsFor:'events'!
+
+buttonMotion:state x:x y:y
+    |deltaY deltaX d oldPos newPos|
+
+    (state == 0 or:[press isNil]) ifTrue:[
+	^ self
+    ].
+    deltaY := y - press y.
+    deltaX := x - press x.
+
+    "/scale acc. to angleRange
+    orientation == #vertical ifTrue:[
+	d := deltaY / height * angleRange.
+    ] ifFalse:[
+	d := deltaX / width * angleRange
+    ].
+    rangeStep notNil ifTrue:[
+	d := d * (rangeStep * 3)
+    ].
+
+    oldPos := thumbPosition.
+    newPos := pressPos + d.
+
+"/    newPos > rangeEnd ifTrue:[
+"/        newPos := rangeEnd
+"/    ].
+"/    newPos < rangeStart ifTrue:[
+"/        newPos := rangeStart
+"/    ].
+
+    newPos ~= oldPos ifTrue:[
+	self thumbPosition:newPos.
+	self repairDamage.
+
+	synchronousOperation ifTrue: [
+	    self tellOthers.
+	].
+    ].
+
+    "Created: / 27.9.1996 / 17:38:57 / cg"
+    "Modified: / 16.6.1998 / 10:24:40 / cg"
+!
+
+buttonPress:button x:x y:y
+    press := x@y.
+
+    "/ fetch the current value; to avoid a jump.
+    model notNil ifTrue:[
+	thumbPosition := (model value ? 0).
+    ].
+    pressPos := thumbPosition.
+    startMoveAction notNil ifTrue:[
+	startMoveAction value
+    ].
+
+    "Created: / 27.9.1996 / 17:37:57 / cg"
+    "Modified: / 18.8.1998 / 16:32:21 / cg"
+!
+
+buttonRelease:button x:x y:y
+    synchronousOperation ifFalse: [
+	self tellOthers.
+    ].
+    endMoveAction notNil ifTrue:[
+	endMoveAction value
+    ].
+
+    "Created: / 27.9.1996 / 18:13:35 / cg"
+    "Modified: / 18.8.1998 / 16:32:30 / cg"
+!
+
+keyPress:key x:x y:y
+    <resource: #keyboard (#CursorRight #CursorUp #CursorLeft #CursorDown #+ #-)>
+
+    |step|
+
+    step := self verticalScrollStep.
+
+    (key == #CursorRight
+    or:[key == #CursorDown
+    or:[key == $+]]) ifTrue:[
+	self scrollStep:step.
+	^ self
+    ].
+
+    (key == #CursorLeft
+    or:[key == #CursorUp
+    or:[key == $-]]) ifTrue:[
+	self scrollStep:step negated.
+	^ self
+    ].
+
+    super keyPress:key x:x y:y
+
+    "Modified: / 21.4.1998 / 20:49:32 / cg"
+    "Created: / 21.4.1998 / 20:55:29 / cg"
+!
+
+sizeChanged:how
+    super sizeChanged:how.
+    shown ifTrue:[
+	self invalidate
+    ]
+
+    "Created: / 18.4.1998 / 02:36:04 / cg"
+    "Modified: / 18.4.1998 / 14:10:16 / cg"
+!
+
+update:something with:aParameter from:changedObject
+    "handle update from a model (if any)"
+
+    (changedObject == model
+    "and:[something == aspectMsg]") ifTrue:[
+	self thumbPosition:(model value ? 0).
+	^ self
+    ].
+    super update:something with:aParameter from:changedObject
+
+    "Modified: / 16.6.1998 / 10:25:42 / cg"
+! !
+
+!ThumbWheel methodsFor:'forced scroll'!
+
+scrollDown:amountToScroll
+    "compatibility with SimpleView. This allows mouse wheel actions on Scrollers
+     Note: this is used for horizontal scrollers, too (scrollRight)"
+
+    self scrollStep:amountToScroll
+!
+
+scrollStep:delta
+    "step by some delta"
+
+    |oldOrg newOrg|
+
+    oldOrg := thumbPosition.
+    newOrg := ((oldOrg + delta) max:rangeStart) min:rangeEnd.
+    oldOrg ~= newOrg ifTrue:[
+	self thumbOrigin:newOrg.
+	self tellOthers.
+    ]
+
+    "Created: / 21.4.1998 / 20:56:15 / cg"
+    "Modified: / 21.4.1998 / 20:59:25 / cg"
+!
+
+scrollUp:amountToScroll
+    "compatibility with SimpleView. This allows mouse wheel actions on Scrollers
+     Note: this is used for horizontal scrollers, too (scrollLeft)"
+
+    self scrollStep:amountToScroll negated
+! !
+
+!ThumbWheel methodsFor:'initialization'!
+
+initialize
+    "initialize - setup instvars from defaults"
+
+    super initialize.
+
+    orientation isNil ifTrue:[orientation := #vertical].
+
+    entered := false.
+    synchronousOperation := true.
+    endlessRotation := false.
+
+    thumbPosition := 0.
+
+    rangeStart := 0.
+    rangeEnd := 360.
+    rangeStep := nil.   "/ meaning: arbitrary precision
+
+    angleRange := 150.  "/ 180 degrees are visible
+    tallyAngle := 10.   "/ tally every 10 degrees
+    unitsPerRotation := 360.
+
+    "Modified: / 5.2.1998 / 22:20:39 / cg"
+! !
+
+!ThumbWheel methodsFor:'private'!
+
+tellOthers
+    "notify others of a change"
+
+    "
+     the ST/X way of notifying scrolls
+    "
+    scrollAction notNil ifTrue:[
+	scrollAction value:thumbPosition
+    ].
+    "
+     the ST-80 way of notifying scrolls
+    "
+    self sendChangeMessageWith:thumbPosition.
+    self changed:#scrollerPosition.
+
+    "Created: 27.9.1996 / 18:14:02 / cg"
+    "Modified: 28.5.1997 / 16:04:16 / cg"
+! !
+
+!ThumbWheel methodsFor:'queries'!
+
+preferredExtent
+    "return a useful default extent"
+
+    |ppmm|
+
+    preferredExtent isNil ifTrue:[
+	ppmm := self graphicsDevice pixelPerMillimeter.
+	orientation == #vertical ifTrue:[
+	    preferredExtent := (ppmm * (5 @ 30)) rounded
+	] ifFalse:[
+	    preferredExtent := (ppmm * (30 @ 5)) rounded
+	].
+    ].
+
+    ^ preferredExtent
+
+    "Modified: 28.5.1997 / 16:03:55 / cg"
+!
+
+verticalScrollStep
+    "mouse wheel: scroll step
+     Note: this is used for horizontal scrollers, too"
+
+    ^ keyboardStep ? (rangeEnd - rangeStart / 10)
+! !
+
+!ThumbWheel class methodsFor:'documentation'!
+
+version
+    ^ '$Header$'
+! !
--- a/bc.mak	Fri Jan 15 13:12:52 2016 +0000
+++ b/bc.mak	Sat Jan 16 10:41:12 2016 +0000
@@ -126,6 +126,7 @@
 $(OUTDIR)TabulatorSpecification.$(O) TabulatorSpecification.$(H): TabulatorSpecification.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(STCHDR)
 $(OUTDIR)TerminalView.$(O) TerminalView.$(H): TerminalView.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libview\DisplaySurface.$(H) $(INCLUDE_TOP)\stx\libview\GraphicsMedium.$(H) $(INCLUDE_TOP)\stx\libview\SimpleView.$(H) $(INCLUDE_TOP)\stx\libview\View.$(H) $(INCLUDE_TOP)\stx\libwidg\EditTextView.$(H) $(INCLUDE_TOP)\stx\libwidg\ListView.$(H) $(INCLUDE_TOP)\stx\libwidg\TextCollector.$(H) $(INCLUDE_TOP)\stx\libwidg\TextView.$(H) $(STCHDR)
 $(OUTDIR)TextBox.$(O) TextBox.$(H): TextBox.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libview\DisplaySurface.$(H) $(INCLUDE_TOP)\stx\libview\GraphicsMedium.$(H) $(INCLUDE_TOP)\stx\libview\ModalBox.$(H) $(INCLUDE_TOP)\stx\libview\SimpleView.$(H) $(INCLUDE_TOP)\stx\libview\StandardSystemView.$(H) $(INCLUDE_TOP)\stx\libview\TopView.$(H) $(INCLUDE_TOP)\stx\libview\View.$(H) $(INCLUDE_TOP)\stx\libwidg\DialogBox.$(H) $(INCLUDE_TOP)\stx\libwidg\EnterBox.$(H) $(STCHDR)
+$(OUTDIR)ThumbWheel.$(O) ThumbWheel.$(H): ThumbWheel.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libview\DeviceGraphicsContext.$(H) $(INCLUDE_TOP)\stx\libview\DisplaySurface.$(H) $(INCLUDE_TOP)\stx\libview\GraphicsContext.$(H) $(INCLUDE_TOP)\stx\libview\GraphicsMedium.$(H) $(INCLUDE_TOP)\stx\libview\SimpleView.$(H) $(INCLUDE_TOP)\stx\libview\View.$(H) $(STCHDR)
 $(OUTDIR)TreeItem.$(O) TreeItem.$(H): TreeItem.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)UpDownButton.$(O) UpDownButton.$(H): UpDownButton.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libview\DisplaySurface.$(H) $(INCLUDE_TOP)\stx\libview\GraphicsMedium.$(H) $(INCLUDE_TOP)\stx\libview\SimpleView.$(H) $(INCLUDE_TOP)\stx\libview\View.$(H) $(STCHDR)
 $(OUTDIR)ViewScroller.$(O) ViewScroller.$(H): ViewScroller.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libview\DisplaySurface.$(H) $(INCLUDE_TOP)\stx\libview\GraphicsMedium.$(H) $(INCLUDE_TOP)\stx\libview\SimpleView.$(H) $(STCHDR)
--- a/bmake.bat	Fri Jan 15 13:12:52 2016 +0000
+++ b/bmake.bat	Sat Jan 16 10:41:12 2016 +0000
@@ -4,9 +4,7 @@
 @REM do not edit - automatically generated from ProjectDefinition
 @REM -------
 @SET DEFINES=
-@REM Kludge got Mercurial, cannot be implemented in Borland make
-@FOR /F "tokens=*" %%i in ('hg root') do SET HGROOT=%%i
-@IF "%HGROOT%" NEQ "" SET DEFINES=%DEFINES% "-DHGROOT=%HGROOT%"
+
 
 make.exe -N -f bc.mak  %DEFINES% %*
 
--- a/libInit.cc	Fri Jan 15 13:12:52 2016 +0000
+++ b/libInit.cc	Sat Jan 16 10:41:12 2016 +0000
@@ -78,6 +78,7 @@
 _TabulatorSpecification_Init(pass,__pRT__,snd);
 _TerminalView_Init(pass,__pRT__,snd);
 _TextBox_Init(pass,__pRT__,snd);
+_ThumbWheel_Init(pass,__pRT__,snd);
 _TreeItem_Init(pass,__pRT__,snd);
 _UpDownButton_Init(pass,__pRT__,snd);
 _ViewScroller_Init(pass,__pRT__,snd);
--- a/libwidg2.rc	Fri Jan 15 13:12:52 2016 +0000
+++ b/libwidg2.rc	Sat Jan 16 10:41:12 2016 +0000
@@ -3,7 +3,7 @@
 // automagically generated from the projectDefinition: stx_libwidg2.
 //
 VS_VERSION_INFO VERSIONINFO
-  FILEVERSION     6,2,1,52
+  FILEVERSION     6,2,1,56
   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 Additional Widgets (LIB)\0"
-      VALUE "FileVersion", "6.2.1.52\0"
+      VALUE "FileVersion", "6.2.1.56\0"
       VALUE "InternalName", "stx:libwidg2\0"
-      VALUE "LegalCopyright", "Copyright Claus Gittinger 1988-2012\nCopyright eXept Software AG 1998-2012\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", "Fri, 01 May 2015 14:41:38 GMT\0"
+      VALUE "ProductDate", "Fri, 15 Jan 2016 19:51:07 GMT\0"
     END
 
   END
--- a/mingwmake.bat	Fri Jan 15 13:12:52 2016 +0000
+++ b/mingwmake.bat	Sat Jan 16 10:41:12 2016 +0000
@@ -4,9 +4,6 @@
 @REM do not edit - automatically generated from ProjectDefinition
 @REM -------
 @SET DEFINES=
-@REM Kludge got Mercurial, cannot be implemented in Borland make
-@FOR /F "tokens=*" %%i in ('hg root') do SET HGROOT=%%i
-@IF "%HGROOT%" NEQ "" SET DEFINES=%DEFINES% "-DHGROOT=%HGROOT%"
 
 @pushd ..\rules
 @call find_mingw.bat
--- a/stx_libwidg2.st	Fri Jan 15 13:12:52 2016 +0000
+++ b/stx_libwidg2.st	Sat Jan 16 10:41:12 2016 +0000
@@ -71,6 +71,8 @@
         #'stx:goodies/refactoryBrowser/parser'    "RBParser - referenced by DoWhatIMeanSupport class>>findNodeForInterval:in: "
         #'stx:libcomp'    "Parser - referenced by DoWhatIMeanSupport class>>codeCompletionForMessage:inClass:codeView: "
         #'stx:libhtml'    "HTMLDocumentView - referenced by LicenceBox>>initialize "
+        #'stx:goodies/refactoryBrowser/browser'    "RefactoryTyper - referenced by DoWhatIMeanSupport>>codeCompletionForMessage:inClass:instance:context:codeView:"
+        #'stx:libboss'    "ObsoleteObject - referenced by DoWhatIMeanSupport>>codeCompletionForMessage:inClass:instance:context:codeView:"
     )
 !
 
@@ -102,7 +104,6 @@
      by searching all classes (and their packages) which are referenced by my classes."
 
     ^ #(
-        #'stx:goodies/refactoryBrowser/browser'    "RefactoryTyper - referenced by DoWhatIMeanSupport>>codeCompletionForMessage:inClass:instance:context:codeView:"
         #'stx:libui'    "ComboBoxSpec - referenced by ComboBoxView>>specClass"
     )
 !
@@ -194,6 +195,7 @@
         TabulatorSpecification
         TerminalView
         TextBox
+        ThumbWheel
         TreeItem
         UpDownButton
         ViewScroller