<div dir="ltr">Hi All,<div><br></div><div> in reading Tobias' much improved code below I noticed that a lot of code is using Morph>>allMorphs where Morph>>allMorphsDo: would be much better<br><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Sep 23, 2016 at 6:26 AM, <span dir="ltr"><<a href="mailto:commits@source.squeak.org" target="_blank">commits@source.squeak.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">Tim Felgentreff uploaded a new version of EToys to project The Trunk:<br>
<a href="http://source.squeak.org/trunk/EToys-tfel.249.mcz" rel="noreferrer" target="_blank">http://source.squeak.org/<wbr>trunk/EToys-tfel.249.mcz</a><br>
<br>
==================== Summary ====================<br>
<br>
Name: EToys-tfel.249<br>
Author: tfel<br>
Time: 23 September 2016, 3:26:09.056418 pm<br>
UUID: 844e5444-0afb-144b-a622-<wbr>dcb33fbf8597<br>
Ancestors: EToys-tfel.248<br>
<br>
fix the defensive code for updating status morphs in scripts<br>
<br>
=============== Diff against EToys-tfel.248 ===============<br>
<br>
Item was changed:<br>
----- Method: ScriptInstantiation>><wbr>updateAllStatusMorphs (in category 'status control') -----<br>
updateAllStatusMorphs<br>
"Update all status morphs bound to the receiver. Done with a sledge-hammer at present."<br>
<br>
| w |<br>
w := self currentWorld.<br>
+ (w hasProperty: #updateStatusMorph) ifTrue: [^ self].<br>
+ w setProperty: #updateStatusMorph toValue: true.<br>
+ Project current addDeferredUIMessage: [<br>
+ (w valueOfProperty: #updateStatusMorph ifAbsent: [false]) ifTrue: [<br>
+ (w allMorphs select: [:m | (m isKindOf: ScriptStatusControl) and:<br>
+ [m scriptInstantiation == self]]) do:<br>
+ [:aStatusControl | self updateStatusMorph: aStatusControl].<br>
+ w removeProperty: #updateStatusMorph.<br>
-<br>
- (w hasProperty: #foo) ifFalse: [<br>
- w setProperty: #updateStatusMorph toValue: true.<br>
- Project current addDeferredUIMessage: [<br>
- (w hasProperty: #foo) ifTrue: [<br>
- w removeProperty: #updateStatusMorph.<br>
- (w allMorphs select: [:m | (m isKindOf: ScriptStatusControl) and:<br>
- [m scriptInstantiation == self]]) do:<br>
- [:aStatusControl | self updateStatusMorph: aStatusControl] .<br>
- ]<br>
]<br>
]<br>
<br>
!<br></blockquote><div><br></div><div>So the above could be</div><div><br></div><div><div>updateAllStatusMorphs</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>"Update all status morphs bound to the receiver. Done with a sledge-hammer at present."</div><div><br></div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>| w |</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>w := self currentWorld.</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>(w hasProperty: self) ifTrue: [^ self].</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>w setProperty: self toValue: #updating.</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>Project current addDeferredUIMessage:</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">                </span>[[w allMorphsDo:</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">                        </span>[:m |</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">                        </span> ((m isKindOf: ScriptStatusControl)</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">                        </span> and: [m scriptInstantiation == self]) ifTrue:</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">                                </span>[self updateStatusMorph: m]]]</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">                        </span>ensure:</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">                                </span>[w removeProperty: self]]</div><div><br></div></div><div>There are quite a few examples like this, even one egregious "ow allMorphs do: [:m|..." instead of "ow allMorphsDo: [:m|...". Calling for volunteers who know Morphic well to go through and make the necessary changes. This should help slow machines like RasperryPi a bit.</div></div><div><br></div><div class="gmail_signature"><div dir="ltr"><div><span style="font-size:small;border-collapse:separate"><div>_,,,^..^,,,_<br></div><div>best, Eliot</div></span></div></div></div>
</div></div></div>