[squeak-dev] The Trunk: Morphic-bf.618.mcz

commits at source.squeak.org commits at source.squeak.org
Fri Apr 13 23:36:06 UTC 2012


Bert Freudenberg uploaded a new version of Morphic to project The Trunk:
http://source.squeak.org/trunk/Morphic-bf.618.mcz

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

Name: Morphic-bf.618
Author: bf
Time: 13 April 2012, 4:34:16.297 pm
UUID: 0ab6bc05-3abd-458f-8af2-fc9d6c42d769
Ancestors: Morphic-eem.617

Fix keyboard filtering in PluggableListMorphOfMany (e.g., the TestRunner's class list)

=============== Diff against Morphic-eem.617 ===============

Item was changed:
  ----- Method: PluggableListMorph>>update: (in category 'updating') -----
  update: aSymbol 
  	"Refer to the comment in View|update:."
  	aSymbol == getListSelector ifTrue:
  		[ self updateList.
  		^ self ].
  	aSymbol == getIndexSelector ifTrue:
  		[ | uiIndex modelIndex |
  		uiIndex := self uiIndexFor: (modelIndex := self getCurrentSelectionIndex).
  		self selectionIndex:
  			(uiIndex = 0
  				ifTrue:
  					[ "The filter is preventing us from selecting the item we want - remove it."
+ 					(modelIndex > 0 and: [list notNil and: [list size > 0]]) ifTrue: [ self removeFilter ].
- 					(list notNil and: [list size > 0]) ifTrue: [ self removeFilter ].
  					modelIndex ]
  				ifFalse: [ uiIndex ]).
  		^ self ]!

Item was changed:
  ----- Method: PluggableListMorphOfMany>>itemSelectedAmongMultiple: (in category 'model access') -----
  itemSelectedAmongMultiple: index
+ 	^self listSelectionAt: (self modelIndexFor: index)!
- 	^self listSelectionAt: index!

Item was changed:
  ----- Method: PluggableListMorphOfMany>>mouseDown: (in category 'event handling') -----
  mouseDown: event
+ 	| oldIndex oldVal row index |
- 	| oldIndex oldVal row |
  	event yellowButtonPressed ifTrue: [^ self yellowButtonActivity: event shiftPressed].
  	row := self rowAtLocation: event position.
  
  	row = 0 ifTrue: [^super mouseDown: event].
+ 	index := self modelIndexFor: row.
  
  	model okToChange ifFalse: [^ self].  "No change if model is locked"
  
  	"Set meaning for subsequent dragging of selection"
+ 	dragOnOrOff := (self listSelectionAt: index) not.
- 	dragOnOrOff := (self listSelectionAt: row) not.
  	oldIndex := self getCurrentSelectionIndex.
  	oldIndex ~= 0 ifTrue: [oldVal := self listSelectionAt: oldIndex].
  
  	"Set or clear new primary selection (listIndex)"
  	dragOnOrOff
+ 		ifTrue: [self changeModelSelection: index]
- 		ifTrue: [self changeModelSelection: (self modelIndexFor: row)]
  		ifFalse: [self changeModelSelection: 0].
  
  	"Need to restore the old one, due to how model works, and set new one."
  	oldIndex ~= 0 ifTrue: [self listSelectionAt: oldIndex put: oldVal].
+ 	self listSelectionAt: index put: dragOnOrOff.
- 	self listSelectionAt: row put: dragOnOrOff.
  	"event hand releaseMouseFocus: aMorph."
+ !
- 	"aMorph changed"!

Item was changed:
  ----- Method: PluggableListMorphOfMany>>mouseMove: (in category 'event handling') -----
  mouseMove: event 
  	"The mouse has moved, as characterized by the event provided.  Adjust the scrollbar, and alter the selection as appropriate"
  
+ 	| oldIndex oldVal row index |
- 	| oldIndex oldVal row |
  	event position y < self top 
  		ifTrue: 
  			[scrollBar scrollUp: 1.
  			row := self rowAtLocation: scroller topLeft + (1 @ 1)]
  		ifFalse: 
  			[row := event position y > self bottom 
  				ifTrue: 
  					[scrollBar scrollDown: 1.
  					self rowAtLocation: scroller bottomLeft + (1 @ -1)]
  				ifFalse: [ self rowAtLocation: event position]].
  	row = 0 ifTrue: [^super mouseDown: event].
+ 	index := self modelIndexFor: row.
  
  	model okToChange ifFalse: [^self].	"No change if model is locked"
  
  	dragOnOrOff ifNil: 
  			["Was not set at mouse down, which means the mouse must have gone down in an area where there was no list item"
+ 			dragOnOrOff := (self listSelectionAt: index) not].
- 			dragOnOrOff := (self listSelectionAt: row) not].
  
  	"Set meaning for subsequent dragging of selection"
  	oldIndex := self getCurrentSelectionIndex.
  	oldIndex ~= 0 ifTrue: [oldVal := self listSelectionAt: oldIndex].
  
  	"Set or clear new primary selection (listIndex)"
  	dragOnOrOff 
+ 		ifTrue: [self changeModelSelection: index]
- 		ifTrue: [self changeModelSelection: (self modelIndexFor: row)]
  		ifFalse: [self changeModelSelection: 0].
  
  	"Need to restore the old one, due to how model works, and set new one."
  	oldIndex ~= 0 ifTrue: [self listSelectionAt: oldIndex put: oldVal].
+ 	self listSelectionAt: index put: dragOnOrOff.
+ !
- 	self listSelectionAt: row put: dragOnOrOff.
- 	row changed!



More information about the Squeak-dev mailing list