About https://pharo.fogbugz.com/f/cases/2489
Hi guys We finished (we hope) a really long effort to be such that we cannot have "negative" rectangles. It implied fixing around 250 users of layoutFrame and a lot more. We introduced point:point: to create rectangles. We improved many little points. We deeply tested the image but we never know it may happen that a layout policy produce strange rectangles again. If you find some glitches we will fix them. Stef and Igor
Pharo 40150 after typing two characters in a Workspace: setOrigin:corner: referese to the undefined Object: "DegeneratedRectangle" UndefinedObject(Object)>>doesNotUnderstand: #signal CharacterBlock(Rectangle)>>setOrigin:corner: CharacterBlock>>stringIndex:text:topLeft:extent: CharacterBlockScanner>>characterBlockAtPoint:index:in: Paragraph>>characterBlockAtPoint: Paragraph>>buildSelectionBlocksFrom:to: Paragraph>>displayExtraSelectionOn: TextMorphForEditView>>drawOn: FormCanvas(Canvas)>>draw: FormCanvas(Canvas)>>drawMorph: [ (aCanvas isVisible: self bounds) ifTrue: [ aCanvas drawMorph: self ]. self drawSubmorphsOn: aCanvas. self drawDropHighlightOn: aCanvas. self drawMouseDownHighlightOn: aCanvas ] in [ "Note: At some point we should generalize this into some sort of multi-canvas so that we can cross-optimize some drawing operations." "Pass 1: Draw eventual drop-shadow" self hasDropShadow ifTrue: [ self drawDropShadowOn: aCanvas ]. "Pass 2: Draw receiver itself" aCanvas roundCornersOf: self during: [ (aCanvas isVisible: self bounds) ifTrue: [ aCanvas drawMorph: self ]. self drawSubmorphsOn: aCanvas. self drawDropHighlightOn: aCanvas. self drawMouseDownHighlightOn: aCanvas ] ] in TextMorphForEditView(Morph)>>fullDrawOn: in Block: [ ... FormCanvas>>roundCornersOf:in:during: FormCanvas(Canvas)>>roundCornersOf:during: [ "Note: At some point we should generalize this into some sort of multi-canvas so that we can cross-optimize some drawing operations." "Pass 1: Draw eventual drop-shadow" self hasDropShadow ifTrue: [ self drawDropShadowOn: aCanvas ]. "Pass 2: Draw receiver itself" aCanvas roundCornersOf: self during: [ (aCanvas isVisible: self bounds) ifTrue: [ aCanvas drawMorph: self ]. self drawSubmorphsOn: aCanvas. self drawDropHighlightOn: aCanvas. self drawMouseDownHighlightOn: aCanvas ] ] in TextMorphForEditView(Morph)>>fullDrawOn: in Block: [ ... BlockClosure>>on:do: TextMorphForEditView(Morph)>>fullDrawOn: FormCanvas(Canvas)>>fullDraw: FormCanvas(Canvas)>>fullDrawMorph: [ :m | myCanvas fullDrawMorph: m ] in [ :myCanvas | (self angle ~= 0.0 or: [ self scale ~= 1.0 ]) ifTrue: [ FreeTypeSettings current forceNonSubPixelDuring: [ submorphs reverseDo: [ :m | myCanvas fullDrawMorph: m ] ] ] ifFalse: [ submorphs reverseDo: [ :m | myCanvas fullDrawMorph: m ] ] ] in TransformMorph>>drawSubmorphsOn: in Block: [ :m | myCanvas fullDrawMorph: m ] Array(SequenceableCollection)>>reverseDo: [ :myCanvas | (self angle ~= 0.0 or: [ self scale ~= 1.0 ]) ifTrue: [ FreeTypeSettings current forceNonSubPixelDuring: [ submorphs reverseDo: [ :m | myCanvas fullDrawMorph: m ] ] ] ifFalse: [ submorphs reverseDo: [ :m | myCanvas fullDrawMorph: m ] ] ] in TransformMorph>>drawSubmorphsOn: in Block: [ :myCanvas | ... FormCanvas>>transformBy:clippingTo:during:smoothing: TransformMorph>>drawSubmorphsOn: [ (aCanvas isVisible: self bounds) ifTrue: [ aCanvas drawMorph: self ]. self drawSubmorphsOn: aCanvas. self drawDropHighlightOn: aCanvas. self drawMouseDownHighlightOn: aCanvas ] in [ "Note: At some point we should generalize this into some sort of multi-canvas so that we can cross-optimize some drawing operations." "Pass 1: Draw eventual drop-shadow" self hasDropShadow ifTrue: [ self drawDropShadowOn: aCanvas ]. "Pass 2: Draw receiver itself" aCanvas roundCornersOf: self during: [ (aCanvas isVisible: self bounds) ifTrue: [ aCanvas drawMorph: self ]. self drawSubmorphsOn: aCanvas. self drawDropHighlightOn: aCanvas. self drawMouseDownHighlightOn: aCanvas ] ] in TransformMorph(Morph)>>fullDrawOn: in Block: [ ... FormCanvas>>roundCornersOf:in:during: FormCanvas(Canvas)>>roundCornersOf:during: [ "Note: At some point we should generalize this into some sort of multi-canvas so that we can cross-optimize some drawing operations." "Pass 1: Draw eventual drop-shadow" self hasDropShadow ifTrue: [ self drawDropShadowOn: aCanvas ]. "Pass 2: Draw receiver itself" aCanvas roundCornersOf: self during: [ (aCanvas isVisible: self bounds) ifTrue: [ aCanvas drawMorph: self ]. self drawSubmorphsOn: aCanvas. self drawDropHighlightOn: aCanvas. self drawMouseDownHighlightOn: aCanvas ] ] in TransformMorph(Morph)>>fullDrawOn: in Block: [ ... BlockClosure>>on:do: TransformMorph(Morph)>>fullDrawOn: FormCanvas(Canvas)>>fullDraw: 2014-08-03 18:12 GMT+02:00 stepharo <stepharo@free.fr>:
Hi guys
We finished (we hope) a really long effort to be such that we cannot have "negative" rectangles. It implied fixing around 250 users of layoutFrame and a lot more.
We introduced point:point: to create rectangles. We improved many little points.
We deeply tested the image but we never know it may happen that a layout policy produce strange rectangles again. If you find some glitches we will fix them.
Stef and Igor
Thanks this is strange because we used the modified system. I see some problems with MC and changes tracking recently and this is annoying. Because this reference should not be there. Now I do not know how to rollback a change so the system will stay broken until I find and I do not have the time today. Stef
Pharo 40150 after typing two characters in a Workspace: setOrigin:corner: referese to the undefined Object: "DegeneratedRectangle"
UndefinedObject(Object)>>doesNotUnderstand: #signal CharacterBlock(Rectangle)>>setOrigin:corner: CharacterBlock>>stringIndex:text:topLeft:extent: CharacterBlockScanner>>characterBlockAtPoint:index:in: Paragraph>>characterBlockAtPoint: Paragraph>>buildSelectionBlocksFrom:to: Paragraph>>displayExtraSelectionOn: TextMorphForEditView>>drawOn: FormCanvas(Canvas)>>draw: FormCanvas(Canvas)>>drawMorph: [ (aCanvas isVisible: self bounds) ifTrue: [ aCanvas drawMorph: self ]. self drawSubmorphsOn: aCanvas. self drawDropHighlightOn: aCanvas. self drawMouseDownHighlightOn: aCanvas ] in [ "Note: At some point we should generalize this into some sort of multi-canvas so that we can cross-optimize some drawing operations." "Pass 1: Draw eventual drop-shadow" self hasDropShadow ifTrue: [ self drawDropShadowOn: aCanvas ]. "Pass 2: Draw receiver itself" aCanvas roundCornersOf: self during: [ (aCanvas isVisible: self bounds) ifTrue: [ aCanvas drawMorph: self ]. self drawSubmorphsOn: aCanvas. self drawDropHighlightOn: aCanvas. self drawMouseDownHighlightOn: aCanvas ] ] in TextMorphForEditView(Morph)>>fullDrawOn: in Block: [ ... FormCanvas>>roundCornersOf:in:during: FormCanvas(Canvas)>>roundCornersOf:during: [ "Note: At some point we should generalize this into some sort of multi-canvas so that we can cross-optimize some drawing operations." "Pass 1: Draw eventual drop-shadow" self hasDropShadow ifTrue: [ self drawDropShadowOn: aCanvas ]. "Pass 2: Draw receiver itself" aCanvas roundCornersOf: self during: [ (aCanvas isVisible: self bounds) ifTrue: [ aCanvas drawMorph: self ]. self drawSubmorphsOn: aCanvas. self drawDropHighlightOn: aCanvas. self drawMouseDownHighlightOn: aCanvas ] ] in TextMorphForEditView(Morph)>>fullDrawOn: in Block: [ ... BlockClosure>>on:do: TextMorphForEditView(Morph)>>fullDrawOn: FormCanvas(Canvas)>>fullDraw: FormCanvas(Canvas)>>fullDrawMorph: [ :m | myCanvas fullDrawMorph: m ] in [ :myCanvas | (self angle ~= 0.0 or: [ self scale ~= 1.0 ]) ifTrue: [ FreeTypeSettings current forceNonSubPixelDuring: [ submorphs reverseDo: [ :m | myCanvas fullDrawMorph: m ] ] ] ifFalse: [ submorphs reverseDo: [ :m | myCanvas fullDrawMorph: m ] ] ] in TransformMorph>>drawSubmorphsOn: in Block: [ :m | myCanvas fullDrawMorph: m ] Array(SequenceableCollection)>>reverseDo: [ :myCanvas | (self angle ~= 0.0 or: [ self scale ~= 1.0 ]) ifTrue: [ FreeTypeSettings current forceNonSubPixelDuring: [ submorphs reverseDo: [ :m | myCanvas fullDrawMorph: m ] ] ] ifFalse: [ submorphs reverseDo: [ :m | myCanvas fullDrawMorph: m ] ] ] in TransformMorph>>drawSubmorphsOn: in Block: [ :myCanvas | ... FormCanvas>>transformBy:clippingTo:during:smoothing: TransformMorph>>drawSubmorphsOn: [ (aCanvas isVisible: self bounds) ifTrue: [ aCanvas drawMorph: self ]. self drawSubmorphsOn: aCanvas. self drawDropHighlightOn: aCanvas. self drawMouseDownHighlightOn: aCanvas ] in [ "Note: At some point we should generalize this into some sort of multi-canvas so that we can cross-optimize some drawing operations." "Pass 1: Draw eventual drop-shadow" self hasDropShadow ifTrue: [ self drawDropShadowOn: aCanvas ]. "Pass 2: Draw receiver itself" aCanvas roundCornersOf: self during: [ (aCanvas isVisible: self bounds) ifTrue: [ aCanvas drawMorph: self ]. self drawSubmorphsOn: aCanvas. self drawDropHighlightOn: aCanvas. self drawMouseDownHighlightOn: aCanvas ] ] in TransformMorph(Morph)>>fullDrawOn: in Block: [ ... FormCanvas>>roundCornersOf:in:during: FormCanvas(Canvas)>>roundCornersOf:during: [ "Note: At some point we should generalize this into some sort of multi-canvas so that we can cross-optimize some drawing operations." "Pass 1: Draw eventual drop-shadow" self hasDropShadow ifTrue: [ self drawDropShadowOn: aCanvas ]. "Pass 2: Draw receiver itself" aCanvas roundCornersOf: self during: [ (aCanvas isVisible: self bounds) ifTrue: [ aCanvas drawMorph: self ]. self drawSubmorphsOn: aCanvas. self drawDropHighlightOn: aCanvas. self drawMouseDownHighlightOn: aCanvas ] ] in TransformMorph(Morph)>>fullDrawOn: in Block: [ ... BlockClosure>>on:do: TransformMorph(Morph)>>fullDrawOn: FormCanvas(Canvas)>>fullDraw:
2014-08-03 18:12 GMT+02:00 stepharo <stepharo@free.fr <mailto:stepharo@free.fr>>:
Hi guys
We finished (we hope) a really long effort to be such that we cannot have "negative" rectangles. It implied fixing around 250 users of layoutFrame and a lot more.
We introduced point:point: to create rectangles. We improved many little points.
We deeply tested the image but we never know it may happen that a layout policy produce strange rectangles again. If you find some glitches we will fix them.
Stef and Igor
So apparently if I introduce the missing exception (that we should have removed) the system works. I will try to do a new integration and after we will fix the problem with igor. If I cannot integrate them I will see tomorrow with esteban. Stef
Ok so I added the missing exception and we can use the system again.... but the fix is just a patch. I will try to get some time this week to fix it but this is in character scanner...... stringIndex: anInteger text: aText topLeft: topLeft extent: extent stringIndex := anInteger. text := aText. super setOrigin: topLeft ------> (11@0) corner: topLeft ------>(11@0) + extent------> (-1@21) leads to a problem Stef On 4/8/14 09:54, stepharo wrote:
So apparently if I introduce the missing exception (that we should have removed) the system works. I will try to do a new integration and after we will fix the problem with igor. If I cannot integrate them I will see tomorrow with esteban.
Stef
participants (2)
-
Nicolai Hess -
stepharo