[squeak-dev] The Trunk: Morphic-mt.2076.mcz

commits at source.squeak.org commits at source.squeak.org
Thu Jan 26 09:45:19 UTC 2023


Marcel Taeumel uploaded a new version of Morphic to project The Trunk:
http://source.squeak.org/trunk/Morphic-mt.2076.mcz

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

Name: Morphic-mt.2076
Author: mt
Time: 26 January 2023, 10:45:16.970707 am
UUID: cc104798-6dc6-2a4d-9db9-c459cb739680
Ancestors: Morphic-mt.2075

Some code clean-up around a morph#s "highlight-for-mouse-down" feature.

=============== Diff against Morphic-mt.2075 ===============

Item was changed:
  ----- Method: LazyListMorph>>highlightPotentialDropRow:on: (in category 'drawing') -----
  highlightPotentialDropRow: row  on: aCanvas
  	| drawBounds  |
  	drawBounds := self drawBoundsForRow: row.
  	drawBounds := drawBounds intersect: self bounds.
+ 	aCanvas frameRectangle: drawBounds width: 1 px color: self selectionColor asColor!
- 	aCanvas frameRectangle: drawBounds color: self selectionColor asColor!

Item was changed:
  ----- Method: Morph>>drawMouseDownHighlightOn: (in category 'drawing') -----
  drawMouseDownHighlightOn: aCanvas
  
  	self highlightedForMouseDown ifTrue: [
  		self wantsRoundedCorners
+ 			ifTrue: [aCanvas frameRoundRect: self fullBounds radius: self cornerRadius width: 1 px color: self color darker darker]
+ 			ifFalse: [aCanvas frameRectangle: self fullBounds width: 1 px color: self color darker darker]].!
- 			ifTrue: [aCanvas frameRoundRect: self fullBounds radius: self cornerRadius width: 1 color: self color darker darker]
- 			ifFalse: [aCanvas frameRectangle: self fullBounds color: self color darker darker]].!

Item was removed:
- ----- Method: Morph>>highlightForMouseDown (in category 'drawing') -----
- highlightForMouseDown
- 	self highlightForMouseDown: true!

Item was removed:
- ----- Method: Morph>>highlightForMouseDown: (in category 'drawing') -----
- highlightForMouseDown: aBoolean
- 	aBoolean 
- 		ifTrue:[self setProperty: #highlightedForMouseDown toValue: aBoolean]
- 		ifFalse:[self removeProperty: #highlightedForMouseDown. self resetExtension].
- 	self changed!

Item was changed:
  ----- Method: Morph>>highlightedForMouseDown (in category 'drawing') -----
  highlightedForMouseDown
+ 
+ 	extension ifNil: [^ false].
+ 	^ (self valueOfProperty: #highlightedForMouseDown) == true!
- 	^(self valueOfProperty: #highlightedForMouseDown) == true!

Item was added:
+ ----- Method: Morph>>highlightedForMouseDown: (in category 'drawing') -----
+ highlightedForMouseDown: aBoolean
+ 
+ 	(extension isNil and: [aBoolean not]) ifTrue: [^ self].
+ 	self highlightedForMouseDown == aBoolean ifTrue: [^ self].
+ 	aBoolean 
+ 		ifFalse: [self removeProperty: #highlightedForMouseDown]
+ 		ifTrue: [self setProperty: #highlightedForMouseDown toValue: aBoolean].
+ 	self changed.!

Item was changed:
  ----- Method: SimpleHierarchicalListMorph>>mouseDown: (in category 'event handling') -----
  mouseDown: evt
  	| aMorph selectors |
  	
  	aMorph := self itemFromPoint: evt position.
  	evt yellowButtonPressed  "First check for option (menu) click"
  		ifTrue: [
  			(PluggableListMorph menuRequestUpdatesSelection and: [model okToChange]) ifTrue: [
  				aMorph == selectedMorph 
  					ifFalse: [self setSelectedMorph: aMorph]].
  			^ self yellowButtonActivity: evt shiftPressed].
  	(aMorph notNil and:[aMorph inToggleArea: (aMorph point: evt position from: self)])
  		ifTrue:[^self toggleExpandedState: aMorph event: evt]. 
  	aMorph ifNil:[^super mouseDown: evt].
  	
+ 	PluggableListMorph highlightPreSelection ifTrue: [
+ 		aMorph highlightedForMouseDown: true.
+ 		self setProperty: #highlightedMorph toValue: aMorph].
- 	aMorph highlightForMouseDown.
- 	self setProperty: #highlightedMorph toValue: aMorph.
  	
  	selectors := Array 
  		with: #click:
  		with: (self doubleClickEnabled ifTrue: [#doubleClick:] ifFalse: [nil])
  		with: nil
  		with: (self dragEnabled ifTrue:[#startDrag:] ifFalse:[nil]).
  	evt hand waitForClicksOrDrag: self event: evt selectors: selectors threshold: HandMorph dragThreshold "pixels".!

Item was changed:
  ----- Method: SimpleHierarchicalListMorph>>mouseUp: (in category 'event handling') -----
  mouseUp: event
   
+ 	| clickedMorph |
+ 	model okToChange ifFalse: [^ self].
+ 	(clickedMorph := self itemFromPoint: event position) ifNil: [^ self].
- 	| clickedMorph highlightedMorph |
- 	clickedMorph := self itemFromPoint: event position.
- 	highlightedMorph := self valueOfProperty: #highlightedMorph ifAbsent: [].
- 	self removeProperty: #highlightedMorph.
- 
- 	((model okToChange not
- 		or: [clickedMorph isNil])
- 		or: [clickedMorph ~~ highlightedMorph]) ifTrue: [
- 			highlightedMorph ifNotNil: [:m | m highlightForMouseDown: false].
- 			^ self].
  	
+ 	(self valueOfProperty: #highlightedMorph ifAbsent: [])
+ 		ifNotNil: [:m |
+ 			m highlightedForMouseDown: false.
+ 			self removeProperty: #highlightedMorph].
+ 	
  	((autoDeselect isNil or: [autoDeselect]) and: [clickedMorph == selectedMorph]) 
  		ifTrue: [self setSelectedMorph: nil]
  		ifFalse: [self setSelectedMorph: clickedMorph].
  
- 	highlightedMorph highlightForMouseDown: false.	
  	event hand newKeyboardFocus: self.
  	Cursor normal show.!

Item was changed:
  ----- Method: SimpleHierarchicalListMorph>>removeObsoleteEventHandlers (in category 'obsolete') -----
  removeObsoleteEventHandlers
  	scroller submorphs do:[:m|
+ 		m eventHandler: nil; highlightedForMouseDown: false; resetExtension].!
- 		m eventHandler: nil; highlightForMouseDown: false; resetExtension].!

Item was changed:
  ----- Method: SimpleHierarchicalListMorph>>startDrag: (in category 'drag and drop') -----
  startDrag: evt 
  	
  	| itemMorph |
  	evt hand hasSubmorphs ifTrue: [^ self].
  	self model okToChange ifFalse: [^ self].
  	
  	itemMorph := scroller submorphs
  		detect: [:any | any highlightedForMouseDown]
  		ifNone: [^ self].
  
  	"Prepare visuals."
+ 	itemMorph highlightedForMouseDown: false.
- 	itemMorph highlightForMouseDown: false.
  	self setSelectedMorph: itemMorph.
  
  	[ "Initiate drag."
  		(self model dragPassengerFor: itemMorph inMorph: self) ifNotNil: [:passenger | | ddm |
  			ddm := (self valueOfProperty: #dragTransferClass ifAbsent: [TransferMorph]) withPassenger: passenger from: self.
  			ddm dragTransferType: (self model dragTransferTypeForMorph: self).
  			ddm updateFromUserInputEvent: evt.
  			self model dragStartedFor: itemMorph transferMorph: ddm.
  			evt hand grabMorph: ddm].
  	] ensure: [
  		Cursor normal show.
  		evt hand releaseMouseFocus: self].!



More information about the Squeak-dev mailing list