[squeak-dev] The Trunk: Morphic-nice.1313.mcz
Nicolas Cellier
nicolas.cellier.aka.nice at gmail.com
Thu Oct 27 00:47:15 UTC 2016
Not sure if it's OK for anything else than leftFlush, but this one was
upsetting me for a while
(inspector panes are often narrow in debuggers)
And +1000 thanks for restoring the review-by-mail feature while now
providing full MC history
2016-10-27 2:35 GMT+02:00 <commits at source.squeak.org>:
> Nicolas Cellier uploaded a new version of Morphic to project The Trunk:
> http://source.squeak.org/trunk/Morphic-nice.1313.mcz
>
> ==================== Summary ====================
>
> Name: Morphic-nice.1313
> Author: nice
> Time: 27 October 2016, 2:34:24.410239 am
> UUID: b6649d12-cd6a-4957-94c0-ddc37d0f253a
> Ancestors: Morphic-tpr.1312
>
> Correct the text selection when extending down over a long word that was
> rejected on next line.
>
> The scenario is when a long word following a space does not fit on the end
> of line: it is displayed on next line.
> If user click right after the space and extend the selection by dragging
> down on next line, then the selection from left of next line to right of
> space is not displayed.
>
> This is because the start CharacterBlock has its topLeft = space topRight
> (+ eventual kern).
> Fortunately, a simple <= test instead of < solves the problem.
>
> =============== Diff against Morphic-tpr.1312 ===============
>
> Item was changed:
> ----- Method: NewParagraph>>displaySelectionInLine:on: (in category
> 'display') -----
> displaySelectionInLine: line on: aCanvas
> | leftX rightX w |
> selectionStart ifNil: [^self]. "No selection"
> aCanvas isShadowDrawing ifTrue: [ ^self ]. "don't draw
> selection with shadow"
> selectionStart = selectionStop
> ifTrue:
> ["Only show caret on line where clicked"
>
> selectionStart textLine ~= line ifTrue: [^self]]
> ifFalse:
> ["Test entire selection before or after here"
>
> (selectionStop stringIndex < line first
> or: [selectionStart stringIndex > (line
> last + 1)]) ifTrue: [^self]. "No selection on this line"
> (selectionStop stringIndex = line first
> and: [selectionStop textLine ~= line])
> ifTrue: [^self]. "Selection ends on line above"
> (selectionStart stringIndex = (line last + 1)
> and: [selectionStop textLine ~= line])
> ifTrue: [^self]]. "Selection begins on line below"
> + leftX := (selectionStart stringIndex <= line first
> - leftX := (selectionStart stringIndex < line first
> ifTrue: [line ]
> ifFalse: [selectionStart ])left.
> rightX := (selectionStop stringIndex > (line last + 1) or:
> [selectionStop stringIndex = (line
> last + 1)
> and: [selectionStop
> textLine ~= line]])
> ifTrue: [line right]
> ifFalse: [selectionStop left].
> selectionStart = selectionStop
> ifTrue: [
> rightX := rightX + 1.
> caretRect := (leftX-2) @ line top corner:
> (rightX+2)@ line bottom. "sigh..."
> self showCaret ifFalse: [^self].
> w := (Editor dumbbellCursor
> ifTrue: [self displayDumbbellCursorOn:
> aCanvas at: leftX in: line]
> ifFalse: [self displaySimpleCursorOn:
> aCanvas at: leftX in: line]).
> caretRect := (leftX-w) @ line top corner:
> (rightX+w)@ line bottom]
> ifFalse: [
> caretRect := nil.
> aCanvas fillRectangle: (leftX @ line top corner:
> rightX @ line bottom)
> color: (self focused ifTrue: [self
> selectionColor] ifFalse: [self unfocusedSelectionColor])]!
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20161027/00829050/attachment.htm
More information about the Squeak-dev
mailing list
|