So, there is the damn caret drawing code:

Paragraph>>displaySelectionInLine: line on: aCanvas�
| leftX rightX w caretColor |
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�
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.
w := self caretWidth.
caretRect := (leftX-w) @ line top corner: (rightX+w)@ line bottom.
self showCaret ifFalse:[^self].
caretColor := self insertionPointColor.
1 to: w
do:�
[:i |�
"Draw caret triangles at top and bottom"

aCanvas fillRectangle: ((leftX - w + i - 1) @ (line top + i - 1)�
extent: ((w - i) * 2 + 3) @ 1)
color: caretColor.
aCanvas fillRectangle: ((leftX - w + i - 1) @ (line bottom - i)�
extent: ((w - i) * 2 + 3) @ 1)
color: caretColor].
aCanvas fillRectangle: (leftX @ line top corner: rightX @ line bottom)
color: caretColor]
ifFalse:�
[caretRect := nil.
aCanvas fillRectangle: (leftX @ line top corner: rightX @ line bottom)
color: self selectionColor]




Paragraph class>>insertionPointColor has the color. I was fed up of blue, turned it red :-)
This one is hardcoded and could take a hint from the selection color twiceDarker for example.

Phil

2012/7/20 Denis Kudriashov <dionisiydk@gmail.com>
Hello

2012/7/20 Fernando Olivero <fernando.olivero@usi.ch>
Hi Sean, you can take a look at Athens-PangoCairo (in squeaksource).

Using NativeBoost, i'm using the Pango layout library [1], and the
Pango-Cairo binding [2], �to avoid laying out text using the outdated
(and messy) stuff in the image.

Check out the classes: ParagraphDescription & AthensPangoCairoParagraph.

I'm using them as the basis for the TextShape,LabelShape, and
EditableTextShape in Shapes / Gaucho ( using TextEditor,
SingleLineEditor ).

Maybe somebody can do the same for Morphic? use Pango to layout the
text, and code a new TextMorph on top of it?

How I can try your code?
Do you have ready image to play with it?

I am very interested with clean and simple alternative to morphic. I want it for Presenty framework.

(But I really like morphic as live user interface environment)

Best regards,
Denis






--
Philippe Back
Dramatic Performance Improvements
Mob: +32(0) 478 650 140 | Fax: +32 (0) 70 408 027 Mail: phil@highoctane.be | Web: http://philippeback.eu | Blog: http://philippeback.be

High Octane SPRL
rue cour Boisacq 101
1301 Bierges
Belgium