Chris Muller uploaded a new version of Morphic to project The Trunk: http://source.squeak.org/trunk/Morphic-cmm.740.mcz
==================== Summary ====================
Name: Morphic-cmm.740 Author: cmm Time: 24 August 2014, 12:01:36.047 pm UUID: 7d546524-daff-4d6f-b92c-f7d794c0de5c Ancestors: Morphic-cmm.738
Re-fixed the Morphic ancestry mess. Please do not re-adopt anything from kfr.732 to mt.742. All changes which didn't break something have already been manually included. It's too bad we lost the historical record for those changes, but its better than a broken trunk.
=============== Diff against Morphic-cmm.738 ===============
Item was changed: ----- Method: AlternatePluggableListMorphOfMany>>mouseUp: (in category 'event handling') ----- mouseUp: event + + event hand newKeyboardFocus: self. + hasFocus := true. + ^self! - "Not needed. Overridden to do nothing."!
Item was changed: ----- Method: Morph>>addAllMorphs: (in category 'submorphs-add/remove') ----- addAllMorphs: aCollection + ^self addAllMorphsBack: aCollection! - ^self privateAddAllMorphs: aCollection atIndex: submorphs size!
Item was changed: ----- Method: Morph>>addAllMorphs:after: (in category 'submorphs-add/remove') ----- addAllMorphs: aCollection after: anotherMorph + ^self addAllMorphs: aCollection behind: anotherMorph! - ^self privateAddAllMorphs: aCollection - atIndex: (submorphs indexOf: anotherMorph ifAbsent: [submorphs size])!
Item was added: + ----- Method: Morph>>addAllMorphs:behind: (in category 'submorphs-add/remove') ----- + addAllMorphs: aCollection behind: anotherMorph + ^self privateAddAllMorphs: aCollection + atIndex: (submorphs indexOf: anotherMorph) + 1!
Item was added: + ----- Method: Morph>>addAllMorphs:inFrontOf: (in category 'submorphs-add/remove') ----- + addAllMorphs: aCollection inFrontOf: anotherMorph + ^self privateAddAllMorphs: aCollection + atIndex: ((submorphs indexOf: anotherMorph) max: 1)!
Item was added: + ----- Method: Morph>>addAllMorphsBack: (in category 'submorphs-add/remove') ----- + addAllMorphsBack: aCollection + ^self privateAddAllMorphs: aCollection atIndex: submorphs size + 1!
Item was added: + ----- Method: Morph>>addAllMorphsFront: (in category 'submorphs-add/remove') ----- + addAllMorphsFront: aCollection + ^self privateAddAllMorphs: aCollection atIndex: 1!
Item was changed: ----- Method: Morph>>addMorph:after: (in category 'submorphs-add/remove') ----- addMorph: newMorph after: aMorph + ^self addMorph: newMorph behind: aMorph! - "Add the given morph as one of my submorphs, inserting it after anotherMorph" - ^self privateAddMorph: newMorph atIndex: (submorphs indexOf: aMorph)+1!
Item was changed: ----- Method: Morph>>privateAddAllMorphs:atIndex: (in category 'private') ----- privateAddAllMorphs: aCollection atIndex: index "Private. Add aCollection of morphs to the receiver" + | myWorld otherSubmorphs offset | + (index between: 1 and: submorphs size+1) + ifFalse: [^ self error: 'index out of range']. - | myWorld otherSubmorphs | myWorld := self world. otherSubmorphs := submorphs copyWithoutAll: aCollection. + offset := aCollection count: [:m | (submorphs indexOf: m) between: 1 and: index - 1]. + submorphs := otherSubmorphs copyReplaceFrom: index-offset to: index-offset-1 with: aCollection. - (index between: 0 and: otherSubmorphs size) - ifFalse: [^ self error: 'index out of range']. - index = 0 - ifTrue:[ submorphs := aCollection asArray, otherSubmorphs] - ifFalse:[ index = otherSubmorphs size - ifTrue:[ submorphs := otherSubmorphs, aCollection] - ifFalse:[ submorphs := otherSubmorphs copyReplaceFrom: index + 1 to: index with: aCollection ]]. aCollection do: [:m | | itsOwner itsWorld | itsOwner := m owner. itsOwner ifNotNil: [ itsWorld := m world. (itsWorld == myWorld) ifFalse: [ itsWorld ifNotNil: [self privateInvalidateMorph: m]. m outOfWorld: itsWorld]. (itsOwner ~~ self) ifTrue: [ m owner privateRemove: m. m owner removedMorph: m ]]. m privateOwner: self. myWorld ifNotNil: [self privateInvalidateMorph: m]. (myWorld == itsWorld) ifFalse: [m intoWorld: myWorld]. itsOwner == self ifFalse: [ self addedMorph: m. m noteNewOwner: self ]. ]. self layoutChanged. !
Item was added: + ScrollPane subclass: #PluggableScrollPane + instanceVariableNames: 'morph morphClass' + classVariableNames: '' + poolDictionaries: '' + category: 'Morphic-Pluggable Widgets'!
Item was added: + ----- Method: PluggableScrollPane class>>on: (in category 'instance creation') ----- + on: morph + + ^ self new + morph: morph; + yourself!
Item was added: + ----- Method: PluggableScrollPane class>>onClass: (in category 'instance creation') ----- + onClass: morphClass + + ^ self new + morphClass: morphClass; + updateMorph; + yourself!
Item was added: + ----- Method: PluggableScrollPane>>morph (in category 'accessing') ----- + morph + + ^ morph ifNil: [ + self morph: self morphClass new. + morph]!
Item was added: + ----- Method: PluggableScrollPane>>morph: (in category 'accessing') ----- + morph: morphToScroll + + morphToScroll topLeft: 0@0. + morph := morphToScroll. + morphClass := morphToScroll class. + + self scroller + removeAllMorphs; + addMorph: morph. + + self updateMorph.!
Item was added: + ----- Method: PluggableScrollPane>>morphClass (in category 'accessing') ----- + morphClass + + ^ morphClass ifNil: [Morph]!
Item was added: + ----- Method: PluggableScrollPane>>morphClass: (in category 'accessing') ----- + morphClass: aMorphClass + + morphClass := aMorphClass.!
Item was added: + ----- Method: PluggableScrollPane>>updateMorph (in category 'updating') ----- + updateMorph + + self morph fullBounds. + self setScrollDeltas. + + scrollBar setValue: 0.0. + hScrollBar setValue: 0.0.!
Item was changed: ----- Method: TextMorphForEditView>>mouseDown: (in category 'event handling') ----- mouseDown: event
event yellowButtonPressed ifTrue: [ + (self editor yellowButtonDown: event) ifTrue:[^self]. - (editor yellowButtonDown: event) ifTrue:[^self]. ^ editView yellowButtonActivity: event shiftPressed]. ^ super mouseDown: event !