'From Squeak3.3alpha of 18 January 2002 [latest update: #4965] on 2 September 2002 at 12:37:26 am'! "Change Set: fasterListOfMany Date: 7 July 2001 (originally ;-)) Author: Daniel Vainsencher Published as 4971fasterListOfMany-dvf.cs to 3.3a. This update prevents significant slowdown for Squeak when looking at really long lists that use this morph (happened to me using the ""recently logged changes"" feature on a changes file with lots of updates) drawOn: for this class was O(N*N) in the number of list items, now O(N). sw 8/30/2002: merged Daniel's speedup with two other changes to this method that have appeared in the update stream in the meantime" ! !PluggableListMorphOfMany methodsFor: 'drawing' stamp: 'sw 8/30/2002 20:07'! drawOn: aCanvas "Draw the receiver on a given canvas" | onMorph submorphsCache | super drawOn: aCanvas. submorphsCache _ scroller submorphs. "Speedup by Daniel Vainsencher" 1 to: list size do: "NOTE: should be optimized to only visible morphs" [:index | (self listSelectionAt: index) ifTrue: [onMorph _ submorphsCache at: index. aCanvas fillRectangle: (((scroller transformFrom: self) localBoundsToGlobal: onMorph bounds) intersect: scroller bounds) color: color blacker]]! !