<body><div id="__MailbirdStyleContent" style="font-size: 12pt;font-family: Calibri;color: #000000">
                                        ...I was referring to Morphic-mt.1445... Sorry...<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;">
                        <p style="color: #AAAAAA; margin-top: 10px;">Am 31.05.2018 10:35:01 schrieb Marcel Taeumel <marcel.taeumel@hpi.de>:</p><div id="__MailbirdStyleContent" style="font-size: 12pt;font-family: Calibri;color: #000000">
                                        Hey Chris,<div><br></div><div>I spoke to some colleagues they agreed that your improvement in halo navigation is reasonable and more user-friendly. :-) Yet, I refactored your change so that the "sibling lookup" is in SimpleHaloMorph >> #transferHalo:. I hope you agree. See Morphic-mt.1444.</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;">
                        <p style="color: #AAAAAA; margin-top: 10px;">Am 31.05.2018 09:48:27 schrieb Marcel Taeumel <marcel.taeumel@hpi.de>:</p><div id="__MailbirdStyleContent" style="font-size: 12pt;font-family: Calibri;color: #000000">
                                        
                                        
                                            
                                        
                                        
                                        Hey Chris,<div><br></div><div>I found out what you changed. Yet, that behavior has been there since ages:</div><div><br></div><div><img src="cid:3a008681-f4eb-4f5a-bf9f-1a5fb4683fdb" width="auto"></img></div><div><br></div><div>If you keep on clicking BLUE, you will not transfer the halo the overlapping system window but stay in the background one.</div><div><br></div><div>So, what are the reasons for changing this? If you want to walk down a different hierarchy, just do a RED click in between and then point to that front window. I have a feeling that changing this behavior makes it difficult to navigate halos in (partially) hidden morphs...</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 31.05.2018 09:09:42 schrieb Marcel Taeumel <marcel.taeumel@hpi.de>:</p><div id="__MailbirdStyleContent" style="font-size: 12pt;font-family: Calibri;color: #000000">
                                        
                                        
                                            
                                        
                                        
                                        Sorry Chris, but I tend to revert your change in #tryInvokeHalo:, too. Or you do it. Please. :-/<div><span style="font-size: 12pt;line-height: 1.5"><br></span></div><div><span style="font-size: 12pt;line-height: 1.5">You changed ALL the formatting, making it close to impossible to make out what you actually changed. </span></div><div><span style="font-size: 12pt;line-height: 1.5"><br></span></div><div><span style="font-size: 12pt;line-height: 1.5">Before:</span></div><div><span style="font-size: 12pt;line-height: 1.5"><br></span></div><div><img src="cid:5915dba6-1e9f-4b22-ac1d-964b2acdc110" width="auto"></img></div><div><br></div><div>After:</div><div><br></div><div><img src="cid:a38674ef-860b-4f58-b6f7-102bbd5a3f94" width="auto"></img></div><div><br></div><div>This is bad. :-(</div><div><span style="font-size: 12pt;line-height: 1.5"><br></span></div><div><span style="font-size: 12pt;line-height: 1.5"> You might have fixed a bug, which one? Maybe I can help here.</span></div><div><span style="font-size: 12pt;line-height: 1.5"><br></span></div><div><span style="font-size: 12pt;line-height: 1.5">Best,</span></div><div><span style="font-size: 12pt;line-height: 1.5">Marcel</span></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 31.05.2018 08:04:48 schrieb H. Hirzel <hannes.hirzel@gmail.com>:</p>Hi Chris<br><br>Are you working on getting the Connectors [1] add-on to work  fine<br>with Squeak 5.2a?<br>Recently I loaded Connectors into Squeak6.0a and it loaded fine.<br>However I did not do any tests yet.<br><br>--Hannes<br><br>[1] Connectors<br>Connectors is a package by Ned Konz that turns Morphic into a drawing<br>environment for making connected drawings.<br>...<br>This project has been ported to Squeak 4.x by Chris Muller, and the<br>updated code is available at SqueakSource<br><br>Current and old versions are available at SqueakMap!<br><br><br><br>On 5/31/18, Marcel Taeumel <marcel.taeumel@hpi.de> wrote:<br>> Hey Chris,<br>><br>> both #layoutChanged and #changed MUST work for all morphs even if the morph<br>> is not in a world or has no owner. Please revert this change and fix<br>> NCAAConnectorMorph instad. Otherwise, this could break test code easily.<br>><br>> Best,<br>> Marcel<br>> Am 30.05.2018 23:51:51 schrieb commits@source.squeak.org<br>> <commits@source.squeak.org>:<br>> Chris Muller uploaded a new version of Morphic to project The Trunk:<br>> http://source.squeak.org/trunk/Morphic-cmm.1443.mcz<br>><br>> ==================== Summary ====================<br>><br>> Name: Morphic-cmm.1443<br>> Author: cmm<br>> Time: 30 May 2018, 4:50:16.716113 pm<br>> UUID: 2f269941-1afa-4615-9242-9e485ecd986e<br>> Ancestors: Morphic-mt.1442<br>><br>> - When updating a borderStyle:, only signal changes if the receiver is in<br>> the world for them to be seen. This fixes:<br>> NCAAConnectorMorph new<br>> - When halo's are on a background Morph, and a foreground morph covering it<br>> is blue-clicked, transfer the halos to the clicked morph.<br>> - Disable the new #balanceOffsets when Smart Splitters is enabled,<br>> unfortunately they currently don't play nicely together.<br>><br>> =============== Diff against Morphic-mt.1442 ===============<br>><br>> Item was changed:<br>> ----- Method: Morph>>borderStyle: (in category 'accessing') -----<br>> borderStyle: aBorderStyle<br>> -<br>> aBorderStyle = self borderStyle ifTrue: [^ self].<br>> -<br>> "If we cannot draw the new border, accept at least its color and width."<br>> ((self canDrawBorder: aBorderStyle) or: [aBorderStyle isNil])<br>> ifTrue: [self setProperty: #borderStyle toValue: aBorderStyle]<br>> ifFalse: [<br>> self borderStyle<br>> width: aBorderStyle width;<br>> baseColor: aBorderStyle baseColor].<br>> -<br>> self borderStyle trackColorFrom: self.<br>> + self isInWorld ifTrue:<br>> + [ self<br>> + layoutChanged;<br>> + changed ]!<br>> -<br>> - self<br>> - layoutChanged;<br>> - changed.!<br>><br>> Item was changed:<br>> ----- Method: PasteUpMorph>>tryInvokeHalo: (in category 'events-processing')<br>> -----<br>> + tryInvokeHalo: aUserInputEvent<br>> + "Invoke halos around the top-most world container at aUserInputEvent's<br>> #position. If it was already halo'd, zero-in on its next inward component<br>> morph at that position. Holding Shift during the click reverses this<br>> traversal order."<br>> + | stack target owners |<br>> + Preferences noviceMode ifTrue: [^self ].<br>> + Morph haloForAll ifFalse: [^self].<br>> + "the stack is the top-most morph to bottom-most."<br>> + stack := (self morphsAt: aUserInputEvent position unlocked: true) select:<br>> [ : each | each wantsHaloFromClick ].<br>> + stack ifEmpty: [^self].<br>> + target :=<br>> + aUserInputEvent hand halo<br>> + ifNil: [ stack first ]<br>> + ifNotNil:<br>> + [ : existingHalo |<br>> + stack allButFirst "halo's are always topmost on the stack"<br>> + detect: [ : each | each owner == self ]<br>> + ifFound:<br>> + [ : topMostWhereClicked |<br>> + (existingHalo target withAllOwners includes: topMostWhereClicked)<br>> + ifTrue: [ "No invocation needed. Halo will handle transfer itself." ^self<br>> ]<br>> + ifFalse:<br>> + [ "Transfer halo to new world container."<br>> + aUserInputEvent hand removeHalo.<br>> + aUserInputEvent shiftPressed<br>> + ifTrue: [ stack second ]<br>> + ifFalse: [ topMostWhereClicked ] ] ]<br>> + ifNone: ["Okay, invoke halos on the world." self ] ].<br>> + "With a modifier, we want the innermost, otherwise the outermost."<br>> + owners := target withAllOwners select: [ : each | each wantsHaloFromClick<br>> ].<br>> + "the last owner is expected to be self."<br>> + target := aUserInputEvent shiftPressed ifTrue: [ owners first ] ifFalse: [<br>> owners at: owners size-1 ifAbsent: [self] ].<br>> + "Now that we have the target, show the halo. Abort event dispatching, too,<br>> to avoid confusion."<br>> + aUserInputEvent hand newMouseFocus: target event: aUserInputEvent.<br>> + target invokeHaloOrMove: aUserInputEvent.<br>> + "aUserInputEvent has been consumed, don't let it cause any further<br>> side-effects."<br>> + aUserInputEvent ignore!<br>> - tryInvokeHalo: anEvent<br>> -<br>> - | innerMost target |<br>> - anEvent hand halo ifNotNil: [^ self "No invocation needed. Halo will<br>> handle transfer itself."].<br>> - Preferences noviceMode ifTrue: [^ self "No halo in novice mode."].<br>> - Morph haloForAll ifFalse: [^ self].<br>> -<br>> - innerMost := (self morphsAt: anEvent position unlocked: true) first.<br>> -<br>> - "1) Try to use innermost morph but skip all the ones that do not want to<br>> show a halo along the owner chain."<br>> - target := innerMost.<br>> - [target isNil or: [target wantsHaloFromClick]]<br>> - whileFalse: [target := target owner].<br>> - target ifNil: [^ self].<br>> -<br>> - "2) Without a modifier, which is normal, find the outermost container for<br>> that inner morph."<br>> - (innerMost == self or: [anEvent shiftPressed]) ifFalse: [<br>> - | previousTargets |<br>> - previousTargets := OrderedCollection new.<br>> - [target notNil and: [target owner ~~ self]] whileTrue: [<br>> - previousTargets add: target.<br>> - target := target owner].<br>> - target ifNil: [^ self].<br>> - [previousTargets isEmpty or: [target wantsHaloFromClick]] whileFalse: [<br>> - target := previousTargets removeLast].<br>> - target wantsHaloFromClick ifFalse: [^ self]].<br>> -<br>> - "3) Now that we have the target, show the halo. Abort event dispatching,<br>> too, to avoid confusion."<br>> - anEvent hand newMouseFocus: target event: anEvent.<br>> - target invokeHaloOrMove: anEvent.<br>> - anEvent ignore.!<br>><br>> Item was changed:<br>> ----- Method: ProportionalSplitterMorph>>mouseUp: (in category 'events')<br>> -----<br>> mouseUp: anEvent<br>> + (self bounds containsPoint: anEvent cursorPoint) ifFalse: [ anEvent hand<br>> showTemporaryCursor: nil ].<br>> + self class fastSplitterResize ifTrue: [ self updateFromEvent: anEvent ].<br>> + traceMorph ifNotNil:<br>> + [ traceMorph delete.<br>> + traceMorph := nil ].<br>> - (self bounds containsPoint: anEvent cursorPoint)<br>> - ifFalse: [anEvent hand showTemporaryCursor: nil].<br>> - self class fastSplitterResize<br>> - ifTrue: [self updateFromEvent: anEvent].<br>> - traceMorph ifNotNil: [traceMorph delete. traceMorph := nil].<br>> self color: self getOldColor.<br>> + "balanceOffsets currently disrupts Smart Splitter behavior."<br>> + (ProportionalSplitterMorph smartVerticalSplitters or: [<br>> ProportionalSplitterMorph smartHorizontalSplitters ]) ifFalse: [ self<br>> balanceOffsets ]!<br>> -<br>> - self balanceOffsets!<br>><br>> Item was changed:<br>> ----- Method: ProportionalSplitterMorph>>step (in category 'events') -----<br>> step<br>> splitsTopAndBottom<br>> ifTrue: [ self reduceTopBottomImbalance ]<br>> ifFalse:<br>> [ self reduceLeftRightImbalance abs > 1 ifTrue:<br>> [ self splittersLeftDo:<br>> [ : splitter | splitter reduceLeftRightImbalance ].<br>> self splittersRightDo:<br>> + [ : splitter | splitter reduceLeftRightImbalance ] ] ]!<br>> - [ : splitter | splitter reduceLeftRightImbalance ] ] ].<br>> - self balanceOffsets!<br>><br>><br>><br><br></commits@source.squeak.org></marcel.taeumel@hpi.de>
                        </blockquote></div>
                        </blockquote></div>
                        </blockquote>
                                        </div>
                        </blockquote>
                                        </div></body>