[squeak-dev] The Inbox: Morphic-pre.1490.mcz

Rein, Patrick Patrick.Rein at hpi.de
Fri Jun 28 07:52:01 UTC 2019


We looked into this yesterday and IndentingListItemMorph having a nil #color
actually has a meaning which is: Inherit the color from the containing list morph.
This might be questionable by itself but the fix at least restores this mechanism.

Bests
Patrick
________________________________________
From: Squeak-dev <squeak-dev-bounces at lists.squeakfoundation.org> on behalf of Taeumel, Marcel
Sent: Thursday, June 27, 2019 9:42:18 AM
To: Robert via Squeak-dev
Subject: Re: [squeak-dev] The Inbox: Morphic-pre.1490.mcz

All morphs should have a non-nil #color and so should priorMorph ... Hmm...

Best,
Marcel

Am 26.06.2019 20:43:32 schrieb Nicolas Cellier <nicolas.cellier.aka.nice at gmail.com>:

Note that you do not need the ifNotNil: part

Le mer. 26 juin 2019 à 14:27, <commits at source.squeak.org<mailto:commits at source.squeak.org>> a écrit :
Patrick Rein uploaded a new version of Morphic to project The Inbox:
http://source.squeak.org/inbox/Morphic-pre.1490.mcz

==================== Summary ====================

Name: Morphic-pre.1490
Author: pre
Time: 26 June 2019, 2:27:35.772055 pm
UUID: 95570b89-47fd-8e4f-86ec-f075734e1fb0
Ancestors: Morphic-pre.1489

Fixes a defect preventing colored line items in pluggable tree morphs. The infrastructure was already in place (see StringMorph>>#contents:), however, the ListMorph overrides the determined color later. This changes this overriding to be more conservative to preserve any pre-determined color.

=============== Diff against Morphic-pre.1489 ===============

Item was changed:
  ----- Method: SimpleHierarchicalListMorph>>addMorphsTo:from:allowSorting:withExpandedItems:atLevel: (in category 'private') -----
  addMorphsTo: morphList from: aCollection allowSorting: sortBoolean withExpandedItems: expandedItems atLevel: newIndent

        | priorMorph newCollection firstAddition |
        priorMorph := nil.
        newCollection := (sortBoolean and: [sortingSelector notNil]) ifTrue: [
                aCollection sorted: [ :a :b |
                        (a perform: sortingSelector) <= (b perform: sortingSelector)]
        ] ifFalse: [
                aCollection
        ].
        firstAddition := nil.
        newCollection do: [:item |
                priorMorph := self indentingItemClass basicNew
                        initWithContents: item
                        prior: priorMorph
                        forList: self
                        indentLevel: newIndent.
                priorMorph
+                       color: (priorMorph color ifNil: [self textColor] ifNotNil: [:c | c]);
-                       color: self textColor;
                        font: self font;
                        selectionColor: self selectionColor;
                        selectionTextColor: self selectionTextColor;
                        hoverColor: self hoverColor;
                        highlightTextColor: self highlightTextColor;
                        filterColor: self filterColor;
                        filterTextColor: self filterTextColor.
                firstAddition ifNil: [firstAddition := priorMorph].
                morphList add: priorMorph.
                ((item hasEquivalentIn: expandedItems) or: [priorMorph isExpanded]) ifTrue: [
                        priorMorph isExpanded: true.
                        priorMorph
                                addChildrenForList: self
                                addingTo: morphList
                                withExpandedItems: expandedItems.
                ].
        ].
        ^firstAddition

  !

Item was changed:
  ----- Method: SimpleHierarchicalListMorph>>addSubmorphsAfter:fromCollection:allowSorting: (in category 'private') -----
  addSubmorphsAfter: parentMorph fromCollection: aCollection allowSorting: sortBoolean

        | priorMorph morphList newCollection |
        priorMorph := nil.
        newCollection := (sortBoolean and: [sortingSelector notNil]) ifTrue: [
                aCollection sorted: [ :a :b |
                        (a perform: sortingSelector) <= (b perform: sortingSelector)]
        ] ifFalse: [
                aCollection
        ].
        morphList := OrderedCollection new.
        newCollection do: [:item |
                priorMorph := self indentingItemClass basicNew
                        initWithContents: item
                        prior: priorMorph
                        forList: self
                        indentLevel: parentMorph indentLevel + 1.
                priorMorph
+                       color: (priorMorph color ifNil: [self textColor] ifNotNil: [:c | c]);
-                       color: self textColor;
                        font: self font;
                        selectionColor: self selectionColor;
                        selectionTextColor: self selectionTextColor;
                        hoverColor: self hoverColor;
                        highlightTextColor: self highlightTextColor;
                        filterColor: self filterColor;
                        filterTextColor: self filterTextColor.
                morphList add: priorMorph.
        ].
        scroller addAllMorphs: morphList after: parentMorph.
        ^morphList

  !




More information about the Squeak-dev mailing list