Eliot Miranda uploaded a new version of Kernel to project The Trunk:
http://source.squeak.org/trunk/Kernel-eem.1174.mcz
==================== Summary ====================
Name: Kernel-eem.1174
Author: eem
Time: 31 May 2018, 4:28:54.683734 pm
UUID: 08eb9e3c-2fe3-40e5-8733-4a95f8d9cd0b
Ancestors: Kernel-topa.1173
Fix a bug in Pragma printing; immedatey after a parse but before a method is created, a pragma's method will be nil. Printing assumed it never would be; hence havoc was caused in the debugger when looking at parse trees.
=============== Diff against Kernel-topa.1173 ===============
Item was changed:
----- Method: Pragma>>printOn: (in category 'printing') -----
printOn: aStream
aStream
nextPut: $<;
+ print: self message.
+ method ifNotNil:
+ [:m|
+ aStream nextPutAll: ' "in '.
+ m printReferenceOn: aStream.
+ aStream nextPut: $"].
+ aStream nextPut: $>!
- print: self message;
- nextPutAll: ' "in '.
- method printReferenceOn: aStream.
- aStream nextPutAll: '">'!
Marcel Taeumel uploaded a new version of Morphic to project The Trunk:
http://source.squeak.org/trunk/Morphic-mt.1445.mcz
==================== Summary ====================
Name: Morphic-mt.1445
Author: mt
Time: 31 May 2018, 10:32:00.706975 am
UUID: 5bb479eb-ac7f-4d42-a614-96468d8dd517
Ancestors: Morphic-mt.1444
Refactor the halo-navigation improvement from Morphic-cmm.1443. The actual change is not in the initial halo invocation but in the transferring of halos between morphs. Thus, still exit the event filter in PasteUpMorph as early as possible to just deal with regular event dispatch. See the line "anEvent hand halo ifNotNil: [^ self]" in #tryInvokeHalo.
=============== Diff against Morphic-mt.1444 ===============
Item was changed:
----- Method: PasteUpMorph>>tryInvokeHalo: (in category 'events-processing') -----
+ tryInvokeHalo: anEvent
+
+ | innerMost target |
+ anEvent hand halo ifNotNil: [^ self "No invocation needed. Halo will handle transfer itself."].
+ Preferences noviceMode ifTrue: [^ self "No halo in novice mode."].
+ Morph haloForAll ifFalse: [^ self].
+
+ innerMost := (self morphsAt: anEvent position unlocked: true) first.
+
+ "1) Try to use innermost morph but skip all the ones that do not want to show a halo along the owner chain."
+ target := innerMost.
+ [target isNil or: [target wantsHaloFromClick]]
+ whileFalse: [target := target owner].
+ target ifNil: [^ self].
+
+ "2) Without a modifier, which is normal, find the outermost container for that inner morph."
+ (innerMost == self or: [anEvent shiftPressed]) ifFalse: [
+ | previousTargets |
+ previousTargets := OrderedCollection new.
+ [target notNil and: [target owner ~~ self]] whileTrue: [
+ previousTargets add: target.
+ target := target owner].
+ target ifNil: [^ self].
+ [previousTargets isEmpty or: [target wantsHaloFromClick]] whileFalse: [
+ target := previousTargets removeLast].
+ target wantsHaloFromClick ifFalse: [^ self]].
+
+ "3) Now that we have the target, show the halo. Abort event dispatching, too, to avoid confusion."
+ anEvent hand newMouseFocus: target event: anEvent.
+ target invokeHaloOrMove: anEvent.
+ anEvent ignore.!
- tryInvokeHalo: aUserInputEvent
- "Invoke halos around the top-most world container at aUserInputEvent's #position. If it was already halo'd, zero-in on its next inward component morph at that position. Holding Shift during the click reverses this traversal order."
- | stack target owners |
- Preferences noviceMode ifTrue: [^self ].
- Morph haloForAll ifFalse: [^self].
- "the stack is the top-most morph to bottom-most."
- stack := (self morphsAt: aUserInputEvent position unlocked: true) select: [ : each | each wantsHaloFromClick ].
- stack ifEmpty: [^self].
- target :=
- aUserInputEvent hand halo
- ifNil: [ stack first ]
- ifNotNil:
- [ : existingHalo |
- stack allButFirst "halo's are always topmost on the stack"
- detect: [ : each | each owner == self ]
- ifFound:
- [ : topMostWhereClicked |
- (existingHalo target withAllOwners includes: topMostWhereClicked)
- ifTrue: [ "No invocation needed. Halo will handle transfer itself." ^self ]
- ifFalse:
- [ "Transfer halo to new world container."
- aUserInputEvent hand removeHalo.
- aUserInputEvent shiftPressed
- ifTrue: [ stack second ]
- ifFalse: [ topMostWhereClicked ] ] ]
- ifNone: ["Okay, invoke halos on the world." self ] ].
- "With a modifier, we want the innermost, otherwise the outermost."
- owners := target withAllOwners select: [ : each | each wantsHaloFromClick ].
- "the last owner is expected to be self."
- target := aUserInputEvent shiftPressed ifTrue: [ owners first ] ifFalse: [ owners at: owners size-1 ifAbsent: [self] ].
- "Now that we have the target, show the halo. Abort event dispatching, too, to avoid confusion."
- aUserInputEvent hand newMouseFocus: target event: aUserInputEvent.
- target invokeHaloOrMove: aUserInputEvent.
- "aUserInputEvent has been consumed, don't let it cause any further side-effects."
- aUserInputEvent ignore!
Item was changed:
----- Method: SimpleHaloMorph>>transferHalo: (in category 'pop up') -----
transferHalo: event
+ "Transfer the halo to the next likely recipient. Switch between siblings if overlapping."
- "Transfer the halo to the next likely recipient"
+ (self target world morphsAt: event position) allButFirst "... the halo itself"
+ detect: [:morph |
+ "Sibling found?"
+ (morph owner == self target owner
+ and: [morph ~~ self target])
+ ifTrue: [
+ ^ morph invokeHaloOrMove: event].
+ "No sibling possible anymore?"
+ morph == self target].
+
self target
transferHalo: (event transformedBy: (self target transformedFrom: self))
from: self target.!
Karl Ramberg uploaded a new version of MorphicExtras to project The Trunk:
http://source.squeak.org/trunk/MorphicExtras-kfr.237.mcz
==================== Summary ====================
Name: MorphicExtras-kfr.237
Author: kfr
Time: 31 May 2018, 8:38:11.47978 pm
UUID: cd5f12e9-d70d-0848-875e-69d68177210f
Ancestors: MorphicExtras-mt.236
Moved some conversion up from TextMorph to TextPlusMorph
=============== Diff against MorphicExtras-mt.236 ===============
Item was added:
+ ----- Method: TextPlusMorph>>convertToCurrentVersion:refStream: (in category 'objects from disk') -----
+ convertToCurrentVersion: varDict refStream: smartRefStrm
+ "Fix up misaligned entries from varDict in old project"
+ varDict at: 'slotName' ifPresent: [ :x | text:= x]. "Not sure why the text is in 'slotName'"
+ varDict at: 'model' ifPresent: [ :x | textStyle:= x]."Or why textStyle is in 'model'"
+ self releaseParagraphReally.
+ ^ super convertToCurrentVersion: varDict refStream: smartRefStrm.
+
+ !
Marcel Taeumel uploaded a new version of Morphic to project The Trunk:
http://source.squeak.org/trunk/Morphic-mt.1444.mcz
==================== Summary ====================
Name: Morphic-mt.1444
Author: mt
Time: 31 May 2018, 9:28:12.813323 am
UUID: d41ef171-b992-1a4e-b2d5-009f0e9e3134
Ancestors: Morphic-cmm.1443
Reverts the change from Morphic-cmm.1443 about borderStyle to make test04InnerBounds in BorderedMorphTests green again.
=============== Diff against Morphic-cmm.1443 ===============
Item was changed:
----- Method: Morph>>borderStyle: (in category 'accessing') -----
borderStyle: aBorderStyle
+
aBorderStyle = self borderStyle ifTrue: [^ self].
+
"If we cannot draw the new border, accept at least its color and width."
((self canDrawBorder: aBorderStyle) or: [aBorderStyle isNil])
ifTrue: [self setProperty: #borderStyle toValue: aBorderStyle]
ifFalse: [
self borderStyle
width: aBorderStyle width;
baseColor: aBorderStyle baseColor].
+
self borderStyle trackColorFrom: self.
+
+ self
+ layoutChanged;
+ changed.!
- self isInWorld ifTrue:
- [ self
- layoutChanged;
- changed ]!
Marcel Taeumel uploaded a new version of Morphic to project The Trunk:
http://source.squeak.org/trunk/Morphic-mt.1446.mcz
==================== Summary ====================
Name: Morphic-mt.1446
Author: mt
Time: 31 May 2018, 11:05:49.723667 am
UUID: 44cfc002-66ac-2041-9339-ede4e61a1b58
Ancestors: Morphic-mt.1445
Small compatibility fix to make older system windows load. Those windows do not user SstemWindowButton but IconicButton instances.
=============== Diff against Morphic-mt.1445 ===============
Item was added:
+ ----- Method: IconicButton>>dim (in category 'compatibility') -----
+ dim
+ "backwards compability for old system windows"
+ !
Item was added:
+ ----- Method: IconicButton>>undim (in category 'compatibility') -----
+ undim
+ "backwards compability for old system windows"
+ !
Marcel Taeumel uploaded a new version of MorphicTests to project The Trunk:
http://source.squeak.org/trunk/MorphicTests-mt.47.mcz
==================== Summary ====================
Name: MorphicTests-mt.47
Author: mt
Time: 31 May 2018, 9:26:39.508323 am
UUID: 8c7b340d-5fcf-6346-8ed0-609d2e1c21f4
Ancestors: MorphicTests-mt.46
Adds a test for the interplay between layouts and border styles.
=============== Diff against MorphicTests-mt.46 ===============
Item was added:
+ ----- Method: BorderedMorphTests>>test04InnerBounds (in category 'tests') -----
+ test04InnerBounds
+ "Check whether a changed border width triggers a layout re-computation."
+
+ | sut |
+ sut := Morph new.
+ sut changeTableLayout.
+ sut addMorph: (Morph new
+ hResizing: #spaceFill;
+ vResizing: #spaceFill;
+ yourself).
+
+ self
+ assert: 0 equals: sut borderWidth;
+ assert: sut fullBounds equals: sut bounds;
+ assert: sut bounds equals: sut innerBounds;
+ assert: sut bounds equals: sut firstSubmorph bounds.
+
+ sut borderStyle: (BorderStyle raised width: 10).
+
+ self
+ assert: 10 equals: sut borderWidth;
+ assert: sut fullBounds equals: sut bounds;
+ assert: (sut bounds insetBy: 10) equals: sut innerBounds;
+ assert: sut innerBounds equals: sut firstSubmorph bounds.!