[squeak-dev] The Trunk: Morphic-nice.1625.mcz

Nicolas Cellier nicolas.cellier.aka.nice at gmail.com
Mon Feb 17 16:19:10 UTC 2020


Yes, apologies.

Le lun. 17 févr. 2020 à 17:19, Thiede, Christoph <
Christoph.Thiede at student.hpi.uni-potsdam.de> a écrit :

> Is this the reason why I cannot open Browsers any longer?
>
>
>
> <http://www.hpi.de/>
> ------------------------------
> *Von:* Squeak-dev <squeak-dev-bounces at lists.squeakfoundation.org> im
> Auftrag von Nicolas Cellier <nicolas.cellier.aka.nice at gmail.com>
> *Gesendet:* Montag, 17. Februar 2020 17:16:04
> *An:* The general-purpose Squeak developers list
> *Betreff:* Re: [squeak-dev] The Trunk: Morphic-nice.1625.mcz
>
> Oups, sorry, this was for inbox!
> Let me repair that if I can...
>
> Le lun. 17 févr. 2020 à 17:07, <commits at source.squeak.org> a écrit :
>
>> Nicolas Cellier uploaded a new version of Morphic to project The Trunk:
>> http://source.squeak.org/trunk/Morphic-nice.1625.mcz
>>
>> ==================== Summary ====================
>>
>> Name: Morphic-nice.1625
>> Author: nice
>> Time: 17 February 2020, 5:06:10.606532 pm
>> UUID: 094e2566-ddfe-2340-8fab-2338d255e164
>> Ancestors: Morphic-mt.1624
>>
>> Free our mind from un-initialized LayoutFrame. There should not be any
>> such thing.
>>
>> Require Graphics-nice.425
>>
>> =============== Diff against Morphic-mt.1624 ===============
>>
>> Item was changed:
>>   ----- Method: BorderedMorph>>addMorph:fullFrame: (in category 'resize
>> handling') -----
>>   addMorph: aMorph fullFrame: aLayoutFrame
>>         "Add aMorph according to aLayoutFrame."
>>
>>         self cellGap > 0 ifTrue: [
>>                 | left right bottom top spacing |
>>
>>                 spacing := self cellGap.
>> +               left := aLayoutFrame leftOffset.
>> +               right := aLayoutFrame rightOffset.
>> -               left := aLayoutFrame leftOffset ifNil: [0].
>> -               right := aLayoutFrame rightOffset ifNil: [0].
>>
>> +               bottom := aLayoutFrame bottomOffset.
>> +               top := aLayoutFrame topOffset.
>> -               bottom := aLayoutFrame bottomOffset ifNil: [0].
>> -               top := aLayoutFrame topOffset ifNil: [0].
>>
>>                 "Add a spacing to the frame if it is not top or leftmost."
>>                 aLayoutFrame leftFraction = 0
>>                         ifFalse: [left := left + spacing]
>>                         ifTrue: [
>>                                 "Expect another, resizable widget besides
>> me if I have a fixed width."
>>                                 aLayoutFrame hasFixedWidth ifTrue: [right
>> := right - spacing]].
>>                 aLayoutFrame topFraction = 0
>>                         ifFalse: [top := top + spacing]
>>                         ifTrue: [
>>                                 "Expect another, resizable widget besides
>> me if I have a fixed height."
>>                                 aLayoutFrame hasFixedHeight ifTrue:
>> [bottom := bottom - spacing]].
>>
>>                 aLayoutFrame
>>                         topOffset: top;
>>                         bottomOffset: bottom;
>>                         leftOffset: left;
>>                         rightOffset: right].
>>
>>         super addMorph: aMorph fullFrame: aLayoutFrame.
>>
>>         self wantsPaneSplitters ifTrue: [self addPaneSplitters].!
>>
>> Item was changed:
>>   ----- Method: BorderedMorph>>addPaneHSplitterAtBottomOfRow: (in
>> category 'resize handling') -----
>>   addPaneHSplitterAtBottomOfRow: someMorphs
>>
>>         | targetY minX maxX splitter |
>>         targetY := someMorphs first layoutFrame bottomFraction.
>>
>>         minX := (someMorphs detectMin: [:each | each layoutFrame
>> leftFraction]) layoutFrame leftFraction.
>>         maxX := (someMorphs detectMax: [:each | each layoutFrame
>> rightFraction]) layoutFrame rightFraction.
>>
>>         splitter := ProportionalSplitterMorph new beSplitsTopAndBottom;
>> yourself.
>>         splitter layoutFrame: (LayoutFrame
>>                 fractions: (minX @ targetY corner: maxX @ targetY)
>> +               offsets: (someMorphs first layoutFrame leftOffset @ 0
>> +                       corner: someMorphs first layoutFrame rightOffset
>> @ AbstractResizerMorph gripThickness)).
>> -               offsets: ((someMorphs first layoutFrame leftOffset ifNil:
>> [0]) @ 0
>> -                       corner: (someMorphs first layoutFrame rightOffset
>> ifNil: [0]) @ AbstractResizerMorph gripThickness)).
>>
>>         self addMorphBack: (splitter position: self position).!
>>
>> Item was changed:
>>   ----- Method: BorderedMorph>>addPaneVSplitterAtRightOfColumn: (in
>> category 'resize handling') -----
>>   addPaneVSplitterAtRightOfColumn: someMorphs
>>
>>         | targetX minY maxY splitter |
>>         targetX := someMorphs first layoutFrame rightFraction.
>>
>>         minY := (someMorphs detectMin: [:each | each layoutFrame
>> topFraction]) layoutFrame topFraction.
>>         maxY := (someMorphs detectMax: [:each | each layoutFrame
>> bottomFraction]) layoutFrame bottomFraction.
>>
>>         splitter := ProportionalSplitterMorph new beSplitsLeftAndRight;
>> yourself.
>>         splitter layoutFrame: (LayoutFrame
>>                 fractions: (targetX @ minY corner: targetX @ maxY)
>> +               offsets: (0 @ (someMorphs first layoutFrame topOffset)
>> +                       corner: (AbstractResizerMorph gripThickness@
>> (someMorphs first layoutFrame bottomOffset)))).
>> -               offsets: (0 @ (someMorphs first layoutFrame topOffset
>> ifNil: [0])
>> -                       corner: (AbstractResizerMorph gripThickness@
>> (someMorphs first layoutFrame bottomOffset ifNil: [0])))).
>>
>>         self addMorphBack: (splitter position: self position).!
>>
>> Item was changed:
>>   ----- Method: BorderedMorph>>linkSubmorphsToSplitters (in category
>> 'resize handling') -----
>>   linkSubmorphsToSplitters
>>
>>         self splitters do: [:splitter |
>>                 splitter splitsTopAndBottom ifTrue: [
>>                         self submorphsDo: [:morph |
>>                                         ((morph ~= splitter
>>                                                 and: [morph layoutFrame
>> bottomFraction = splitter layoutFrame topFraction])
>>                                                 and: [morph layoutFrame
>> hasFixedHeight not
>> +                                                       or: [(morph
>> layoutFrame topOffset) < 0]])
>> -                                                       or: [(morph
>> layoutFrame topOffset ifNil: [0]) < 0]])
>>                                                                 ifTrue:
>> [splitter addLeftOrTop: morph].
>>                                         ((morph ~= splitter
>>                                                 and: [morph layoutFrame
>> topFraction = splitter layoutFrame bottomFraction])
>>                                                 and: [morph layoutFrame
>> hasFixedHeight not
>> +                                                       or: [(morph
>> layoutFrame bottomOffset) > 0]])
>> -                                                       or: [(morph
>> layoutFrame bottomOffset ifNil: [0]) > 0]])
>>                                                                 ifTrue:
>> [splitter addRightOrBottom: morph]]].
>>                 splitter splitsLeftAndRight ifTrue: [
>>                         self submorphsDo: [:morph |
>>                                         ((morph ~= splitter
>>                                                 and: [morph layoutFrame
>> rightFraction = splitter layoutFrame leftFraction])
>>                                                 and: [morph layoutFrame
>> hasFixedWidth not
>> +                                                       or: [(morph
>> layoutFrame leftOffset) < 0]])
>> -                                                       or: [(morph
>> layoutFrame leftOffset ifNil: [0]) < 0]])
>>                                                                 ifTrue:
>> [splitter addLeftOrTop: morph].
>>                                         ((morph ~= splitter
>>                                                 and: [morph layoutFrame
>> leftFraction = splitter layoutFrame rightFraction])
>>                                                 and: [morph layoutFrame
>> hasFixedWidth not
>> +                                                       or: [(morph
>> layoutFrame rightOffset) > 0]])
>> -                                                       or: [(morph
>> layoutFrame rightOffset ifNil: [0]) > 0]])
>>                                                                 ifTrue:
>> [splitter addRightOrBottom: morph]]]]!
>>
>> Item was changed:
>>   ----- Method: ProportionalSplitterMorph>>balanceOffsets (in category
>> 'events') -----
>>   balanceOffsets
>>
>>         | fdx fdy |
>>
>>         (self hasProperty: #fullDelta) ifFalse: [^ self].
>>
>>         fdx := (self valueOfProperty: #fullDelta) x.
>>         fdy := (self valueOfProperty: #fullDelta) y.
>>
>>         self layoutFrame hasFixedHeight ifTrue: [
>>                 | otop obot ctop cbot topf |
>>
>>                 otop := (owner submorphs detect: [:m |
>>                                         m layoutFrame topFraction isZero]
>> ifNone: [^ self]) in: [:tm |
>> +                                               tm top - (tm layoutFrame
>> topOffset)].
>> -                                               tm top - (tm layoutFrame
>> topOffset ifNil: [0])].
>>
>>                 obot := (owner submorphs detect: [:m |
>>                                         m layoutFrame bottomFraction = 1]
>> ifNone: [^ self]) in: [:tm |
>> +                                               tm bottom - (tm
>> layoutFrame bottomOffset)].
>> -                                               tm bottom - (tm
>> layoutFrame bottomOffset ifNil: [0])].
>>
>>                 ctop := (self layoutFrame topFraction * (obot - otop))
>> rounded
>> +                                       + otop + (self layoutFrame
>> topOffset).
>> -                                       + otop + (self layoutFrame
>> topOffset ifNil: [0]).
>>                 cbot := (self layoutFrame bottomFraction * (obot - otop))
>> rounded
>> +                                       + otop + (self layoutFrame
>> bottomOffset).
>> -                                       + otop + (self layoutFrame
>> bottomOffset ifNil: [0]).
>>
>>                 topf := self layoutFrame topFraction.
>>                 self layoutFrame topFraction:  ((ctop + cbot) * 0.5 -
>> otop) / (obot - otop) asFloat.
>>                 self layoutFrame bottomFraction: self layoutFrame
>> topFraction.
>>                 self layoutFrame topOffset: self layoutFrame topOffset -
>> fdy.
>>                 self layoutFrame bottomOffset: self layoutFrame
>> bottomOffset - fdy.
>>
>>                 (leftOrTop copy union: rightOrBottom) do: [:m |
>>                         (m layoutFrame topFraction closeTo: topf) ifTrue:
>> [
>>                                 m layoutFrame topFraction: self
>> layoutFrame topFraction.
>>                                 m layoutFrame topOffset: m layoutFrame
>> topOffset - fdy].
>>                         (m layoutFrame bottomFraction closeTo: topf)
>> ifTrue: [
>>                                 m layoutFrame bottomFraction: self
>> layoutFrame topFraction.
>>                                 m layoutFrame bottomOffset: m layoutFrame
>> bottomOffset - fdy]]] .
>>
>>         self layoutFrame hasFixedWidth ifTrue: [
>>                 | oleft oright cleft cright leftf |
>>
>>                 oleft := (owner submorphs detect: [:m |
>>                         m layoutFrame leftFraction isZero] ifNone: [^
>> self]) in: [:tm |
>> +                               tm left - (tm layoutFrame leftOffset)].
>> -                               tm left - (tm layoutFrame leftOffset
>> ifNil: [0])].
>>
>>                 oright := (owner submorphs detect: [:m |
>>                         m layoutFrame rightFraction = 1] ifNone: [^
>> self]) in: [:tm |
>> +                               tm right - (tm layoutFrame rightOffset)].
>> -                               tm right - (tm layoutFrame rightOffset
>> ifNil: [0])].
>>
>>                 cleft := (self layoutFrame leftFraction * (oright -
>> oleft)) rounded
>> +                                       + oleft + (self layoutFrame
>> leftOffset).
>> -                                       + oleft + (self layoutFrame
>> leftOffset ifNil: [0]).
>>                 cright := (self layoutFrame rightFraction * (oright -
>> oleft)) rounded
>> +                                       + oleft + (self layoutFrame
>> rightOffset).
>> -                                       + oleft + (self layoutFrame
>> rightOffset ifNil: [0]).
>>
>>                 leftf := self layoutFrame leftFraction.
>>                 self layoutFrame leftFraction: ((cleft + cright) * 0.5 -
>> oleft) / (oright - oleft) asFloat.
>>                 self layoutFrame rightFraction: self layoutFrame
>> leftFraction.
>>
>>
>>                 self layoutFrame leftOffset: self layoutFrame leftOffset
>> - fdx.
>>                 self layoutFrame rightOffset: self layoutFrame
>> rightOffset - fdx.
>>
>>                 (leftOrTop copy union: rightOrBottom) do: [:m |
>>                         (m layoutFrame leftFraction closeTo: leftf)
>> ifTrue: [
>>                                 m layoutFrame leftFraction: self
>> layoutFrame leftFraction.
>>                                 m layoutFrame leftOffset: m layoutFrame
>> leftOffset - fdx].
>>                         (m layoutFrame rightFraction closeTo: leftf)
>> ifTrue: [
>>                                 m layoutFrame rightFraction: self
>> layoutFrame leftFraction.
>>                                 m layoutFrame rightOffset:      m
>> layoutFrame rightOffset - fdx.]]] .
>>
>>         self removeProperty: #fullDelta.
>>         owner layoutChanged
>>   !
>>
>> Item was changed:
>>   ----- Method: ProportionalSplitterMorph>>repositionBy: (in category
>> 'events') -----
>>   repositionBy: delta
>>         | selfTop selfBottom selfLeft selfRight |
>>
>>         self setProperty: #fullDelta toValue: ((self valueOfProperty:
>> #fullDelta) ifNil: [0 at 0]) + delta.
>>
>>         leftOrTop do:
>>                 [ : each | | firstRight firstBottom firstLeft firstTop |
>> +               firstRight := each layoutFrame rightOffset.
>> +               firstBottom := each layoutFrame bottomOffset.
>> -               firstRight := each layoutFrame rightOffset ifNil: [ 0 ].
>> -               firstBottom := each layoutFrame bottomOffset ifNil: [ 0 ].
>>                 each layoutFrame rightOffset: firstRight + delta x.
>>                 each layoutFrame bottomOffset: firstBottom + delta y.
>>                 each layoutFrame hasFixedHeight ifTrue: [
>> +                       firstTop := each layoutFrame topOffset.
>> -                       firstTop := each layoutFrame topOffset ifNil: [ 0
>> ].
>>                         each layoutFrame topOffset: firstTop + delta y ].
>>                 each layoutFrame hasFixedWidth ifTrue: [
>> +                       firstLeft := each layoutFrame leftOffset.
>> -                       firstLeft := each layoutFrame leftOffset ifNil: [
>> 0 ].
>>                         each layoutFrame leftOffset: firstLeft + delta x.
>> ] ].
>>         rightOrBottom do:
>>                 [ : each | | secondLeft secondTop secondRight
>> secondBottom |
>> +               secondLeft := each layoutFrame leftOffset.
>> +               secondTop := each layoutFrame topOffset.
>> -               secondLeft := each layoutFrame leftOffset ifNil: [ 0 ].
>> -               secondTop := each layoutFrame topOffset ifNil: [ 0 ].
>>                 each layoutFrame leftOffset: secondLeft + delta x.
>>                 each layoutFrame topOffset: secondTop + delta y.
>>                 each layoutFrame hasFixedHeight ifTrue: [
>> +                       secondBottom := each layoutFrame bottomOffset.
>> -                       secondBottom := each layoutFrame bottomOffset
>> ifNil: [ 0 ].
>>                         each layoutFrame bottomOffset: secondBottom +
>> delta y. ].
>>                 each layoutFrame hasFixedWidth ifTrue: [
>> +                       secondRight := each layoutFrame rightOffset.
>> -                       secondRight := each layoutFrame rightOffset
>> ifNil: [ 0 ].
>>                         each layoutFrame rightOffset: secondRight + delta
>> x. ] ].
>>
>> +       selfTop := self layoutFrame topOffset.
>> +       selfBottom := self layoutFrame bottomOffset.
>> +       selfLeft := self layoutFrame leftOffset.
>> +       selfRight := self layoutFrame rightOffset.
>> -       selfTop := self layoutFrame topOffset ifNil: [ 0 ].
>> -       selfBottom := self layoutFrame bottomOffset ifNil: [ 0 ].
>> -       selfLeft := self layoutFrame leftOffset ifNil: [ 0 ].
>> -       selfRight := self layoutFrame rightOffset ifNil: [ 0 ].
>>         self layoutFrame
>>                  topOffset: selfTop + delta y ;
>>                  bottomOffset: selfBottom + delta y ;
>>                  leftOffset: selfLeft + delta x ;
>>                  rightOffset: selfRight + delta x.
>>         self owner layoutChanged.
>>         self movements removeFirst; add: (splitsTopAndBottom ifTrue: [
>> delta y sign ] ifFalse: [ delta x sign ])!
>>
>> Item was changed:
>>   ----- Method: SystemWindow>>convertAlignment (in category 'layout')
>> -----
>>   convertAlignment
>>         "Primarily Jesse Welton's code to convert old system windows to
>> ones with modern layout scheme"
>>
>>         self layoutPolicy: ProportionalLayout new.
>>         (paneMorphs isNil
>>                 or: [paneRects isNil or: [paneMorphs size ~= paneRects
>> size]])
>>                         ifFalse:
>>                                 [self addLabelArea.
>>                                 self putLabelItemsInLabelArea.
>>                                 self setFramesForLabelArea.
>>                                 paneMorphs with: paneRects
>>                                         do:
>>                                                 [:m :r |
>>                                                 | frame |
>>                                                 frame := LayoutFrame new.
>>                                                 frame
>>                                                         leftFraction: r
>> left;
>>                                                         rightFraction: r
>> right;
>>                                                         topFraction: r
>> top;
>>                                                         bottomFraction: r
>> bottom.
>>                                                 m layoutFrame: frame.
>>                                                 m
>>                                                         hResizing:
>> #spaceFill;
>>                                                         vResizing:
>> #spaceFill]].
>>         labelArea isNil
>>                 ifTrue:
>>                         [self addLabelArea.
>>                         self putLabelItemsInLabelArea.
>>                         self setFramesForLabelArea.
>>                         paneMorphs ifNotNil:
>>                                         [paneMorphs do:
>>                                                         [:m |
>>                                                         | frame |
>>                                                         frame := m
>> layoutFrame ifNil: [LayoutFrame new].
>> +                                                       frame topOffset:
>> (frame topOffset) - self labelHeight.
>> -                                                       frame topOffset:
>> (frame topOffset ifNil: [0]) - self labelHeight.
>>                                                         frame
>> bottomFraction ~= 1.0
>>                                                                 ifTrue:
>> +
>>  [frame bottomOffset: (frame bottomOffset) - self labelHeight]]]].
>> -
>>  [frame bottomOffset: (frame bottomOffset ifNil: [0]) - self
>> labelHeight]]]].
>>         label ifNotNil:
>>                         [| frame |
>>                         frame := LayoutFrame new.
>>                         frame
>>                                 leftFraction: 0.5;
>>                                 topFraction: 0;
>>                                 leftOffset: label width negated // 2.
>>                         label layoutFrame: frame].
>>         collapseBox ifNotNil:
>>                         [| frame |
>>                         frame := LayoutFrame new.
>>                         frame
>>                                 rightFraction: 1;
>>                                 topFraction: 0;
>>                                 rightOffset: -1;
>>                                 topOffset: 1.
>>                         collapseBox layoutFrame: frame].
>>         stripes ifNotNil:
>>                         [| frame |
>>                         frame := LayoutFrame new.
>>                         frame
>>                                 leftFraction: 0;
>>                                 topFraction: 0;
>>                                 rightFraction: 1;
>>                                 leftOffset: 1;
>>                                 topOffset: 1;
>>                                 rightOffset: -1.
>>                         stripes first layoutFrame: frame.
>>                         stripes first height: self labelHeight - 2.
>>                         stripes first hResizing: #spaceFill.
>>                         frame := LayoutFrame new.
>>                         frame
>>                                 leftFraction: 0;
>>                                 topFraction: 0;
>>                                 rightFraction: 1;
>>                                 leftOffset: 3;
>>                                 topOffset: 3;
>>                                 rightOffset: -3.
>>                         stripes last layoutFrame: frame.
>>                         stripes last height: self labelHeight - 6.
>>                         stripes last hResizing: #spaceFill].
>>         menuBox ifNotNil:
>>                         [| frame |
>>                         frame := LayoutFrame new.
>>                         frame
>>                                 leftFraction: 0;
>>                                 leftOffset: 19;
>>                                 topFraction: 0;
>>                                 topOffset: 1.
>>                         menuBox layoutFrame: frame].
>>         closeBox ifNotNil:
>>                         [| frame |
>>                         frame := LayoutFrame new.
>>                         frame
>>                                 leftFraction: 0;
>>                                 leftOffset: 4;
>>                                 topFraction: 0;
>>                                 topOffset: 1.
>>                         closeBox layoutFrame: frame]!
>>
>> Item was changed:
>>   ----- Method: SystemWindow>>setPaneRectsFromBounds (in category
>> 'geometry') -----
>>   setPaneRectsFromBounds
>>         "Reset proportional specs from actual bounds, eg, after reframing
>> panes"
>>         | layoutBounds |
>>         layoutBounds := self layoutBounds.
>>         paneMorphs do:[:m| | box left bottom top frame right |
>>                 frame := m layoutFrame.
>>                 box := m bounds.
>>                 frame ifNotNil:[
>> +                       left := box left - layoutBounds left - frame
>> leftOffset.
>> +                       right := box right - layoutBounds left - frame
>> rightOffset.
>> +                       top := box top - layoutBounds top - frame
>> topOffset.
>> +                       bottom := box bottom - layoutBounds top - frame
>> bottomOffset.
>> -                       left := box left - layoutBounds left - (frame
>> leftOffset ifNil:[0]).
>> -                       right := box right - layoutBounds left - (frame
>> rightOffset ifNil:[0]).
>> -                       top := box top - layoutBounds top - (frame
>> topOffset ifNil:[0]).
>> -                       bottom := box bottom - layoutBounds top - (frame
>> bottomOffset ifNil:[0]).
>>                         frame leftFraction: (left / layoutBounds width
>> asFloat).
>>                         frame rightFraction: (right / layoutBounds width
>> asFloat).
>>                         frame topFraction: (top / layoutBounds height
>> asFloat).
>>                         frame bottomFraction: (bottom / layoutBounds
>> height asFloat).
>>                 ].
>>         ].!
>>
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20200217/d7916a33/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: pastedImage.png
Type: image/png
Size: 46687 bytes
Desc: not available
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20200217/d7916a33/attachment-0001.png>


More information about the Squeak-dev mailing list