Marcel Taeumel uploaded a new version of Morphic to project The Trunk:
http://source.squeak.org/trunk/Morphic-mt.1644.mcz
==================== Summary ====================
Name: Morphic-mt.1644
Author: mt
Time: 15 April 2020, 3:08:24.191047 pm
UUID: 230c1e8d-5cad-1d44-a3db-29bc3887e602
Ancestors: Morphic-mt.1643
Revising the latest fix in TableLayout. Thanks to Levente for pointing this out. There is no benefit in renaming "arrangement" into "cells".
=============== Diff against Morphic-mt.1643 ===============
Item was changed:
----- Method: TableLayout>>computeExtraSpacing:in:horizontal:target: (in category 'layout') -----
computeExtraSpacing: arrangement in: newBounds horizontal: aBool target: aMorph
"Compute the required extra spacing for laying out the cells"
"match newBounds extent with arrangement's orientation"
| extent extra centering n extraPerCell cell last hFill vFill max amount allow |
extent := newBounds extent.
aBool ifFalse: [extent := extent transposed].
"figure out if we have any horizontal or vertical space fillers"
hFill := vFill := false.
max := 0 @ 0.
arrangement do:
[:c |
max := (max x max: c cellSize x) @ (max y + c cellSize y).
max := max max: c cellSize.
hFill := hFill or: [c hSpaceFill].
vFill := vFill or: [c vSpaceFill]].
"Take client's shrink wrap constraints into account.
Note: these are only honored when there are no #spaceFill children,
or when #rubberBandCells is set."
allow := properties rubberBandCells not.
aMorph hResizing == #shrinkWrap
ifTrue:
[aBool
ifTrue: [allow & hFill ifFalse: [extent := max x @ (max y max: extent y)]]
ifFalse: [allow & vFill ifFalse: [extent := (max x max: extent x) @ max y]]].
aMorph vResizing == #shrinkWrap
ifTrue:
[aBool
ifFalse: [allow & hFill ifFalse: [extent := max x @ (max y max: extent y)]]
ifTrue: [allow & vFill ifFalse: [extent := (max x max: extent x) @ max y]]].
"Now compute the extra v space"
extra := extent y
- (arrangement inject: 0 into: [:sum :c | sum + c cellSize y]).
extra > 0
ifTrue:
["Check if we have any #spaceFillers"
vFill
ifTrue:
["use only #spaceFillers"
n := arrangement inject: 0
into: [:sum :c | c vSpaceFill ifTrue: [sum + 1] ifFalse: [sum]].
n isZero ifFalse: [extraPerCell := extra asFloat / n asFloat].
extra := last := 0.
arrangement do:
[:c |
c vSpaceFill
ifTrue:
[extra := (last := extra) + extraPerCell.
amount := 0 @ (extra truncated - last truncated).
c do: [:cc | cc cellSize: cc cellSize + amount]]]]
ifFalse:
["no #spaceFillers; distribute regularly"
centering := properties wrapCentering.
"centering == #topLeft ifTrue:[]." "add all extra space to the last cell; e.g., do nothing"
centering == #bottomRight
ifTrue:
["add all extra space to the first cell"
+ arrangement ifNotEmpty: [arrangement first addExtraSpace: 0 @ extra]].
- arrangement ifNotEmpty: [:cells | cells first addExtraSpace: 0 @ extra]].
centering == #center
ifTrue:
["add 1/2 extra space to the first and last cell"
+ arrangement ifNotEmpty: [arrangement first addExtraSpace: 0 @ (extra // 2)]].
- arrangement ifNotEmpty: [:cells | cells first addExtraSpace: 0 @ (extra // 2)]].
centering == #justified
ifTrue:
["add extra space equally distributed to each cell"
n := arrangement size - 1 max: 1.
extraPerCell := extra asFloat / n asFloat.
extra := last := 0.
arrangement do:
[:c |
c addExtraSpace: 0 @ (extra truncated - last truncated).
extra := (last := extra) + extraPerCell]]]].
"Now compute the extra space for the primary direction"
centering := properties listCentering.
1 to: arrangement size
do:
[:i |
cell := arrangement at: i.
extra := extent x - cell cellSize x.
extra > 0
ifTrue:
["Check if we have any #spaceFillers"
cell := cell nextCell.
cell hSpaceFill
ifTrue:
["use only #spaceFillers"
n := cell inject: 0
into: [:sum :c | c hSpaceFill ifTrue: [sum + c target spaceFillWeight] ifFalse: [sum]].
n isZero ifFalse: [extraPerCell := extra asFloat / n asFloat].
extra := last := 0.
cell do:
[:c |
c hSpaceFill
ifTrue:
[extra := (last := extra) + (extraPerCell * c target spaceFillWeight).
amount := extra truncated - last truncated.
c cellSize: c cellSize + (amount @ 0)]]]
ifFalse:
["no #spaceFiller; distribute regularly"
"centering == #topLeft ifTrue:[]" "add all extra space to the last cell; e.g., do nothing"
centering == #bottomRight
ifTrue:
["add all extra space to the first cell"
cell addExtraSpace: extra @ 0].
centering == #center
ifTrue:
["add 1/2 extra space to the first and last cell"
cell addExtraSpace: (extra // 2) @ 0].
centering == #justified
ifTrue:
["add extra space equally distributed to each cell"
n := cell size - 1 max: 1.
extraPerCell := extra asFloat / n asFloat.
extra := last := 0.
cell do:
[:c |
c addExtraSpace: (extra truncated - last truncated) @ 0.
extra := (last := extra) + extraPerCell]]]]]!
Marcel Taeumel uploaded a new version of System to project The Trunk:
http://source.squeak.org/trunk/System-mt.1151.mcz
==================== Summary ====================
Name: System-mt.1151
Author: mt
Time: 15 April 2020, 11:08:14.421692 am
UUID: ed2417d1-2e26-7048-90a0-6ecadf2ade6f
Ancestors: System-mt.1150
Fix typo and choose a more friendly color for text highlights in trees in Squeak's standard UI theme. For example, those highlights are used for indicating monitors on nodes in the ObjectExplorer's tree. I hope you agree that that color should not indicate an erroneous state. So red felt kind of harsh.
=============== Diff against System-mt.1150 ===============
Item was changed:
----- Method: SqueakTheme class>>addScrollables: (in category 'instance creation') -----
addScrollables: theme
"self create apply"
"Sliders"
theme
set: #borderColor for: #Slider to: Color gray;
set: #borderWidth for: #Slider to: 1;
set: #color for: #Slider to: Color lightGray;
set: #thumbBorderColor for: #Slider to: [Color gray: 0.6];
set: #thumbBorderWidth for: #Slider to: 0;
set: #thumbColor for: #Slider to: Color veryVeryLightGray;
set: #thumbShadowModifier for: #Slider to: [ [:c | c alpha: 0.7] ].
"Scroll bars"
theme
set: #thumbBorderWidth for: #ScrollBar to: 1;
set: #thumbColorModifier for: #ScrollBar to: [ [:c | c] ];
set: #pagingAreaColorModifier for: #ScrollBar to: [ [:c | c darker alpha: 0.35] ];
set: #borderColorModifier for: #ScrollBar to: [ [:c | c adjustBrightness: -0.3] ].
"Scroll panes (includes generic stuff for list widgets, tree widgets, and text widgets."
theme
set: #borderColor for: #ScrollPane to: (Color gray: 0.6);
set: #borderWidth for: #ScrollPane to: 1;
set: #borderStyle for: #ScrollPane to: BorderStyle simple;
set: #color for: #ScrollPane to: Color white.
"List widgets"
theme
set: #font for: #PluggableListMorph to: [Preferences standardListFont];
set: #textColor for: #PluggableListMorph to: Color black;
set: #selectionColor for: #PluggableListMorph to: (Color r: 0.72 g: 0.72 b: 0.9);
derive: #multiSelectionColor for: #PluggableListMorph from: #PluggableListMorph at: #selectionColor do: [:c | c lighter];
set: #selectionTextColor for: #PluggableListMorph to: Color black;
set: #filterColor for: #PluggableListMorph to: Color yellow paler;
set: #filterTextColor for: #PluggableListMorph to: Color black;
set: #preSelectionModifier for: #PluggableListMorph to: [ [:c | Color gray: 0.9] ];
set: #hoverSelectionModifier for: #PluggableListMorph to: [ [:c | c darker alpha: 0.3] ].
"Tree widgets"
theme
derive: #font for: #SimpleHierarchicalListMorph from: #PluggableListMorph;
derive: #textColor for: #SimpleHierarchicalListMorph from: #PluggableListMorph;
derive: #selectionColor for: #SimpleHierarchicalListMorph from: #PluggableListMorph;
derive: #selectionTextColor for: #SimpleHierarchicalListMorph from: #PluggableListMorph;
derive: #filterColor for: #SimpleHierarchicalListMorph from: #PluggableListMorph;
derive: #filterTextColor for: #SimpleHierarchicalListMorph from: #PluggableListMorph;
derive: #hoverSelectionModifier for: #SimpleHierarchicalListMorph from: #PluggableListMorph;
+ set: #highlightTextColor for: #SimpleHierarchicalListMorph to: Color fern;
- set: #higlightTextColor for: #SimpleHierarchicalListMorph to: Color red;
set: #lineColor for: #SimpleHierarchicalListMorph to: Color veryLightGray.
"Text widgets"
theme
set: #font for: #PluggableTextMorph to: [Preferences standardSystemFont];
set: #textColor for: #PluggableTextMorph to: Color black;
set: #caretColor for: #PluggableTextMorph to: Color red;
set: #selectionColor for: #PluggableTextMorph to: (TranslucentColor r: 0.0 g: 0.0 b: 0.8 alpha: 0.2);
set: #unfocusedSelectionModifier for: #PluggableTextMorph to: [ [:c | Color gray: 0.9] ];
set: #adornmentReadOnly for: #PluggableTextMorph to: Color black;
set: #adornmentRefuse for: #PluggableTextMorph to: Color tan;
set: #adornmentConflict for: #PluggableTextMorph to: Color red;
set: #adornmentDiff for: #PluggableTextMorph to: Color green;
set: #adornmentNormalEdit for: #PluggableTextMorph to: Color orange;
set: #adornmentDiffEdit for: #PluggableTextMorph to: Color yellow;
set: #frameAdornmentWidth for: #PluggableTextMorph to: 1.
theme
set: #balloonTextColor for: #PluggableTextMorphPlus to: (Color gray: 0.7);
derive: #balloonTextFont for: #PluggableTextMorphPlus from: #PluggableTextMorph at: #font.!
Marcel Taeumel uploaded a new version of System to project The Trunk:
http://source.squeak.org/trunk/System-mt.1150.mcz
==================== Summary ====================
Name: System-mt.1150
Author: mt
Time: 8 April 2020, 9:42:48.186591 am
UUID: 6da16c04-2b78-3344-a72a-ba39dedd948a
Ancestors: System-nice.1149
Lift some weight from ToolSet by delegating #browseMethod: to the concrete set of tools.
=============== Diff against System-nice.1149 ===============
Item was changed:
----- Method: ToolSet class>>browseMethod: (in category 'browsing') -----
browseMethod: aCompiledMethod
- "For convenience: Either open a code browser or a version browser for the given method."
+ self default ifNil: [^ self inform: 'Cannot open Browser'].
+ ^ self default browseMethod: aCompiledMethod!
- ^ aCompiledMethod isInstalled
- ifTrue: [self browse: aCompiledMethod methodClass selector: aCompiledMethod selector]
- ifFalse: [self browseMethodVersion: aCompiledMethod]!
Marcel Taeumel uploaded a new version of Tools to project The Trunk:
http://source.squeak.org/trunk/Tools-mt.957.mcz
==================== Summary ====================
Name: Tools-mt.957
Author: mt
Time: 8 April 2020, 9:41:37.208591 am
UUID: efc7c1c3-29f1-bc4d-afe2-9b4ff890ca8e
Ancestors: Tools-mt.956
Makes method browsing more useful when requested through the StandardToolSet. Try regular code browser, then versions browser, then inspector --- depending on whether installed or any history present.
=============== Diff against Tools-mt.956 ===============
Item was added:
+ ----- Method: StandardToolSet class>>browseMethod: (in category 'browsing') -----
+ browseMethod: aCompiledMethod
+ "Browse aCompiledMethod on the most convenient possible way, using a System Browser, a Versions Browser, or an Inspector."
+
+ aCompiledMethod isInstalled
+ ifTrue: [^ self browse: aCompiledMethod methodClass selector: aCompiledMethod selector].
+ (aCompiledMethod methodClass changeRecordsAt: aCompiledMethod selector)
+ ifNotNil: [^ self browseMethodVersion: aCompiledMethod].
+ ^ self inspect: aCompiledMethod!
Marcel Taeumel uploaded a new version of Tools to project The Trunk:
http://source.squeak.org/trunk/Tools-mt.956.mcz
==================== Summary ====================
Name: Tools-mt.956
Author: mt
Time: 7 April 2020, 6:50:40.052763 pm
UUID: d6189563-c44f-9147-aaff-594e603002b7
Ancestors: Tools-mt.955
Minimal fix of an unfortunate bug in our dependency browser. I will backport this to 5.3 immediately. Only affects users ot CompiledBlocks, which is implied by SistaV1, which is not active in 5.3. So, we should be fine considering our dependency tests.
=============== Diff against Tools-mt.955 ===============
Item was changed:
----- Method: DependencyBrowser>>computePackageDependencies: (in category 'package deps') -----
computePackageDependencies: pkgName
"Compute the dependencies for the given package"
| pi |
classDeps := Dictionary new.
packageDeps := Dictionary new.
pkgName ifNil:[^self].
pi := PackageOrganizer default packageNamed: pkgName ifAbsent:[^self]. "unloaded"
pi classes do:[:pkgClass|
(classDeps at: (pkgClass superclass ifNil:[ProtoObject]) name
ifAbsentPut:[OrderedCollection new]) add:
(MethodReference class: pkgClass selector: #Definition)].
+ pi methods do:[:mref|
+ mref compiledMethod allLiteralsDo:[:lit |
+ (lit isVariableBinding and: [lit value isBehavior]) ifTrue:[
- pi methods do:[:mref| | cm |
- cm := mref compiledMethod.
- 1 to: cm numLiterals do:[:i| | lit |
- ((lit := cm literalAt: i) isVariableBinding and:[lit value isBehavior]) ifTrue:[
(classDeps at: lit value name ifAbsentPut:[OrderedCollection new])
+ add: mref]]].
- add: (MethodReference class: cm methodClass selector: cm selector)]]].
classDeps keys do:[:className| | aClass pkg |
aClass := Smalltalk classNamed: className.
pkg := aClass ifNil: [nil] ifNotNil: [PackageOrganizer default packageOfClass: aClass ifNone:[nil]].
pkg ifNil:[
Transcript cr; show: 'WARNING: No package for ', className.
(classDeps removeKey: className) do:[:each| Transcript crtab; show: each].
] ifNotNil:[
(packageDeps at: pkg name ifAbsentPut:[OrderedCollection new]) add: className.
].
].
(packageDeps removeKey: pkgName ifAbsent:[#()]) do:[:each|
classDeps removeKey: each ifAbsent:[].
].!
David T. Lewis uploaded a new version of Network to project The Trunk:
http://source.squeak.org/trunk/Network-dtl.240.mcz
==================== Summary ====================
Name: Network-dtl.240
Author: dtl
Time: 6 April 2020, 10:33:07.751386 pm
UUID: a8f00e08-7398-4d4a-8cd2-09cedcada729
Ancestors: Network-eem.239
This update enables the Squeak new networking and IPv6 support by default. The update is in the package postscript.
IPv6 network support for the VM (SocketPlugin) and image were implemented by Ian Piumarta circa 2007. This included IPv6 support and a more general image-side representation of network addressing. In 2012, this work was merged into Squeak trunk, with a preference to switch between the old networking support or the new networking support with IPv6. At that time, there were concerns with performance of NetNameResolver on some Windows platforms, and for this reason the "Enable IPv6 and new network support" preference was left disabled for official Squeak distributions.
It now 2020, and operating systems have improved over the years, so it is time to enable the new networking preference by default.
=============== Diff against Network-eem.239 ===============
Item was changed:
+ (PackageInfo named: 'Network') postscript: '"Enable IPv6 and new network support by default"
+ NetNameResolver enableIPv6: true
+ '!
- (PackageInfo named: 'Network') postscript: '"Rebuild CSNonAtom."
- MailAddressTokenizer cleanUp: false'!
Marcel Taeumel uploaded a new version of EToys to project The Trunk:
http://source.squeak.org/trunk/EToys-ct.389.mcz
==================== Summary ====================
Name: EToys-ct.389
Author: xyz
Time: 5 April 2020, 9:12:49.970061 pm
UUID: 843215f1-865c-2e4b-8c42-484a3f382840
Ancestors: EToys-eem.388
Removes extension methods in deprecated class TextMorphEditor. Complements Squeak-Version-mt.5252. Thanks to Subbu (kks) for the report!
=============== Diff against EToys-eem.388 ===============
Item was removed:
- ----- Method: TextMorphEditor>>select (in category '*Etoys-Squeakland-current selection') -----
- select
- "Ignore selection redraw requests."!
Item was removed:
- ----- Method: TextMorphEditor>>selectionInterval: (in category '*Etoys-Squeakland-private') -----
- selectionInterval: anInterval
- "Make my selection span the indicated interval. If the interval extends outside the range of characters of the current text, force it within."
-
- | mySize |
- mySize := paragraph text string size.
- self selectFrom: (anInterval start min: mySize)
- to: (anInterval stop min: mySize)!