Marcel Taeumel uploaded a new version of Morphic to project The Trunk: http://source.squeak.org/trunk/Morphic-mt.2156.mcz
==================== Summary ====================
Name: Morphic-mt.2156 Author: mt Time: 13 May 2024, 9:25:51.994237 am UUID: 1f2ce642-cd13-1742-857c-7d257fa40f46 Ancestors: Morphic-ct.2155
Complement Collections-ct.1067 and Collections-mt.1068
=============== Diff against Morphic-ct.2155 ===============
Item was changed: ----- Method: HaloMorph>>doDebug:with: (in category 'private') ----- doDebug: evt with: menuHandle "Ask hand to invoke the a debugging menu for my inner target. If shift key is down, immediately put up an inspector on the inner target"
| menu | evt shiftPressed ifTrue: [ evt hand removeHalo. ^ innerTarget inspectInMorphic: evt].
menu := innerTarget buildDebugMenu: evt hand. + menu addTitle: (innerTarget externalName truncateWithEllipsisTo: 40). - menu addTitle: (innerTarget externalName truncateWithElipsisTo: 40). menu popUpEvent: evt in: self world. evt hand removeHalo.!
Item was changed: ----- Method: PasteUpMorph>>dropInspectorField:event: (in category 'event handling') ----- dropInspectorField: anInspectorField event: evt "Create a self-updating morph that serves as a compact watcher for the dropped inspector field."
| watcher | watcher := PluggableButtonMorph new changeTableLayout; cellPositioning: #topLeft; model: [anInspectorField inspector object inspect]; action: #value; yourself.
watcher addMorph: ((UpdatingStringMorph on: anInspectorField selector: #value) stepTime: 1000 "msecs"; yourself); + addMorph: (('of ', (anInspectorField inspector object printString truncateWithEllipsisTo: 40)) asMorph - addMorph: (('of ', (anInspectorField inspector object printString truncateWithElipsisTo: 40)) asMorph font: Preferences standardBalloonHelpFont yourself); addMorph: (anInspectorField name asString asMorph font: Preferences standardBalloonHelpFont emphasis: TextEmphasis bold emphasisCode; yourself).
watcher center: evt position. watcher bounds: (watcher bounds translatedToBeWithin: self bounds). watcher openInWorld.!
Item was changed: ----- Method: SmalltalkEditor>>tallySelection (in category 'do-its') ----- tallySelection "Treat the current selection as an expression; evaluate it and return the time took for this evaluation" | code result rcvr ctxt v | self lineSelectAndEmptyCheck: [^ self].
(model respondsTo: #doItReceiver) ifTrue: [ rcvr := model doItReceiver. ctxt := model doItContext] ifFalse: [rcvr := ctxt := nil]. result := [ | cm | code := self selectionAsStream. cm := rcvr class evaluatorClass new compiledMethodFor: code in: ctxt to: rcvr notifying: self ifFail: [morph flash. ^ self]. Time millisecondsToRun: [v := cm valueWithReceiver: rcvr arguments: (ctxt ifNil: [#()] ifNotNil: [{ctxt}]) ]. ] on: OutOfScopeNotification do: [ :ex | ex resume: true]. Project uiManager inform: ('<b>Expression</b>{1}<br>{2}<br><br><b>Time</b> (compile and execute)<br>{3} ms<br><br><b>Result</b><br>{4}' translated asTextFromHtml format: { + rcvr ifNil: [''] ifNotNil: [' (', (rcvr printString truncateWithEllipsisTo: 20), ')']. + (code contents truncateWithEllipsisTo: 200) copyReplaceAll: String cr with: '<br>'. - rcvr ifNil: [''] ifNotNil: [' (', (rcvr printString truncateWithElipsisTo: 20), ')']. - (code contents truncateWithElipsisTo: 200) copyReplaceAll: String cr with: '<br>'. result printString. + v printString truncateWithEllipsisTo: 100}).! - v printString truncateWithElipsisTo: 100}).!
Item was changed: ----- Method: SystemProgressMorph>>setLabel:at: (in category 'labelling') ----- setLabel: shortDescription at: slot (self labels at: slot) contents: (shortDescription ifNotNil: [ self flag: #todo. "mt: Allow multi-line descriptions... Then see DialogWindow >> #message:." + shortDescription truncateWithEllipsisTo: 100]). - shortDescription truncateWithElipsisTo: 100]). self reposition!
packages@lists.squeakfoundation.org