[etoys-dev] Etoys: Etoys-kfr.70.mcz

commits at source.squeak.org commits at source.squeak.org
Sun May 22 14:01:20 EDT 2011


Karl Ramberg uploaded a new version of Etoys to project Etoys:
http://source.squeak.org/etoys/Etoys-kfr.70.mcz

==================== Summary ====================

Name: Etoys-kfr.70
Author: kfr
Time: 22 May 2011, 8:00:42 pm
UUID: cdee253f-af6d-9b46-8493-464179d48432
Ancestors: Etoys-kfr.69

Mouseover Feedback of a phrase tile is wrong
http://tracker.squeakland.org/browse/SQ-62

=============== Diff against Etoys-kfr.69 ===============

Item was changed:
  ----- Method: CategoryViewer>>addColorSeesDetailTo: (in category 'entries') -----
  addColorSeesDetailTo: aRow
  	"Special-casee code for the boolean-valued phrase variously known as is-over-color or sees-color."
+ 	| hotTileForSelf colorMorph |
- 	| hotTileForSelf m |
  	(aRow submorphs last) delete.
  	aRow addMorphBack: (hotTileForSelf _ ColorSeerTile new showPalette: false; yourself).
+ 	aRow addMorphBack: (colorMorph _ ColorTileMorph new showPalette: false;
- 	aRow addMorphBack: (m _ ColorTileMorph new showPalette: false;
  				typeColor: (ScriptingSystem colorForType: #Color); yourself).
+ 	colorMorph colorSwatch color: Color blue.
+ 	 hotTileForSelf on: #mouseEnter send: #addGetterFeedback to: aRow.
- 	m colorSwatch color: Color blue.
- 	hotTileForSelf on: #mouseEnter send: #addGetterFeedback to: aRow.
  	hotTileForSelf on: #mouseLeave send: #removeHighlightFeedback to: aRow.
  	hotTileForSelf on: #mouseLeaveDragging send: #removeHighlightFeedback to: aRow.
  
  	hotTileForSelf  on: #mouseDown send: #makeGetter:event:from:
  		to: self
  		withValue: (Array with: #color:sees: with: #Boolean).
  
+ 	 colorMorph on: #mouseEnter send: #addGetterFeedback to: aRow.
+ 	colorMorph on: #mouseLeave send: #removeHighlightFeedback to: aRow.
+ 	colorMorph on: #mouseLeaveDragging send: #removeHighlightFeedback to: aRow.
+ 
+ 	colorMorph  on: #mouseDown send: #makeGetter:event:from:
+ 		to: self
+ 		withValue: (Array with: #color:sees: with: #Boolean).
+ 
  	aRow addMorphBack: (Morph new extent: 0@(aRow height)).
  !

Item was changed:
  ----- Method: CategoryViewer>>addIsOverColorDetailTo: (in category 'entries') -----
  addIsOverColorDetailTo: aRow
  	"Special-casee code for the boolean-valued phrase variously known as is-over-color or sees-color."
  
+ 	| hotTileForSelf |
+ 	aRow addMorphBack: (Morph new color: self color; extent: 0 at 10).  "spacer"
+ 	hotTileForSelf _ ColorTileMorph new showPalette: false;
- 	| m |
- 	aRow addMorphBack: (Morph new color: self color; extent: 2 at 10).  "spacer"
- 	m _ ColorTileMorph new showPalette: false;
  				typeColor: (ScriptingSystem colorForType: #Color); yourself.
+ 	hotTileForSelf colorSwatch color: Color blue.
+ 	 hotTileForSelf on: #mouseEnter send: #addGetterFeedback to: aRow.
+ 	hotTileForSelf on: #mouseLeave send: #removeHighlightFeedback to: aRow.
+ 	hotTileForSelf on: #mouseLeaveDragging send: #removeHighlightFeedback to: aRow.
+ 	hotTileForSelf  on: #mouseDown send: #makeGetter:event:from:
+ 		to: self
+ 		withValue: (Array with: #seesColor: with: #Color).
+         aRow addMorphBack: hotTileForSelf.
- 	m colorSwatch color: Color blue.
- 	aRow addMorphBack: (m _ ColorTileMorph new showPalette: false;
- 				typeColor: (ScriptingSystem colorForType: #Color); yourself).
  
  
  
- 
  "The following commented-out code put a readout up; the readout was very nice, but was very consumptive of cpu time, which is why the is-over-color tile got removed from the viewer long ago.  Now is-over-color is reinstated to the viewer, minus the expensive readout..."
  
  "	aRow addMorphBack: (AlignmentMorph new beTransparent).
  	readout _ UpdatingStringMorphWithArgument new
  			target: scriptedPlayer; getSelector: #seesColor:; growable: false; putSelector: nil;
  			argumentTarget: clrTile colorSwatch argumentGetSelector: #color.
  	readout useDefaultFormat.
  	aTile _ StringReadoutTile new typeColor: Color lightGray lighter.
  	aTile addMorphBack: readout.
  	aRow addMorphBack: aTile.
  	aTile setLiteralTo: (scriptedPlayer seesColor: clrTile colorSwatch color) printString width: 30"!

Item was changed:
  ----- Method: CategoryViewer>>addPlayerArgumentTo: (in category 'entries') -----
  addPlayerArgumentTo: aRow
  	"Add, delimited by spacer morphs, a player-valued TileMorph to the row provided."
  
+ 	| aTileToRefer |
  	aRow addMorphBack: (Morph new extent: 0 at 0).  "spacer (Is this spacer really needed??? - takashi)"
+ 	aTileToRefer :=  self presenter standardPlayer tileToRefer.
+ 	aTileToRefer on: #mouseEnter send: #addGetterFeedback to: aRow.
+ 		aTileToRefer on: #mouseLeave send: #removeHighlightFeedback to: aRow.
+ 		aTileToRefer on: #mouseLeaveDragging send: #removeHighlightFeedback to: aRow.
+ 	aRow addMorphBack: aTileToRefer .
- 	aRow addMorphBack:  self presenter standardPlayer tileToRefer.
  	aRow addMorphBack: (AlignmentMorph new beTransparent).  "flexible spacer"
  
  !

Item was changed:
  ----- Method: CategoryViewer>>phraseForVariableFrom: (in category 'entries') -----
  phraseForVariableFrom: aMethodInterface
  	"Return a structure consisting of tiles and controls and a readout representing a 'variable' belonging to the player, complete with an appropriate readout when indicated. Slightly misnamed in that this path is used for any methodInterface that indicates an interesting resultType."
  
+ 	| anArrow slotName getterButton aRow doc setter hotTileForSelf spacer readOut aTileToRefer |
- 	| anArrow slotName getterButton aRow doc setter hotTileForSelf spacer |
  	Preferences universalTiles ifTrue: [^ self universalTilesPhraseForVariableFrom: aMethodInterface].
  
  	aRow _ ViewerLine newRow
  		elementSymbol: (slotName _ aMethodInterface selector);
  		wrapCentering: #center;
  		cellPositioning: #leftCenter.
  
  	(self wantsInfoButtonFor: slotName)
  		ifFalse:
  			[aRow addMorphBack: ScriptingSystem buttonSpacer]
  		ifTrue:
  			[aRow addMorphBack: (self infoButtonFor: slotName)].
  
  	aRow addMorphBack: self spacerAfterButton.
  
  	hotTileForSelf _ self tileForSelf bePossessive.
  	hotTileForSelf  on: #mouseDown send: #makeGetter:event:from:
  		to: self
  		withValue: (Array with: aMethodInterface selector with: aMethodInterface resultType).
  	aRow addMorphBack: hotTileForSelf.
  
  	aRow addMorphBack: (spacer _ Morph new color: self color; extent: 0 at 0).
  	spacer on: #mouseEnter send: #addGetterFeedback to: aRow.
  	spacer on: #mouseLeave send: #removeHighlightFeedback to: aRow.
  	spacer on: #mouseLeaveDragging send: #removeHighlightFeedback to: aRow.
  	spacer  on: #mouseDown send: #makeGetter:event:from:
  		to: self
  		withValue: (Array with: aMethodInterface selector with: aMethodInterface resultType).
  	hotTileForSelf on: #mouseEnter send: #addGetterFeedback to: aRow.
  	hotTileForSelf on: #mouseLeave send: #removeHighlightFeedback to: aRow.
  	hotTileForSelf on: #mouseLeaveDragging send: #removeHighlightFeedback to: aRow.
  
  	getterButton _ self getterButtonFor: aMethodInterface selector type: aMethodInterface resultType.
  	aRow addMorphBack: getterButton.
  	getterButton on: #mouseEnter send: #addGetterFeedback to: aRow.
  	getterButton on: #mouseLeave send: #removeHighlightFeedback to: aRow.
  	getterButton on: #mouseLeaveDragging send: #removeHighlightFeedback to: aRow.
  	(doc _ aMethodInterface documentation) ifNotNil:
  		[getterButton setBalloonText: doc].
  
  	(slotName == #seesColor:) ifTrue:
  		[self addIsOverColorDetailTo: aRow.
  		^ aRow].
  
  	(slotName == #color:sees:) ifTrue:
  		[self addColorSeesDetailTo: aRow.
  		^ aRow].
  
  	(#(touchesA: overlaps: overlapsAny: distanceToPlayer: bearingTo: bearingFrom:) includes: slotName) ifTrue:
+ 		[aRow addMorphBack: (Morph new extent: 0 at 0).  "spacer (Is this spacer really needed??? - takashi)"
+ 	aTileToRefer :=  self presenter standardPlayer tileToRefer.
+ 	aTileToRefer on: #mouseEnter send: #addGetterFeedback to: aRow.
+ 	aTileToRefer on: #mouseLeave send: #removeHighlightFeedback to: aRow.
+ 	aTileToRefer on: #mouseLeaveDragging send: #removeHighlightFeedback to: aRow.
+ 	aTileToRefer on: #mouseDown send: #makeGetter:event:from:
+ 		to: self
+ 		withValue: (Array with: aMethodInterface selector with: aMethodInterface resultType).
+ 	aRow addMorphBack: aTileToRefer .
+ 	aRow addMorphBack: (AlignmentMorph new beTransparent).  "flexible spacer"
- 		[self addPlayerArgumentTo: aRow.
  		^ aRow].
  
  	aRow addMorphBack: VariableSpacer new.
  	(setter _ aMethodInterface companionSetterSelector) ifNotNil:
  		[aRow addMorphBack: (Morph new color: self color; extent: 2 at 10).  " spacer"
  		anArrow _ self arrowSetterButton: #makeSetter:from:forPart:
  						args: (Array with: slotName with: aMethodInterface resultType).
  		anArrow beTransparent.
  		anArrow on: #mouseEnter send: #addSetterFeedback to: aRow.
  		anArrow on: #mouseLeave send: #removeHighlightFeedback to: aRow.
  		anArrow on: #mouseLeaveDragging send: #removeHighlightFeedback to: aRow.
  		aRow addMorphBack: anArrow].
  
  	(#(color:sees: copy touchesA: overlaps: overlapsAny: getTurtleAt: getTurtleOf:) includes: slotName) ifFalse:
   		[aMethodInterface wantsReadoutInViewer ifTrue: 
+ 				[readOut := (self readoutFor: slotName type: aMethodInterface resultType readOnly: setter isNil getSelector: aMethodInterface selector putSelector: setter).
+ 				readOut on: #mouseEnter send: #addSetterFeedback to: aRow.
+ 		readOut on: #mouseLeave send: #removeHighlightFeedback to: aRow.
+ 		readOut on: #mouseLeaveDragging send: #removeHighlightFeedback to: aRow.
+ 		readOut on: #mouseDown send: #makeGetter:event:from:
+ 		to: self
+ 		withValue: (Array with: aMethodInterface selector with: aMethodInterface resultType).
+ 					aRow addMorphBack: readOut.]].
- 				[aRow addMorphBack: (self readoutFor: slotName type: aMethodInterface resultType readOnly: setter isNil getSelector: aMethodInterface selector putSelector: setter)]].
  	anArrow ifNotNil: [anArrow step].
  	^ aRow!

Item was changed:
  ----- Method: CompoundTileMorph>>addCommandFeedback: (in category 'miscellaneous') -----
  addCommandFeedback: evt
  	"Add screen feedback showing what would be torn off in a drag"
  
  	| aMorph |
+ 	
  	aMorph _ RectangleMorph new bounds: (self bounds).
+ 	aMorph beTransparent; borderWidth: 2; borderColor: ScriptingSystem commandFeedback; lock.
- 	aMorph beTransparent; borderWidth: 2; borderColor: (Color r: 1.0 g: 0.548 b: 0.452); lock.
  	ActiveWorld addHighlightMorph: aMorph for: self outmostScriptEditor!

Item was changed:
  ----- Method: PhraseTileForTest>>addCommandFeedback: (in category 'as yet unclassified') -----
  addCommandFeedback: evt
  	"Add screen feedback showing what would be torn off in a drag"
  
+ 	| aMorph |
- 	| aMorph rect |
  	(self owner owner isMemberOf: PhraseTileMorph) ifTrue: [self owner owner addCommandFeedback: evt. ^ self].
+ 	aMorph _ RectangleMorph new bounds: ((self topLeft - (2 at 1)) corner: (self bottomRight) + (2 at 1)).
+ 	aMorph beTransparent; borderWidth: 2; borderColor: ScriptingSystem commandFeedback; lock.
- 	rect _ self bounds.
- 	aMorph _ RectangleMorph new bounds: rect.
- 	aMorph beTransparent; borderWidth: 2; borderColor: (Color r: 1.0 g: 0.548 b: 0.452); lock.
  	ActiveWorld addHighlightMorph: aMorph for: self outmostScriptEditor!

Item was changed:
  ----- Method: PhraseTileForTimesRepeat>>addCommandFeedback: (in category 'hilighting') -----
  addCommandFeedback: evt
  	"Add screen feedback showing what would be torn off in a drag"
  
+ 	| aMorph |
+ 	
- 	| aMorph rect |
  	(self owner owner isMemberOf: PhraseTileMorph) ifTrue: [self owner owner addCommandFeedback: evt. ^ self].
+ 	aMorph _ RectangleMorph new bounds: ((self topLeft - (2 at 1)) corner: (self bottomRight) + (2 at 1)).
+ 	aMorph beTransparent; borderWidth: 2; borderColor: ScriptingSystem commandFeedback; lock.
- 	rect _ self bounds.
- 	aMorph _ RectangleMorph new bounds: rect.
- 	aMorph beTransparent; borderWidth: 2; borderColor: (Color r: 1.0 g: 0.548 b: 0.452); lock.
  	ActiveWorld addHighlightMorph: aMorph for: self outmostScriptEditor!

Item was changed:
  ----- Method: PhraseTileMorph>>addCommandFeedback: (in category 'hilighting') -----
  addCommandFeedback: evt
  	"Add screen feedback showing what would be torn off in a drag"
  
+ 	| aMorph |
- 	| aMorph rect inHotZone |
  	(self owner owner isMemberOf: PhraseTileMorph)
  		ifTrue: [self owner owner addCommandFeedback: evt. ^ self].
+ 	aMorph _ RectangleMorph new bounds: ((self topLeft - (2 at 1)) corner: ((submorphs at: (2 max: submorphs size)) bottomRight + (2 at 1))).
+ 	"inHotZone _ evt ifNil: [true] ifNotNil: [rect containsPoint: evt cursorPoint]."
+ 	aMorph beTransparent; borderWidth: 2; borderColor: ScriptingSystem commandFeedback; lock.
- 	rect _ self topLeft corner: (submorphs at: (2 min: submorphs size)) bottomRight.
- 	inHotZone _ evt ifNil: [true] ifNotNil: [rect containsPoint: evt cursorPoint].
- 	aMorph _ RectangleMorph new bounds: rect; beTransparent; borderWidth: 2.
- 	aMorph borderColor: (Color r: 1.0 g: 0.548 b: 0.452); lock.
  	ActiveWorld addHighlightMorph: aMorph for: self outmostScriptEditor!

Item was changed:
  ----- Method: TileMorph>>handlesMouseOver: (in category 'event handling') -----
  handlesMouseOver: evt 
  	^ self isPopArrowNeeded
+ 		or: [^super handlesMouseOver: evt]!
- 		or: [super handlesMouseOver: evt]!

Item was changed:
  ----- Method: TileMorph>>mouseEnter: (in category 'event handling') -----
  mouseEnter: evt
+ 	
+ 	.
+ 	super mouseEnter:evt.
+ 	^self showPopArrows!
- 	self showPopArrows!

Item was changed:
  ----- Method: TileMorph>>mouseLeave: (in category 'event handling') -----
  mouseLeave: evt 
  	"When the mouse is leaving and next object is not a pop arrow, remove
  	pop arrows."
  	| popArrows vpanel hpanel |
  	popArrows := evt hand
  				valueOfProperty: #popArrows
+ 				ifAbsent: [^super mouseLeave: evt].
- 				ifAbsent: [^ self].
  	vpanel := popArrows second.
  	hpanel := popArrows third.
  	(vpanel notNil
  			and: [vpanel containsPoint: evt position])
+ 		ifTrue: [^super mouseLeave: evt].
- 		ifTrue: [^ self].
  	(hpanel notNil
  			and: [hpanel containsPoint: evt position])
+ 		ifTrue: [^super mouseLeave: evt].
+ 	self hidePopArrows.
+ 	^super mouseLeave: evt!
- 		ifTrue: [^ self].
- 	self hidePopArrows!

Item was changed:
  ----- Method: TimesRepeatTile>>numberOfTimesToRepeatPart (in category 'access') -----
  numberOfTimesToRepeatPart
  	"Answer the TilePadMorph which holds the tiles defining the number of times to repeat"
  
  	^ timesRow timesPad !

Item was changed:
  ----- Method: TimesRepeatTile>>storeCodeOn:indent: (in category 'code generation') -----
  storeCodeOn: aStream indent: tabCount
  	"Store code representing the receiver on the stream, obeying the tab state."
  
  	aStream nextPutAll: '(('.
  	self numberOfTimesToRepeatPart submorphs
  		ifEmpty:
  			[aStream nextPutAll: '0']
  		ifNotEmpty:
  			[self numberOfTimesToRepeatPart storeCodeOn: aStream indent: tabCount + 2].
  	aStream nextPutAll: ' ) asInteger max: 0) timesRepeat:'.
  	tabCount + 1 timesRepeat: [aStream tab].
  	aStream nextPutAll: '['; cr.
  	self storeCodeBlockFor: whatToRepeatPart on: aStream indent: tabCount + 2.
  	aStream nextPut: $].
  !

Item was changed:
  ----- Method: TimesRepeatTile>>targetPartFor: (in category 'initialization') -----
  targetPartFor: aMorph
  	"Return the row into which the given morph should be inserted."
  
  	| centerY |
  	centerY _ aMorph fullBounds center y.
  	{self numberOfTimesToRepeatPart, whatToRepeatPart} do: [:m |
  		(centerY <= m bounds bottom) ifTrue: [^ m]].
  	^ noPart
  !

Item was changed:
  ----- Method: ViewerLine>>addCommandFeedback: (in category 'slot') -----
  addCommandFeedback: evt
  	"Add screen feedback showing what would be torn off in a drag"
  
  	| aMorph |
+ 	aMorph _ RectangleMorph new bounds: ((submorphs third topLeft - (2 at 1)) corner: (submorphs last bottomRight) + (2 at 1)).
+ 	aMorph beTransparent; borderWidth: 2; borderColor: ScriptingSystem commandFeedback; lock.
- 	aMorph _ RectangleMorph new bounds: ((submorphs third topLeft - (2 at 1)) corner: (submorphs last bottomRight) + (2 at 0)).
- 	aMorph beTransparent; borderWidth: 2; borderColor: (Color r: 1.0 g: 0.548 b: 0.452); lock.
  	ActiveWorld addHighlightMorph: aMorph for: nil!

Item was changed:
  ----- Method: ViewerLine>>addGetterFeedback (in category 'slot') -----
  addGetterFeedback
  	"Add feedback during mouseover of a getter"
  
  	| aMorph endMorph |
+ 	
  	endMorph _
  		(#(touchesA: #seesColor: #overlaps: color:sees: overlapsAny: bearingTo: bearingFrom: distanceToPlayer:) includes: self elementSymbol)
  			ifTrue:
  				[submorphs seventh]
  			ifFalse:
  				[submorphs fifth].
+ 	aMorph _ RectangleMorph new bounds: ((submorphs third topLeft - (2 at 1)) corner: ((endMorph right  @ submorphs third bottom)  + (2 at 1))).
+ 	aMorph beTransparent; borderWidth: 2; borderColor: ScriptingSystem getterFeedback; lock.
- 	aMorph _ RectangleMorph new bounds: ((submorphs third topLeft - (2 at -1)) corner: (endMorph bottomRight + (2 at -1))).
- 	aMorph height:(submorphs third height + 1).
- 	aMorph beTransparent; borderWidth: 2; borderColor: (Color r: 1.0 g: 0.355 b: 0.839); lock.
  	ActiveWorld addHighlightMorph: aMorph for: nil.
  
  "
  Color fromUser (Color r: 1.0 g: 0.355 b: 0.839)
  "!

Item was changed:
  ----- Method: ViewerLine>>addSetterFeedback (in category 'slot') -----
  addSetterFeedback
  	"Add screen feedback showing what would be torn off to make a setter"
  
  	| aMorph |
+ 	aMorph _ RectangleMorph new bounds: ((submorphs third topLeft - (2 at 1)) corner: ((submorphs last right  @ submorphs third bottom)  + (2 at 1))).
+ 	aMorph beTransparent; borderWidth: 2; borderColor: ScriptingSystem setterFeedback; lock.
- 	aMorph _ RectangleMorph new bounds: ((submorphs third topLeft - (2 at 1)) corner: (submorphs last bottomRight) + (2 at 0)).
- 	aMorph height:(submorphs third height + 1).
- 	aMorph beTransparent; borderWidth: 2; borderColor: (Color r: 1.0 g: 0.548 b: 0.452); lock.
  	ActiveWorld addHighlightMorph: aMorph for: nil!



More information about the etoys-dev mailing list