The Puzzle Page

Bob Arning arning at charm.net
Fri Dec 15 13:05:55 UTC 2000


On Thu, 14 Dec 2000 23:42:18 -0800 "Raab, Andreas" <Andreas.Raab at disney.com> wrote:
>> 4.  Open one morphic project within another.  Enter the sub 
>> project.  Then return to the previous project.  Notice that 
>> on each transition the project entry code painstakingly 
>> paints the entire screen for the new project, and then 
>> repaints it once the project is entered.
>
>I was unable to reproduce this. I found that only flap tabs and the top
>window are redrawn when the project transition is completed and that seems
>okay to me. You might have been spoiled by using global flaps - since these
>get added by a project transition chances are that the regions get merged
>(this may happen in response to the activation of the new top window which
>will invalidate a possibly large portion of the display) which may then look
>like a full screen redraw.

Another possible candidate for excessive drawing is

SketchMorph(Morph)>>invalidRect:from:
SketchMorph(Morph)>>invalidRect:
SketchMorph(Morph)>>changed
SketchMorph>>layoutChanged
SketchMorph>>rotatedForm
SketchMorph>>drawOn:
FormCanvas(Canvas)>>draw:
FormCanvas(Canvas)>>drawMorph:
[] in SketchMorph(Morph)>>fullDrawOn:
FormCanvas>>roundCornersOf:during:
SketchMorph(Morph)>>fullDrawOn:
FormCanvas(Canvas)>>fullDraw:
FormCanvas(Canvas)>>fullDrawMorph:
[] in IconicButton(Morph)>>drawSubmorphsOn:
Array(SequenceableCollection)>>reverseDo:
[] in IconicButton(Morph)>>drawSubmorphsOn:
IconicButton(Morph)>>drawSubmorphsOn:
[] in IconicButton(Morph)>>fullDrawOn:
FormCanvas>>roundCornersOf:during:
IconicButton(Morph)>>fullDrawOn:
FormCanvas(Canvas)>>fullDraw:
FormCanvas(Canvas)>>fullDrawMorph:
[] in SystemWindow(Morph)>>drawSubmorphsOn:
Array(SequenceableCollection)>>reverseDo:
[] in SystemWindow(Morph)>>drawSubmorphsOn:
SystemWindow(Morph)>>drawSubmorphsOn:
[] in SystemWindow(Morph)>>fullDrawOn:
FormCanvas>>roundCornersOf:during:
SystemWindow(Morph)>>fullDrawOn:
FormCanvas(Canvas)>>fullDraw:
FormCanvas(Canvas)>>fullDrawMorph:
[] in WorldState>>drawWorld:submorphs:invalidAreasOn:
Array(SequenceableCollection)>>do:
WorldState>>drawWorld:submorphs:invalidAreasOn:
WorldState>>displayWorld:submorphs:
PasteUpMorph>>privateOuterDisplayWorld
PasteUpMorph>>displayWorld
[] in WorldState>>displayWorldSafely:
BlockContext>>on:do:
BlockContext>>ifError:
WorldState>>displayWorldSafely:
PasteUpMorph>>displayWorldSafely
PasteUpMorph>>install
Project>>enter:revert:saveForRevert:
Project class>>returnToPreviousProject

If you set the time that the debugging rectangles appear on the screen to several hundred ms and if you have a lot of SystemWindows, then you will notice the little window menu buttons flashing one by one. If you have enough of these in the right places on the screen, then you can get a fairly large merged rectangle.

Also, notice the reporting of damage during drawing. While this seems to work, it may be unnecessary.

Cheers,
Bob





More information about the Squeak-dev mailing list