*ListMorphs

Andreas Raab andreas.raab at gmx.de
Mon May 12 21:57:32 UTC 2003


Lex,

> As for scrolling speed, note that it is  hard for ScrollPane to do
> better.  The root problem is that the submorphs ivar is a 
> simple Array; a fancier data structure is necessary.

Measuring it a little I found a very specific hot-spot there. Turns out that
scroll panes spend ages in computing the local submorph bounds of the
transform which can be trivially cached. Try it!

Cheers,
  - Andreas

'From TeaSqueak3.2 of 19 September 2002 [latest update: #393] on 12 May 2003
at 11:55:08 pm'!
Morph subclass: #TransformMorph
	instanceVariableNames: 'transform smoothing localBounds '
	classVariableNames: ''
	poolDictionaries: ''
	category: 'Morphic-Basic'!

!TransformMorph methodsFor: 'geometry' stamp: 'ar 5/12/2003 23:15'!
layoutChanged
	localBounds := nil.
	^super layoutChanged! !

!TransformMorph methodsFor: 'geometry' stamp: 'ar 5/12/2003 23:15'!
localSubmorphBounds
	"Answer, in my coordinate system, the bounds of all my submorphs (or
nil if no submorphs)"
	| subBounds |
	localBounds ifNotNil:[^localBounds].
	subBounds _ nil.
	self submorphsDo:
		[:m |
		subBounds ifNil: [subBounds _ m fullBounds]
				ifNotNil: [subBounds _ subBounds quickMerge:
m fullBounds]].
	^localBounds := subBounds! !



More information about the Squeak-dev mailing list