'From Squeak3.9alpha of ''2 November 2004'' [latest update: #6404] on 7 November 2004 at 6:41:40 pm'! "Change Set: fixCursorWrapped Date: 7 November 2004 Author: Takashi Yamamiya Using this, a cursor works well when cursor number is decreased. It enables reverse animation. "! !PasteUpMorph methodsFor: 'cursor' stamp: 'tak 11/7/2004 18:33'! cursorWrapped: aNumber "Set the cursor to the given number, modulo the number of items I contain. Fractional cursor values are allowed." | oldRect newRect offset | cursor = aNumber ifTrue: [^ self]. self hasSubmorphs ifFalse: [cursor := 1. ^ self]. oldRect := self selectedRect. offset := (self asNumber: aNumber) - 1 \\ submorphs size. cursor := offset + 1. newRect := self selectedRect. self indicateCursor ifTrue: [self invalidRect: oldRect; invalidRect: newRect]! ! !PasteUpMorphTest methodsFor: 'cursor' stamp: 'tak 11/7/2004 18:29'! testCursorWrapped "self debug: #testCursorWrapped" | holder | holder := PasteUpMorph new. self assert: holder cursor = 1. holder cursorWrapped: 2. self assert: holder cursor = 1. holder addMorph: Morph new; addMorph: Morph new; addMorph: Morph new. holder cursorWrapped: 3. self assert: holder cursor = 3. holder cursorWrapped: 5. self assert: holder cursor = 2. holder cursorWrapped: 0. self assert: holder cursor = 3. holder cursorWrapped: -1. self assert: holder cursor = 2.! ! !PasteUpMorphTest methodsFor: 'cursor' stamp: 'tak 11/7/2004 18:34'! testCursorWrappedWithFraction "self debug: #testCursorWrappedWithFraction" | holder | holder := PasteUpMorph new. holder addMorph: Morph new; addMorph: Morph new; addMorph: Morph new. holder cursorWrapped: 3.5. self assert: holder cursor = 3.5. holder cursorWrapped: 5.5. self assert: holder cursor = 2.5. holder cursorWrapped: 0.5. self assert: holder cursor = 3.5. holder cursorWrapped: -0.5. self assert: holder cursor = 2.5.! ! !PasteUpMorphTest reorganize! ('texture fills' testGridToGradient) ('cursor' testCursorWrapped testCursorWrappedWithFraction) !