The Inbox: Morphic-mt.721.mcz

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

The Inbox: Morphic-mt.721.mcz

commits-2
A new version of Morphic was added to project The Inbox:
http://source.squeak.org/inbox/Morphic-mt.721.mcz

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

Name: Morphic-mt.721
Author: mt
Time: 10 February 2014, 12:57:04.053 pm
UUID: 4fc4ba71-fbc9-fa44-be19-a7d88f4cf9aa
Ancestors: Morphic-cmm.720

Fixed implementation for adding multiple morphs at once. Made API of addMorph* and addAllMorphs* more consistent w.r.t. index handling.

=============== Diff against Morphic-cmm.720 ===============

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.
  !


Reply | Threaded
Open this post in threaded view
|

Re: The Inbox: Morphic-mt.721.mcz

Frank Shearar-3
On 10 February 2014 11:56,  <[hidden email]> wrote:

> A new version of Morphic was added to project The Inbox:
> http://source.squeak.org/inbox/Morphic-mt.721.mcz
>
> ==================== Summary ====================
>
> Name: Morphic-mt.721
> Author: mt
> Time: 10 February 2014, 12:57:04.053 pm
> UUID: 4fc4ba71-fbc9-fa44-be19-a7d88f4cf9aa
> Ancestors: Morphic-cmm.720
>
> Fixed implementation for adding multiple morphs at once. Made API of addMorph* and addAllMorphs* more consistent w.r.t. index handling.
>
> =============== Diff against Morphic-cmm.720 ===============

Nice to see an mt commit!

frank

Reply | Threaded
Open this post in threaded view
|

Re: The Inbox: Morphic-mt.721.mcz

marcel.taeumel (old)
Well, it was me. :)

Best,
Marcel