'From Pharo1.3a of ''18 January 2011'' [Latest update: #13044] on 11 February 2011 at 1:24:40 pm'!!PluggableListMorphOfMany methodsFor: '*Polymorph-Widgets-override' stamp: 'GaryChambers 2/11/2011 12:04'!mouseDown: event	"Grab keyboard focus and set mouseDownRow."		| oldIndex oldVal row |	event yellowButtonPressed ifTrue: [^ self yellowButtonActivity: event shiftPressed].	self wantsKeyboardFocus		ifTrue: [self takeKeyboardFocus].	row := self rowAtLocation: event position.	row = 0 ifTrue: [^super mouseDown: event].	self mouseDownRow: row.	model okToChange ifFalse: [^ self].  "No change if model is locked"	"Set meaning for subsequent dragging of selection"	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: 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].	event shiftPressed		ifTrue: [((oldIndex max: 1) min: row) to: (oldIndex max: row) do: [:i |					self listSelectionAt: i put: dragOnOrOff].				self changed]		ifFalse: [self listSelectionAt: row put: dragOnOrOff].	"event hand releaseMouseFocus: aMorph."	"aMorph changed"! !