<div id="__MailbirdStyleContent" style="font-size: 10pt;font-family: Arial;color: #000000">
                                        
                                        
                                            
                                        
                                        
                                        You can either return a text object in from that model-label callback (here: #labelFor:) or configure a custom node class (here: PluggableTreeItemNode).<div><br></div><div><img id="b371a339-6e38-4209-9851-424eca4fde19" src="cid:a27b79ca-37f3-4543-a82e-7f037d68703f" width="auto"></img><br></div><div><br></div><div>Best,</div><div>Marcel</div><div class="mb_sig"></div>
                                        
                                        <blockquote class="history_container" type="cite" style="border-left-style: solid;border-width: 1px;margin-top: 20px;margin-left: 0px;padding-left: 10px;min-width: 500px">
                        <p style="color: #AAAAAA; margin-top: 10px;">Am 26.11.2019 16:40:24 schrieb commits@source.squeak.org <commits@source.squeak.org>:</p><div style="font-family:Arial,Helvetica,sans-serif">Marcel Taeumel uploaded a new version of Morphic to project The Trunk:<br>http://source.squeak.org/trunk/Morphic-mt.1594.mcz<br><br>==================== Summary ====================<br><br>Name: Morphic-mt.1594<br>Author: mt<br>Time: 26 November 2019, 4:39:59.476764 pm<br>UUID: 93c42f58-dfe3-bb42-85a6-0ba82ea72017<br>Ancestors: Morphic-jr.1593<br><br>Fixes that regression with custom text attributes in tree widgets.<br><br>=============== Diff against Morphic-jr.1593 ===============<br><br>Item was changed:<br>  ----- Method: IndentingListItemMorph>>getLabelFor: (in category 'model access') -----<br>  getLabelFor: model<br>+        "Note that the given model is usually aListItemWrapper."<br>+   <br>+     ^ model asStringOrText!<br>- <br>-  ^ model asString!<br><br>Item was added:<br>+ ----- Method: IndentingListItemMorph>>initWithColor:andFont: (in category 'initialization') -----<br>+ initWithColor: aColor andFont: aFont<br>+ <br>+  (self hasProperty: #hasColorFromText)<br>+                ifFalse: [self color: aColor].<br>+ <br>+   (self hasProperty: #hasEmphasisFromText)<br>+             ifTrue: [<br>+                    (self hasProperty: #hasFontFromText)<br>+                                 ifFalse: [self font: aFont "Keeps emphasis from text."]]<br>+           ifFalse: [<br>+                   (self hasProperty: #hasFontFromText)<br>+                                 ifTrue: [self emphasis: aFont emphasis "Keeps font from text."]<br>+                            ifFalse: [self font: aFont emphasis: aFont emphasis]]<br>+ !<br><br>Item was added:<br>+ ----- Method: IndentingListItemMorph>>initializeFromText: (in category 'initialization') -----<br>+ initializeFromText: aText<br>+   "Overridden to keep track of text-based attributes."<br>+       <br>+     | priorFont priorEmphasis priorColor |<br>+       priorFont := self font.<br>+      priorEmphasis := self emphasis.<br>+      priorColor := self color.<br>+    <br>+     super initializeFromText: aText.<br>+     <br>+     priorFont == self font<br>+               ifFalse: [self setProperty: #hasFontFromText toValue: true].<br>+         priorFont == self emphasis<br>+           ifFalse: [self setProperty: #hasEmphasisFromText toValue: true].<br>+     priorColor == self color<br>+             ifFalse: [self setProperty: #hasColorFromText toValue: true].!<br><br>Item was added:<br>+ ----- Method: ListItemWrapper>>asStringOrText (in category 'converting') -----<br>+ asStringOrText<br>+  "Documentation only. You can create a custom wrapper that returns text with formatting. The tree widget will then use the text attributes of the first characters and applies them to the entire label. LazyListMorph works the same way."<br>+         <br>+     ^ self asString!<br><br>Item was changed:<br>  ----- Method: SimpleHierarchicalListMorph>>addMorphsTo:from:allowSorting:withExpandedItems:atLevel: (in category 'private') -----<br>  addMorphsTo: morphList from: aCollection allowSorting: sortBoolean withExpandedItems: expandedItems atLevel: newIndent<br>  <br>        | priorMorph newCollection firstAddition |<br>    priorMorph := nil.<br>    newCollection := (sortBoolean and: [sortingSelector notNil]) ifTrue: [<br>                aCollection sorted: [ :a :b | <br>                        (a perform: sortingSelector) <= (b="" perform:=""><!--=--><br>    ] ifFalse: [<br>                  aCollection<br>   ].<br>    firstAddition := nil.<br>         newCollection do: [:item | <br>           priorMorph := self indentingItemClass basicNew <br>                       initWithContents: item <br>                       prior: priorMorph <br>                    forList: self<br>                         indentLevel: newIndent.<br>               priorMorph<br>+                   initWithColor: self textColor<br>+                        andFont: self font.<br>+          priorMorph<br>-                   color: self textColor;<br>-                       font: self font;<br>                      selectionColor: self selectionColor;<br>                          selectionTextColor: self selectionTextColor;<br>                          hoverColor: self hoverColor;<br>                          highlightTextColor: self highlightTextColor;<br>                          filterColor: self filterColor;<br>                        filterTextColor: self filterTextColor.<br>                firstAddition ifNil: [firstAddition := priorMorph].<br>           morphList add: priorMorph.<br>            ((item hasEquivalentIn: expandedItems) or: [priorMorph isExpanded]) ifTrue: [<br>                         self flag: #bug. "mt: Endless recursion can happen for similar items in the tree."<br>                          priorMorph isExpanded: true.<br>                          priorMorph <br>                           addChildrenForList: self <br>                             addingTo: morphList<br>                           withExpandedItems: expandedItems.<br>             ].<br>    ].<br>    ^firstAddition<br>        <br>  !<br><br>Item was changed:<br>  ----- Method: StringMorph>>font: (in category 'accessing') -----<br>  font: aFont <br>          "Set the font my text will use. The emphasis remains unchanged."<br>  <br>-       aFont = font ifTrue: [^ self].<br>-       <br>      self<br>                  setFont: (aFont emphasized: self emphasis)<br>            emphasis: self emphasis.!<br><br>Item was changed:<br>  ----- Method: StringMorph>>initWithContents:font:emphasis: (in category 'initialization') -----<br>+ initWithContents: aStringOrText font: aFont emphasis: emphasisCode <br>- initWithContents: aString font: aFont emphasis: emphasisCode <br>  <br>   self initialize.<br>      <br>+     aStringOrText isText<br>+                 ifTrue: [self initializeFromText: aStringOrText]<br>+             ifFalse: [<br>+                   self initializeFromString: aStringOrText.<br>+                    self font: aFont emphasis: emphasisCode].!<br>-   contents := aString.<br>-         <br>-     self font: aFont emphasis: emphasisCode.!<br><br>Item was added:<br>+ ----- Method: StringMorph>>initializeFromString: (in category 'initialization') -----<br>+ initializeFromString: aString<br>+ <br>+     contents := aString.!<br><br><br></div></blockquote></div>