[squeak-dev] The Trunk: Tools-mt.896.mcz

commits at source.squeak.org commits at source.squeak.org
Tue Oct 1 10:51:44 UTC 2019


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

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

Name: Tools-mt.896
Author: mt
Time: 1 October 2019, 12:51:43.394611 pm
UUID: 64caf9cf-236a-a744-9d3d-2f33f66647d9
Ancestors: Tools-mt.895

Fixes a tool-update bug when drag-dropping classes or methods between categories.

This surfaced only now because I recently cached #getFullList in PluggableListMorph. Now we notice those missing "self changed: #myListSelector" in tool models. I suppose that only "more recent" features - such as this drag-and-drop feature - might be affected because list filtering is not around *that* long.

=============== Diff against Tools-mt.895 ===============

Item was changed:
  ----- Method: Browser>>dropOnMessageCategories:at: (in category 'drag and drop') -----
  dropOnMessageCategories: method at: index
  
  	| sourceClass destinationClass category copy |
  	copy := Sensor shiftPressed.
  	(method isKindOf: CompiledMethod) 
  		ifFalse:[^self inform: 'Can only drop methods'].
  	sourceClass := method methodClass.
  	destinationClass := self selectedClassOrMetaClass.
  	sourceClass == destinationClass ifTrue:[
  		category := self messageCategoryList at: index.
  		category = ClassOrganizer allCategory ifTrue: [^false].
  		destinationClass organization classify: method selector  under: category suppressIfDefault: false logged: true.
+ 		self changed: #messageCategoryList.
+ 		self changed: #messageList.
  		^true ].
  	(copy
  		or: [ (destinationClass inheritsFrom: sourceClass)
  		or: [ (sourceClass inheritsFrom: destinationClass)
  		or: [ sourceClass theNonMetaClass == destinationClass theNonMetaClass ] ] ])
  		ifFalse: [
  			(self confirm: (
  				'Classes "{1}" and "{2}" are unrelated.{3}Are you sure you want to move this method?'
  					format: { sourceClass. destinationClass. Character cr })) 
  						ifFalse: [ ^false ] ].
  	destinationClass
  		compile: method getSource
  		classified: (self messageCategoryList at: index)
  		withStamp: method timeStamp
  		notifying: nil.
  	copy ifFalse: [
  		sourceClass removeSelector: method selector ].
  	^true!

Item was changed:
  ----- Method: Browser>>dropOnSystemCategories:at: (in category 'drag and drop') -----
  dropOnSystemCategories: aClass at: index
  	| category |
  	(aClass isBehavior) ifFalse:[^self inform: 'Can only drop classes'].
  	category := self systemCategoryList at: index.
  	self selectedEnvironment organization classify: aClass instanceSide name  under: category.
+ 	self changed: #systemCategoryList.
+ 	self changed: #classList.
  	^true!



More information about the Squeak-dev mailing list