<div dir="ltr">Hi All,<div><br></div><div>    in reading Tobias&#39; much improved code below I noticed that a lot of code is using Morph&gt;&gt;allMorphs where Morph&gt;&gt;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">&lt;<a href="mailto:commits@source.squeak.org" target="_blank">commits@source.squeak.org</a>&gt;</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&gt;&gt;<wbr>updateAllStatusMorphs (in category &#39;status control&#39;) -----<br>
  updateAllStatusMorphs<br>
        &quot;Update all status morphs bound to the receiver.  Done with a sledge-hammer at present.&quot;<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>&quot;Update all status morphs bound to the receiver.  Done with a sledge-hammer at present.&quot;</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 &quot;ow allMorphs do: [:m|...&quot; instead of &quot;ow allMorphsDo: [:m|...&quot;.  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>