[squeak-dev] Re: straaannnnge code in SystemWindow>>addMorph:fullFrame:

Eliot Miranda eliot.miranda at gmail.com
Thu Jun 13 00:31:39 UTC 2013


Further, the current SystemWindow>>addMorph:fullFrame: assumes thick
borders between components, for pane splitters.  There used to be an
accessor on SystemWindow, allowPaneSplitters:, that could be used to
discard pane splitters and their thick borders, but this was ditched.

So if I want a window containing lots of morphs with no splitters and no
thick borders how do I do it?

a) Should I use a container morph and add this to the SystemWindow?

b) should I add an override to SystemWindow that does what
addMorph:fullFrame: (or addMorph:frame:) does without adding the thick
borders?

c) should I add back the allowPaneSplitters[:] accessor and modify
SystemWindow>>addMorph:fullFrame: to take account of allowPaneSplitters ==
false?

a) seems the right approach, but when I use either a Morph or a
BorderedMorph as my container I don't get things laid out correctly in that
morph.  Is there a standard container morph that does layout correctly?  If
so, what is it?

c) is easy to do, but folks have to maintain it (it's no more than a guard
around all the frae manipulation in addMorph:fullFrame:).


On Wed, Jun 12, 2013 at 3:23 PM, Eliot Miranda <eliot.miranda at gmail.com>wrote:

>
>
> On Wed, Jun 12, 2013 at 2:39 PM, Eliot Miranda <eliot.miranda at gmail.com>wrote:
>
>> Hi All,
>>
>>     in SystemWindow>>addMorph:fullFrame: towards the bottom are the lines:
>>
>> aMorph adoptPaneColor: self paneColor.
>>  aMorph borderWidth: 1; borderColor: Color lightGray; color: Color white.
>>
>> I'm adding a UpdatingThreePhaseButtonMorph checkBox to my window so, via
>> ImageMorph>>colors:
>>
>> ImageMorph>>color: aColor
>>         super color: aColor.
>>         (image depth = 1 and: [aColor isColor]) ifTrue: [
>>                 image colors: {Color transparent. aColor}.
>>                 self changed]
>>
>> this has the effect of completely smashing the checkBox's normal image,
>> and setting to white ScriptingSystem formAtKey: #CheckBoxOn, which is what
>> the checkBox uses as its default image.
>>
>> What business does SystemWindow have of smashing the colour of any morph
>> added to it?  Surely this is bogus, no?
>>
>
> I see the regression.  Back in 3.9 the method read
>
> (aMorph isKindOf: ImageMorph) ifFalse:[
> aMorph adoptPaneColor: self paneColor.
>  aMorph borderWidth: 2; borderColor: #inset; color: Color transparent]
>
> Unless anyone objects I'll put back this guard.  it seems obviously
> correct (or rather, obviously less broken; the method also includes this
> priceless gem:
>  (aMorph class name = #BrowserCommentTextMorph) ifTrue:
> [aLayoutFrame rightOffset: windowBorderWidth negated.
>  aLayoutFrame leftOffset: windowBorderWidth.
> aLayoutFrame bottomOffset: windowBorderWidth negated.
>  aLayoutFrame topOffset: (windowBorderWidth negated) + 4].
> ).
>
> --
>> best,
>> Eliot
>>
>
>
>
> --
> best,
> Eliot
>



-- 
best,
Eliot
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20130612/3f3fdf96/attachment.htm


More information about the Squeak-dev mailing list