Hi Alistair,

I do not have access to a computer right now but indeed this is related to
GTInspector moving to fast table. You should be able to temporarily solve
this be defining a custom Items presentation in the Matrix class that in
the display block transforms the martix to an ordered collection.

We'll integrate a fix at the beginning of next week to solve this in the
inspector without requiring a new presentation.

Cheers,
Andeei

On Feb 25, 2017 12:10 PM, "Alistair Grant" <akgrant0...@gmail.com> wrote:

Hi All,

I've just upgrade from Pharo 60395 to 60411 and am now unable to
inspect instances of Matrix.

I think I read somewhere that the GTInspector is now using fast tables,
and am guessing that it is this change that is causing the problem.

I've included code below to reproduce the problem and a stack trace.
The sample code creates a 3 x 3 matrix.

FTTableContainerMorph>>updateExposedRows suggests that the matrix is
being treated as a one-dimensional collection:

self owner numberOfRows  => 9 "expected 3"
self owner numberOfColumns  => 1 "expected 3"

I'll keep investigating, but if someone more familiar can point me in
the right direction, any hints will be appreciated.

Thanks,
Alistair

Pharo 6.0
Latest update: #60411
OS: 4.9.8-1-ARCH



| m |

m := Matrix rows: 3 columns: 3.
1 to: 3 do: [ :i |
1 to: 3 do: [ :j |
m at: i at: j put: 'C', i printString, j printString ] ].
m inspect



Matrix(Object)>>error:
Matrix(Object)>>errorNotIndexable
Matrix(Object)>>at:
GLMFastListDataSource(FTSimpleDataSource)>>elementAt:
GLMFastListDataSource>>cellColumn:row:
FTTableContainerMorph>>updateExposedRows
FTTableMorph>>resetPosition
FTTableMorph>>resizeAllSubviews
FTTableMorph>>extent:
FTTableMorph(Morph)>>bounds:
FTTableMorph(Morph)>>layoutInBounds:
FTTableMorph(Morph)>>layoutProportionallyIn:
[ :m | m layoutProportionallyIn: newBounds ] in
ProportionalLayout>>layout:in: in Block: [ :m | m
layoutProportionallyIn: newBounds ]
Array(SequenceableCollection)>>do:
GLMPanelMorph(Morph)>>submorphsDo:
ProportionalLayout>>layout:in:
GLMPanelMorph(Morph)>>doLayoutIn:
[ self doLayoutIn: self layoutBounds ] in
GLMPanelMorph(Morph)>>computeFullBounds in Block: [ self doLayoutIn:
self layoutBounds ]
BlockClosure>>on:do:
GLMPanelMorph(Morph)>>computeFullBounds
GLMPanelMorph(Morph)>>fullBounds
[ :m |
| subBox |
m visible
ifTrue: [ subBox := m fullBounds.
box
ifNil: [ box := subBox copy ]
ifNotNil: [ box := box quickMerge: subBox ] ] ] in
GLMPanelMorph(Morph)>>submorphBounds in Block: [ :m | ...
Array(SequenceableCollection)>>do:
GLMPanelMorph(Morph)>>submorphBounds
GLMPanelMorph(Morph)>>privateFullBounds
GLMPanelMorph(Morph)>>doLayoutIn:
[ self doLayoutIn: self layoutBounds ] in
GLMPanelMorph(Morph)>>computeFullBounds in Block: [ self doLayoutIn:
self layoutBounds ]
BlockClosure>>on:do:
GLMPanelMorph(Morph)>>computeFullBounds
GLMPanelMorph(Morph)>>fullBounds

Reply via email to