[Pharo-dev] LayoutFrame bug

Stephane Ducasse stepharo.self at gmail.com
Thu Nov 9 16:10:36 EST 2017


I could not use MC, packages could not get dirty.
So at the end I put a halt in the changersorter fileout because I
could not find where the files where saved :)

For the PR it happened also to me to use github.

Now git is funky the last time I got conflict where there was none:
since I was the only one to commit and I had to resolve
by hand all the conflicts on github...

Stef (zeBugAttractor that is a bit fedup I literally crash everything
I used. Computers, telephons....

On Wed, Nov 8, 2017 at 11:18 PM, Nicolas Cellier
<nicolas.cellier.aka.nice at gmail.com> wrote:
> I know it's not the recommended way...
>
> But if experiencing difficulties with iceberg, you can just use MC to
> produce the tonel output file, then use any git client to do the commit and
> the pull request...
> At worse, you can even modify the tonel file directly without MC (more
> dangerous)
>
> I'm often using sourcetree which is really one of the lowest barrier client
> to git (both macosx and windows, not linux though).
>
> Last time, I did it with git command line, then emmitted the PR from github
> web API.
> It's just 4 lines:
> git branch blablabranch; git src add; git commit; git push --set-upstream
> origin blablabranch
> I managed to create the branch from iceberg with fogbugz entry # so it was 3
> commands and less blabla for me :)
>
> And the last alternative is to correct directly the file thru github web
> API.
> It's more boring to create a correct branch name and reference the bug entry
> etc... but it may work.
>
> 2017-11-08 22:29 GMT+01:00 Stephane Ducasse <stepharo.self at gmail.com>:
>>
>> Hi nicolas
>>
>> Tx I fixed it before seeing your email. Too bad.
>>
>> I introduced this bug when I did the asLayoutFrame conversion.
>> Note that I split the refactoring in parts to avoid too change commits.
>> Now I was also thinking how I could automate the change and this is
>> not that easy because the expressions
>> can use temps, instance variables... and it would take me age to be
>> able to write a rewrite expression (sadly enough).
>>
>>
>> I found it in 3 min because I know the changes I did but your way is
>> quite nice because it was not easy to find from the stack trace.
>>
>> I fixed it but I cannot commit the fix. Iceberg does not let me.
>> Now I cannot produce a PR. :(
>>
>>
>> https://pharo.fogbugz.com/f/cases/20656/Nautilus-comment-panel-got-broken-by-asLayoutFrame-cleans
>>
>> Guille told me that I could modify the printOn: method to help me.
>> And this is a bit better (I did not bother to be smart with ; or not)
>> I will use this trick to ease the refactoring and minimize errors
>> (probably sleeping more should help too and doing less boring tasks
>> too :).
>>
>>
>> printOn: aStream
>>
>> aStream nextPutAll: ' (LayoutFrame identity '.
>> self leftFraction = 0
>> ifFalse: [ aStream << ('leftFraction: ', self leftFraction printString, '
>> ') ].
>> self topFraction = 0
>> ifFalse: [ aStream << ('topFraction: ', self topFraction printString, ' ')
>> ].
>> self rightFraction = 1
>> ifFalse: [ aStream << ('rightFraction: ', self rightFraction
>> printString, ' ') ].
>> self bottomFraction = 1
>> ifFalse: [ aStream << ('bottomFraction: ', self bottomFraction
>> printString,' ') ].
>> self leftOffset = 0
>> ifFalse: [ aStream << ('leftOffset: ', self leftOffset printString,' ') ].
>> self topOffset = 0
>> ifFalse: [ aStream << ('topOffset: ', self topOffset printString,' ') ].
>> self rightOffset = 0
>> ifFalse: [ aStream << ('rightOffset: ', self rightOffset printString,' ')
>> ].
>> self bottomOffset = 0
>> ifFalse: [ aStream << ('bottomOffset: ', self bottomOffset printString,'
>> ') ].
>> aStream nextPutAll: ' ) '
>>
>>
>>
>> On Wed, Nov 8, 2017 at 1:58 PM, Sven Van Caekenberghe <sven at stfx.eu>
>> wrote:
>> > Yeah, I just got in trouble too by looking at class comments.
>> >
>> > Heroic debugging, Nicolas !
>> >
>> >> On 8 Nov 2017, at 13:47, Nicolas Cellier
>> >> <nicolas.cellier.aka.nice at gmail.com> wrote:
>> >>
>> >> Hi,
>> >> don't you get nice red-cross when opening a browser and selecting
>> >> comment?
>> >> (Pharo7.0-32bit-b5ec533.image)
>> >>
>> >> The problem is LayoutFrame having a Point instead of Number in
>> >> fraction/offset inst. var.
>> >>
>> >> So I defined two horrible hacks in order to be able to work with Pharo
>> >>
>> >> Point>>@ n  ^x @ n
>> >> Point>>asInteger ^x asInteger
>> >>
>> >> then could instrument the LayoutFrame inst. var. setters with horrible
>> >> checks like:
>> >>     aNumber isNumber ifFalse: [ self halt].
>> >>
>> >> And after a few seconds of IDE usage:
>> >>
>> >> AbstractNautilusUI>>buildCodePanelWithCommentOnRight
>> >> ...snip...
>> >>     sourceCodePanel
>> >>         addMorph: commentWidget
>> >>         fullFrame: (LayoutFrame identity leftFraction: 0.5 at 0 ;
>> >>                         leftOffset: delta).
>> >>
>> >> Huh! it's as pleasant as not eating own dog food
>> >> I think this comes from a  recent refactoring. I can hardly use in
>> >> image tools to trace it.
>> >> Iceberg bugs, MC has lost ancestry and is just good at synchronizing
>> >> disk working copy with image working copy, but there is github & git API:
>> >>
>> >>
>> >> https://github.com/pharo-project/pharo/commit/042baad47fddb63db2dd0beefeec692962f06dfe#diff-b8c1cff56276a5a583eec641253123da
>> >>
>> >> As it's nearly impossible to make giant refactorings like this without
>> >> human error,
>> >> and as it's as impossible to review pull request with many lines of
>> >> code,
>> >> I wonder if it is possible to automate those with rewrite rules...
>> >>
>> >> I let you finish the work (open issue, patch, commit, etc...)
>> >>
>> >>
>> >
>> >
>>
>




More information about the Pharo-dev mailing list