Marcel Taeumel uploaded a new version of MorphicExtras to project The Trunk: http://source.squeak.org/trunk/MorphicExtras-mt.285.mcz
==================== Summary ====================
Name: MorphicExtras-mt.285 Author: mt Time: 26 February 2021, 3:47:14.471955 pm UUID: a3e97393-d97b-684b-b584-abde4e302510 Ancestors: MorphicExtras-mt.284
Complements Morphic-mt.1726
=============== Diff against MorphicExtras-mt.284 ===============
Item was changed: + ----- Method: BookMorph>>abandon (in category 'submorphs - add/remove') ----- - ----- Method: BookMorph>>abandon (in category 'submorphs-add/remove') ----- abandon "Like delete, but we really intend not to use this morph again. Make the page cache release the page object."
self delete. pages do: [:aPage | | pg | (pg := aPage sqkPage) ifNotNil: [ pg contentsMorph == aPage ifTrue: [ pg contentsMorph: nil]]].!
Item was changed: + ----- Method: BookMorph>>allNonSubmorphMorphs (in category 'submorphs - accessing') ----- - ----- Method: BookMorph>>allNonSubmorphMorphs (in category 'submorphs-accessing') ----- allNonSubmorphMorphs "Return a collection containing all morphs in this morph which are not currently in the submorph containment hierarchy. Especially the non-showing pages in BookMorphs. (As needed, make a variant of this that brings in all pages that are not in memory.)"
| coll | coll := OrderedCollection new. pages do: [:pg | pg isInMemory ifTrue: [ pg == currentPage ifFalse: [coll add: pg]]]. ^ coll!
Item was changed: + ----- Method: BouncingAtomsMorph>>addMorphFront: (in category 'submorphs - add/remove') ----- - ----- Method: BouncingAtomsMorph>>addMorphFront: (in category 'submorphs-add/remove') ----- addMorphFront: aMorph "Called by the 'embed' meta action. We want non-atoms to go to the back." "Note: A user would not be expected to write this method. However, a sufficiently advanced user (e.g, an e-toy author) might do something equivalent by overridding the drag-n-drop messages when they are implemented."
(aMorph isMemberOf: AtomMorph) ifTrue: [super addMorphFront: aMorph] ifFalse: [super addMorphBack: aMorph].!
Item was changed: + ----- Method: EmbeddedWorldBorderMorph>>morphicLayerNumber (in category 'submorphs - layers') ----- - ----- Method: EmbeddedWorldBorderMorph>>morphicLayerNumber (in category 'WiW support') ----- morphicLayerNumber + "Embedded worlds come in front of other worlds' Project navigation morphs"
+ ^ self valueOfProperty: #morphicLayerNumber ifAbsent: [self class navigatorLayer - 1] + ! - "helpful for insuring some morphs always appear in front of or behind others. - smaller numbers are in front" - - ^20 "Embedded worlds come in front of other worlds' Project navigation morphs"!
Item was changed: + ----- Method: FlapTab>>dismissViaHalo (in category 'submorphs - add/remove') ----- - ----- Method: FlapTab>>dismissViaHalo (in category 'submorphs-add/remove') ----- dismissViaHalo "Dismiss the receiver (and its referent), unless it resists"
self resistsRemoval ifTrue: [(UIManager default chooseFrom: #( 'Yes' 'Um, no, let me reconsider') title: 'Really throw this flap away?') = 2 ifFalse: [^ self]].
referent delete. self delete!
Item was changed: + ----- Method: FlapTab>>morphicLayerNumber (in category 'submorphs - layers') ----- - ----- Method: FlapTab>>morphicLayerNumber (in category 'WiW support') ----- morphicLayerNumber + + ^ self valueOfProperty: #morphicLayerNumber ifAbsent: [self class navigatorLayer]! - ^self flapShowing ifTrue: [26] ifFalse: [25] "As navigators"!
Item was changed: ----- Method: Flaps class>>newPaintingFlap (in category 'predefined flaps') ----- newPaintingFlap "Add a flap with the paint palette in it"
| aFlap aFlapTab | "Flaps reinstateDefaultFlaps. Flaps addPaintingFlap"
aFlap := PasteUpMorph new borderWidth: 0. aFlap color: Color transparent. aFlap layoutPolicy: TableLayout new. aFlap hResizing: #shrinkWrap. aFlap vResizing: #shrinkWrap. aFlap cellPositioning: #topLeft. aFlap clipSubmorphs: false.
aFlap beSticky. "really?!!" aFlap addMorphFront: PaintBoxMorph new. + aFlap beFlap: true. - aFlap setProperty: #flap toValue: true. aFlap fullBounds. "force layout"
aFlapTab := FlapTab new referent: aFlap. aFlapTab setNameTo: 'Painting' translated. aFlapTab setProperty: #priorWording toValue: 'Paint' translated. aFlapTab useGraphicalTab. aFlapTab removeAllMorphs. aFlapTab setProperty: #paintingFlap toValue: true. aFlapTab addMorphFront: "(SketchMorph withForm: (ScriptingSystem formAtKey: #PaintingFlapPic))" self paintFlapButton. aFlapTab cornerStyle: #rounded. aFlapTab edgeToAdhereTo: #right. aFlapTab setToPopOutOnDragOver: false. aFlapTab setToPopOutOnMouseOver: false. aFlapTab on: #mouseUp send: #startOrFinishDrawing: to: aFlapTab. aFlapTab setBalloonText:'Click here to start or finish painting.' translated.
aFlapTab fullBounds. "force layout" aFlapTab position: (0@6). self currentWorld addMorphFront: aFlapTab. ^ aFlapTab!
Item was changed: + ----- Method: FloatingBookControlsMorph>>morphicLayerNumber (in category 'submorphs - layers') ----- - ----- Method: FloatingBookControlsMorph>>morphicLayerNumber (in category 'WiW support') ----- morphicLayerNumber + "page controls are behind menus and balloons, but in front of most other stuff" + + ^ self valueOfProperty: #morphicLayerNumber ifAbsent: [self class navigatorLayer]! - - "helpful for insuring some morphs always appear in front of or behind others. - smaller numbers are in front" - - ^23 "page controls are behind menus and balloons, but in front of most other stuff"!
Item was changed: + ----- Method: ProjectNavigationMorph>>morphicLayerNumber (in category 'submorphs - layers') ----- - ----- Method: ProjectNavigationMorph>>morphicLayerNumber (in category 'WiW support') ----- morphicLayerNumber
+ ^ self valueOfProperty: #morphicLayerNumber ifAbsent: [self class navigatorLayer]! - "helpful for insuring some morphs always appear in front of or behind others. - smaller numbers are in front" - - ^mouseInside == true ifTrue: [26] ifFalse: [25] - - "Navigators are behind menus and balloons, but in front of most other stuff"!
Item was changed: ----- Method: ProjectNavigationMorph>>soundDownEvt:morph: (in category '*MorphicExtras-Sound') ----- soundDownEvt: a morph: b
soundSlider ifNotNil: [soundSlider delete]. (soundSlider := RectangleMorph new) + morphicLayerNumber: self class frontmostLayer; - setProperty: #morphicLayerNumber toValue: 1; extent: b width @ (b width * 3); color: self colorForButtons; borderStyle: BorderStyle raised; bottomLeft: b boundsInWorld origin. soundSlider addMorph: ( RectangleMorph new color: self colorForButtons; borderColor: #raised; extent: b width @ 8; center: soundSlider center x @ (soundSlider bottom - (soundSlider height * self getSoundVolume) asInteger) ). soundSlider openInWorld.!
Item was changed: + ----- Method: ReferenceMorph>>allNonSubmorphMorphs (in category 'submorphs - accessing') ----- - ----- Method: ReferenceMorph>>allNonSubmorphMorphs (in category 'submorphs-accessing') ----- allNonSubmorphMorphs "we hold extra morphs"
^ Array with: referent!
Item was changed: + ----- Method: ScreeningMorph>>addMorph: (in category 'submorphs - add/remove') ----- - ----- Method: ScreeningMorph>>addMorph: (in category 'submorphs-add/remove') ----- addMorph: aMorph
| f | super addMorph: aMorph. submorphs size <= 2 ifTrue: [self bounds: submorphs last bounds]. submorphs size = 2 ifTrue: ["The screenMorph has just been added. Choose as the passingColor the center color of that morph" f := self screenMorph imageForm. passingColor := f colorAt: f boundingBox center. passElseBlock := true]!
Item was added: + ----- Method: SketchEditorMorph>>initialize (in category 'initialization') ----- + initialize + + super initialize. + forEachHand := Dictionary new.!
Item was changed: ----- Method: SketchEditorMorph>>initializeFor:inBounds:pasteUpMorph:paintBoxPosition: (in category 'initialization') ----- initializeFor: aSketchMorph inBounds: boundsToUse pasteUpMorph: aPasteUpMorph paintBoxPosition: aPosition "NB: if aPosition is nil, then it's assumed that the paintbox is obtained from a flap or some such, so do nothing special regarding a palette in this case. The palette needs already to be in the world for this to work." | w | (w := aPasteUpMorph world) addMorphInLayer: self. "in back of palette" enclosingPasteUpMorph := aPasteUpMorph. hostView := aSketchMorph. "may be ownerless" self bounds: boundsToUse. palette := w paintBox focusMorph: self. palette beStatic. "give Nebraska whatever help we can" palette addWeakDependent: self. + self morphicLayerNumber: self class dialogLayer + 1. + palette morphicLayerNumber: self class dialogLayer. aPosition ifNotNil: [w addMorphFront: palette. "bring to front" palette position: aPosition. palette beSupersized. self flag: #hacky. "mt: That super-sizing with a flex shell is awkward. Need to fix." palette owner bounds: (palette owner bounds translatedToBeWithin: self world bounds)]. paintingForm := Form extent: bounds extent depth: w assuredCanvas depth. self dimTheWindow. self addRotationScaleHandles. aSketchMorph ifNotNil: [ aSketchMorph form displayOn: paintingForm at: (hostView boundsInWorld origin - bounds origin - hostView form offset) clippingBox: (0@0 extent: paintingForm extent) rule: Form over fillColor: nil. "assume they are the same depth". undoBuffer := paintingForm deepCopy. rotationCenter := aSketchMorph rotationCenter]!
Item was removed: - ----- Method: SketchEditorMorph>>morphicLayerNumber (in category 'WiW support') ----- - morphicLayerNumber - "Place the painting behind the paint palette" - - ^ 28!
Item was changed: + ----- Method: StringButtonMorph>>actWhen: (in category 'submorphs - add/remove') ----- - ----- Method: StringButtonMorph>>actWhen: (in category 'submorphs-add/remove') ----- actWhen: aSymbol "Set the condition under which to invoke my action to one of: #buttonDown, #buttonUp, and #whilePressed."
actWhen := aSymbol. !
Item was changed: + ----- Method: TabbedPalette>>replaceSubmorph:by: (in category 'submorphs - add/remove') ----- - ----- Method: TabbedPalette>>replaceSubmorph:by: (in category 'submorphs-add/remove') ----- replaceSubmorph: oldMorph by: newMorph super replaceSubmorph: oldMorph by: newMorph. oldMorph == currentPage ifTrue: [currentPage := newMorph]!
Item was changed: + ----- Method: ThreadNavigationMorph>>morphicLayerNumber (in category 'submorphs - layers') ----- - ----- Method: ThreadNavigationMorph>>morphicLayerNumber (in category 'private') ----- morphicLayerNumber
+ ^ self valueOfProperty: #morphicLayerNumber ifAbsent: [self class navigatorLayer]! - "helpful for insuring some morphs always appear in front of or behind others. - smaller numbers are in front" - - ^15 "Navigators are behind menus and balloons, but in front of most other stuff"!
Item was changed: + ----- Method: ViewerFlapTab>>allNonSubmorphMorphs (in category 'submorphs - accessing') ----- - ----- Method: ViewerFlapTab>>allNonSubmorphMorphs (in category 'submorphs-accessing') ----- allNonSubmorphMorphs "Return a collection containing all morphs in this morph which are not currently in the submorph containment hierarchy. Especially the non-showing pages in BookMorphs."
^ flapShowing ifTrue: [#()] ifFalse: [Array with: referent]!
packages@lists.squeakfoundation.org