On Fri, Feb 1, 2013 at 12:52 AM, Stéphane Ducasse <[email protected]
> wrote:

>
> On Jan 31, 2013, at 7:35 PM, Usman Bhatti wrote:
>
> >
> >
> >
> > On Thu, Jan 31, 2013 at 10:09 PM, Stéphane Ducasse <
> [email protected]> wrote:
> > Usman
> >
> > I also try just returning the container but do not know the expected
> result.
> > It "works"
> >
> > It kinda "works" because DNU has disappeared.
> >
> > Scenario
> > I have a list, when I select an element from the list, its properties,
> visu and metrics are shown by glamour.
> >
> > Ideal Situation:
> > I trigger the selection of a random node (from another visu) and its not
> part of the shown elements in the list (but is still part of model), it
> should be selected/gets focus in the list.
>
> I do not understand how a container setSelectedMorph: nil can select a
> node :)
>

Agreed :-). I was looking for the behavior which says, the node that you
are trying to select is not shown, so create a morph of the node in the
tree, select it and show it and I couldn't find this behavior, I doubt it
exists.


>
>
> >
> > what this "Fix" does
> > With the "fix", I can see the properties and visu of the selected node
> in my browser and DNU is gone. But selection of the node does not happen.
> For me, sufficient to show a problem-free UI but its not the ideal behavior.
> >
> > Should this "fix" be a part of pharo? But this code needs a thorough
> inspection.
> >
> > usman
> >
> >
> >
> > Stef
> >
> >
> >
> > On Jan 31, 2013, at 12:48 PM, Usman Bhatti wrote:
> >
> > >
> > >
> > >
> > > On Thu, Jan 31, 2013 at 1:20 PM, Stéphane Ducasse <
> [email protected]> wrote:
> > > Usman did you check with 1.3 to know if the method was there?
> > >
> > > I looked in 1.3. The method is defined on MorphTreeMorph (see
> sceenshot) but absent from this class in 1.4. Copying and pasting the
> method from 1.3 to 1.4 in the class does not work, there are some missing
> instance variables in the code.
> > > The number of implementing classes for setSelectedMorph: does not
> change between 1.3 and 1.4. To me it seems that the method was moved to
> MorphTreeListManager in 1.4. It tried to change the receiver to invoke the
> method on MorphTreeListManager but there are some other problems then.
> > >
> > > <image.png>
> > >
> > >
> > > Stef
> > >
> > > On Jan 31, 2013, at 7:03 AM, Usman Bhatti wrote:
> > >
> > > >
> > > >
> > > >
> > > > On Thu, Jan 31, 2013 at 2:30 AM, Stéphane Ducasse <
> [email protected]> wrote:
> > > > Morbid fascination
> > > > It is late so I may completely off but
> > > > how many isKindOf: are executed in this method?
> > > >
> > > > > ((aSymbol isKindOf: Array)
> > > > >               and: [aSymbol size > 1 and: [aSymbol first == self
> nodeListSelector and: [
> > > > >                                       aSymbol second ==
> #openPath]]])
> > > >
> > > > when  [aSymbol second == #openPath] is not openPath
> > > > then we go to the next (not mentioning duplicated code inside the
> method ---- I will vomit)
> > > > and we restart to execute isKindOf:
> > > >
> > > > ((aSymbol isKindOf: Array)
> > > >                 and: [aSymbol size > 1 and: [aSymbol first == self
> nodeListSelector and: [
> > > >                                         aSymbol second ==
> #expandAllFromNode:]]])
> > > >
> > > > Am'I right?
> > > > It looks so terrible.
> > > >
> > > > Yes. And more so for someone not frequently working with Morphs.
> > > > So, can someone at least see if the problem can be fixed without a
> large refactoring that should surely happen, but the glamour bug needs a
> quick fix. Or at least point to why the missing method on the receiver is
> abundantly found in the code?
> > > >
> > > > usman
> > > >
> > > >
> > > > Stef
> > > >
> > > >
> > > >
> > > > > update: aSymbol
> > > > >       aSymbol == #selection ifTrue: [^ self listManager
> updateSelectionFromModel].
> > > > >       ((aSymbol  isKindOf: Array)     and: [aSymbol size > 1 and:
> [aSymbol first == #selectItems and: [aSymbol second isCollection]]])
> > > > >               ifTrue: [^ self selectedItems: aSymbol second].
> > > > >       aSymbol == self nodeListSelector ifTrue: [^ self updateList].
> > > > >       aSymbol == #selectAll ifTrue: [^ self listManager selectAll].
> > > > >       aSymbol == #deselectAll ifTrue: [^ self listManager
> deselectAll].
> > > > >       ((aSymbol isKindOf: Array)
> > > > >               and: [aSymbol size > 1 and: [aSymbol first == self
> nodeListSelector and: [
> > > > >                                       aSymbol second ==
> #openPath]]]) "allow directed path opening where multiple trees exist"
> > > > >                       ifTrue:
> > > > >                               [^(self allNodeMorphs at: 1
> ifAbsent: [^self])
> > > > >                                       openPath: (aSymbol
> allButFirst: 2)].
> > > > >       ((aSymbol isKindOf: Array)
> > > > >               and: [aSymbol size > 1 and: [aSymbol first == self
> nodeListSelector and: [
> > > > >                                       aSymbol second ==
> #openItemPath]]]) "allow directed path opening where multiple trees exist"
> > > > >                       ifTrue:
> > > > >                               [^ (self allNodeMorphs at: 1
> ifAbsent: [^self])
> > > > >                                       openItemPath: (aSymbol
> allButFirst: 2)].
> > > > >       ((aSymbol isKindOf: Array)
> > > > >               and: [aSymbol size > 1 and: [aSymbol first == self
> nodeListSelector and: [
> > > > >                                       aSymbol second ==
> #expandAllFromNode:]]])
> > > > >                       ifTrue:
> > > > >                               [^ self expandAllFromNode: aSymbol
> third].
> > > > >       ((aSymbol isKindOf: Array)
> > > > >               and: [aSymbol size > 1 and: [aSymbol first == self
> nodeListSelector and: [
> > > > >                                       aSymbol second ==
> #closeItemPath]]]) "allow directed path closing where multiple trees exist"
> > > > >                       ifTrue:
> > > > >                               [^ (self allNodeMorphs at: 1
> ifAbsent: [^self])
> > > > >                                       closeItemPath: (aSymbol
> allButFirst: 2)].
> > > > >       ((aSymbol isKindOf: Array)
> > > > >               and: [aSymbol notEmpty and: [aSymbol first ==
> #openPath]])
> > > > >                       ifTrue:
> > > > >                               [^(self allNodeMorphs at: 1
> ifAbsent: [^self])
> > > > >                                       openPath: aSymbol
> allButFirst].
> > > > >       ((aSymbol isKindOf: Array)
> > > > >               and: [aSymbol size  = 2 and: [aSymbol first = self
> nodeListSelector and: [
> > > > >                                       aSymbol second ==
> #expandRoots]]])
> > > > >                       ifTrue:
> > > > >                               [^self expandRoots].
> > > > >       ((aSymbol isKindOf: Array)
> > > > >               and: [aSymbol size = 2 and: [aSymbol first = self
> nodeListSelector]])
> > > > >               ifTrue: [aSymbol second = #expandAll ifTrue: [^ self
> expandAll].
> > > > >                       aSymbol second = #collapseAll ifTrue: [^
> self collapseAll]]
> > > >
> > > >
> > > >
> > >
> > >
> > >
> >
> >
> >
>
>
>

Reply via email to