Hi Andrei, Thanks for the suggestion! That avoids the problem until the fix is in.
Thanks again, Alistair On 25 February 2017 at 22:50, Andrei Chis <chisvasileand...@gmail.com> wrote: > 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 > >