Package Pane Browser Broken

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
24 messages Options
12
Reply | Threaded
Open this post in threaded view
|

Re: Change in LazyListMorph breaks MulticolumnLazyListMorph.

Chris Muller-3
Perhaps neither.  One thing that would help is to tell us a way to
reproduce the issue you're seeing -- as I cannot see any way
McLLM>>drawOn: could die with non-indexable -- perhaps you meant
setColumnWidthsFor: died?

In any case, MulticolumnLazyListMorph is not being used inside the
image.  So lets look to fixing it rather than rolling back to
requiring all Strings in all lists.

 - Chris


On Tue, Dec 13, 2011 at 4:35 PM, Christopher Oliver
<[hidden email]> wrote:

> Change Morphic-cmm.523 as merged in Morphic-ul.524 breaks MulticolumnLazyListMorph.  The
> rows for a McLLM are arrays of strings, and because LazyListMorph, as it is now, converts
> these to strings, McLLM>>drawOn: dies with non-indexable.  I.e. first index gets the
> character $# (the start of an array literal), and then deeper, we try to index it again.
> Ugh!  Should McLLM just do its own thing, and not subclass LLM, or should we roll back
> Muller's change on LLM?
>
> Thoughts?
>
> --
> Christopher Oliver <[hidden email]>
>

Reply | Threaded
Open this post in threaded view
|

Re: Change in LazyListMorph breaks MulticolumnLazyListMorph.

Christopher Oliver
On Thu, 15 Dec 2011 10:23:16 -0600
Chris Muller <[hidden email]> wrote:

> Perhaps neither.  One thing that would help is to tell us a way to
> reproduce the issue you're seeing -- as I cannot see any way
> McLLM>>drawOn: could die with non-indexable -- perhaps you meant
> setColumnWidthsFor: died?

No.  I'm seeing a red morph failure with the setups in eIRC.  The McLLM is given an
array of strings.  Your asString converts with to a single string, and so how do you get
the per-column string to display?  When you try to get an entry to display, you get the
nth character of the result of asString instead.

--
Christopher Oliver <[hidden email]>

Reply | Threaded
Open this post in threaded view
|

Re: Change in LazyListMorph breaks MulticolumnLazyListMorph.

Chris Muller-3
Hmm, I guess I'm still left with no clue how to see the problem you saw...   :(

On Thu, Dec 15, 2011 at 11:26 AM, Christopher Oliver
<[hidden email]> wrote:

> On Thu, 15 Dec 2011 10:23:16 -0600
> Chris Muller <[hidden email]> wrote:
>
>> Perhaps neither.  One thing that would help is to tell us a way to
>> reproduce the issue you're seeing -- as I cannot see any way
>> McLLM>>drawOn: could die with non-indexable -- perhaps you meant
>> setColumnWidthsFor: died?
>
> No.  I'm seeing a red morph failure with the setups in eIRC.  The McLLM is given an
> array of strings.  Your asString converts with to a single string, and so how do you get
> the per-column string to display?  When you try to get an entry to display, you get the
> nth character of the result of asString instead.
>
> --
> Christopher Oliver <[hidden email]>
>

Reply | Threaded
Open this post in threaded view
|

Re: Change in LazyListMorph breaks MulticolumnLazyListMorph.

Christopher Oliver
On Thu, 15 Dec 2011 13:39:13 -0600
Chris Muller <[hidden email]> wrote:

> Hmm, I guess I'm still left with no clue how to see the problem you saw...   :(

Ok.  Once more with feeling.

>From the eIRC walkback:

FormCanvas sends MulticolumnLazyListMorph a drawOn:

This is handled via superclass LazyListMorph: which send itself
        self display: (self item: row) asStringOrText atRow: row on: aCanvas.

MulticolumnLazyIRCListMorph gets the display:atRow:on:, but there is no longer a way to
distinguish the individuals column items because it's all one string now.  McLILM blindly
sends the ByteString a with:do: hoping to iterate over the column items, but instead
iterates over characters.  BTW: this method is a copy of the parent method in McLLM, but
that shouldn't be of significance; there is no super send, so this is merely redundant.

Do you see the difficulty now?  McLLM and its subclasses expect a collection of things
to display in the columns to method display:atRow:on:, and LLM's flattened this collection
to a single string destroying necessary information.  Not good!

--
Christopher Oliver <[hidden email]>

12