[squeak-dev] some CharacterScanner methods weirdly send setStopConditions twice

Nicolas Cellier nicolas.cellier.aka.nice at gmail.com
Sun Sep 29 01:28:11 UTC 2013


And much much fun, I checked that the incorrect display of centered line in
MVC is still there!!!
This is because A MultiDisplayScanner is used, while the correction has
been applied on DisplayScanner only...
The fun of maintaining two hierarchies...


2013/9/29 Nicolas Cellier <nicolas.cellier.aka.nice at gmail.com>

> Ah no, buildCharacterBlockIn: is used exclusively by Paragraph and thus by
> MVC...
> This explains why I did not understand how it could work in Morphic: it
> doesn't.
> We should probably unify CharacterBlockScanner response to MVC and Morphic
> here.
>
> For 1) I have identified:
> characterBlockAtPoint: aPoint index: index in: textLine
> ...
>     (text isEmpty or: [(characterPoint y < line top or: [characterPoint x
> < line left])
>                 or: [characterIndex notNil and: [characterIndex < line
> first]]])
>         ifTrue:    [Beeper beep. ^ (CharacterBlock new stringIndex: line
> first text: text
>                     topLeft: line leftMargin at line top extent: 0 @
> textStyle lineGrid)
>                     textLine: line].
>
> The beep correlates quite well with the glitch :)
>
> I have just posted a fix for 2)
>
> And for 3), no idea yet...
>
>
>
>
> 2013/9/29 Nicolas Cellier <nicolas.cellier.aka.nice at gmail.com>
>
>> OK, I understand the  fix in CharacterBlockScanner because it is better
>> explained in DisplayScanner:
>> sending stopConditions will initialize alignment inst. var., which for
>> some reasons wasn't set in MVC...
>> Not sure that this is the right fix though... And not sure how this works
>> in Morphic too...
>>
>> I however have found more glitches in Morphic:
>> 1) if alignment is centered, you can set the blinking cursor to the left
>> of the window by double clicking very near the left border.
>>     Normally, the cursor should go the left of leftmost character...
>>     I suspect that this could be an unset alignment defaulting to left
>> flush
>>     (seing all these alignment ifNil:[textStyle alignment] is a clue)
>>
>> 2) in case of WideString, you cannot easily select the leftmost character
>> in a centered line by help of the mouse (unless you go left to window
>> border).
>>     I found that this is due to the leftMargin test in line from
>> scanMultiCharactersFrom:...
>>         nextDestX > rightX ifTrue: [destX ~= leftMargin ifTrue: [^stops
>> crossedX]].
>>     It did work OK when this was firstDestX, so it's me who broke it with
>> Multilingual-nice.179
>>     Indeed, only a MultiCompositionScanner would initialize firstDestX :=
>> leftMargin, while the other scanner let it nil...
>>
>> 3) The blinking cursor vanishes when cursor is moved at the right of a
>> right flushed line.
>>     it even vanishes sooner if last char is blank (space/tab) and the
>> cursor is moved with arrow key (different from mouse click!)
>>
>>
>>
>> 2013/9/29 Nicolas Cellier <nicolas.cellier.aka.nice at gmail.com>
>>
>>> Argh! case of blindness!
>>> I did not find because I looked at the date and found nothing before
>>> 2006!
>>>
>>>
>>> 2013/9/29 Bob Arning <arning315 at comcast.net>
>>>
>>>>  Looks like it's already there
>>>>
>>>> http://ftp.squeak.org/updates/updates.list
>>>>
>>>> Cheers,
>>>> Bob
>>>>
>>>>  On 9/28/13 5:30 PM, Nicolas Cellier wrote:
>>>>
>>>>  Ah OK, I have some of these images, but first thought about browsing
>>>> the web...
>>>>  It would be nice if
>>>> http://update.squeakfoundation.org/external/updates<http://update.squeakfoundation.org/external/updates/updates.list>were copied to
>>>> http://ftp.squeak.org/updates though.
>>>>
>>>>
>>>>
>>>> 2013/9/28 Bob Arning <arning315 at comcast.net>
>>>>
>>>>>  Oh, I saved *lots* of them. In this case I looked at old images
>>>>> until I found one containing a different version of that method. I don't
>>>>> know if anyone has saved everything one one place, but if you download a
>>>>> lot of old images, you might be able to find the answer (although some of
>>>>> them had change sets expunged before being made available). You can get the
>>>>> one in question from http://ftp.squeak.org/3.8/
>>>>>
>>>>> Cheers,
>>>>> Bob
>>>>>
>>>>>   On 9/28/13 4:30 PM, Nicolas Cellier wrote:
>>>>>
>>>>>  Ah, thanks Bob, it seems you saved some historical bits !
>>>>>
>>>>>  I saw that previous timestamp was BG 5/31/2003, I found that it might
>>>>> be 4717CharBlockScannerFix-slg.cs in
>>>>> http://update.squeakfoundation.org/external/updates/updates.list but
>>>>> I did not find any way to browse these change sets.
>>>>>
>>>>>  Aren't there available somewhere?
>>>>>
>>>>>
>>>>> 2013/9/28 Bob Arning <arning315 at comcast.net>
>>>>>
>>>>>>  Change Set:        CenteredTextFix-BG
>>>>>> Date:            31 May 2003
>>>>>> Author:            Boris Gaertner
>>>>>>
>>>>>> In an MVC project, centered text is not displayed centered when it is
>>>>>> edited. This is an attempt to fix that glitch. Please have a look at it and
>>>>>> give it some testing. After all, a careless change in CharacterScanner can
>>>>>> easily ruin the image.
>>>>>> =======================
>>>>>>
>>>>>> This was when a second #setStopConditions was added preceding the
>>>>>> rightMargin setting. My guess is nobody thought to remove the original
>>>>>> #setStopConditions further down. Then in 2006 the new #setStopConditions
>>>>>> was moved after the rightMargin setting.
>>>>>>
>>>>>> Cheers,
>>>>>> Bob
>>>>>>
>>>>>>   On 9/28/13 3:51 PM, Nicolas Cellier wrote:
>>>>>>
>>>>>>   Sending twice some complex initialization message with inter-mixed
>>>>>> state messing smells...
>>>>>> This is for example in CharacterBlockScanner>>buildCharacterBlockIn:
>>>>>>
>>>>>>  I found http://bugs.squeak.org/view.php?id=3570 which were included
>>>>>> in Graphics-ar.39
>>>>>> (in 3.9 repository see
>>>>>> http://source.squeak.org/39a/Graphics-ar.39.diff)...
>>>>>> ...but the doubled setStopConditions was there already, the change
>>>>>> just swapped some lines...
>>>>>>
>>>>>>  This is not in the Multilingual branch, so it seems newer than
>>>>>> 2002...
>>>>>>
>>>>>>  Does anyone remember where to dig to understand why, which bug it
>>>>>> solves, which feature it supports, and whether it is really needed?
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20130929/27b9a358/attachment.htm


More information about the Squeak-dev mailing list