[squeak-dev] Morph doesn't paint on every tick?

Louis LaBrunda Lou at Keystone-Software.com
Wed Dec 27 03:13:45 UTC 2017


Hi Bob,

Thanks for the answer.  I will give:

	self changed.

a try tomorrow.  #stepTime returns 1000.  The code is called every second.  I have checked with
messages to the transcript.  The method #displayDateTimeHeader is called every second.  It
clears the area.  Most of the text is repeated until the minute changes but the seconds change
with every call.  I don't understand why it doesn't redraw.  I may be breaking some rule with
how the morph is defined.  If so, I'm not sure what it is.  If sending self changed doesn't
work, maybe I will post a fileout of the whole morph, if you would be kind enough to take a
look.

Lou


On Tue, 26 Dec 2017 20:00:56 -0500, Bob Arning <arning315 at comcast.net> wrote:

>Morphs redraw when something has changed -- not much point in wasting 
>cycles if everything is the same. So somewhere, like the Calendar... or 
>an inner morph that only contains the time needs 2 methods like:
>
>
>step
>
>     self changed
>
>stepTime
>
>     ^1000    "or less"
>
>
>On 12/26/17 7:22 PM, Louis LaBrunda wrote:
>> Hi All,
>>
>> I'm making a CalendarDisplayMorph.  The code below is called every second.  I'm sure it is
>> being called every second.  But the seconds don't change every second.  It does change if I
>> click on the morph and select or move it or something.
>>
>> I'm testing it with this:
>>
>> 	(TransformationMorph new asFlexOf: CalendarDisplayMorph new) openInWorld.
>>
>> What am I missing?
>>
>> Lou
>>
>> displayDateTimeHeader
>> 	"Display the date and time in the header."
>> 	| font rect canvas fWidth weekDay dateString timeString |
>>
>> 	font := TextStyle default fontOfSize: 96.
>> 	fWidth := self extent x.
>>
>> 	canvas := destForm getCanvas.
>> 	rect := Rectangle origin: 0 at 0 extent: fWidth at headerHeight.
>> 	canvas frameAndFillRectangle: rect fillColor: self cellColor borderWidth: 2 borderColor: self
>> borderColor.
>> 	currentDate := DateAndTime now.
>>
>> 	weekDay := currentDate dayOfWeekName asString.
>> 	self drawString: weekDay centeredIn: rect vOffset: 5 withFont: font color: self textColor.
>>
>> 	dateString := currentDate monthName, ' ', currentDate dayOfMonth printString, ', ',
>> currentDate year printString.
>> 	self drawString: dateString centeredIn: rect vOffset: 35 withFont: font color: self
>> textColor.
>>
>> 	timeString := String streamContents: [:aStream | currentDate asTime print24: false
>> showSeconds: true on: aStream].
>> 	self drawString: timeString centeredIn: rect vOffset: 65 withFont: font color: self
>> textColor.
-- 
Louis LaBrunda
Keystone Software Corp.
SkypeMe callto://PhotonDemon



More information about the Squeak-dev mailing list