how to??? TextMorph and Alignment

Steven Elkins sgelkins at gmail.com
Fri Feb 10 03:05:11 UTC 2006


On 2/9/06, Nicholas Bennett <nicholasjbennett at hotmail.com> wrote:
>
> I am trying to construct a small GUI interface to add text items to a list
> of text items.
>
> I found that TextMorph seemed to have the capabilities I wanted in that it
> could accept focus and give an insertion cursor and you can get and set the
> characters.
>
> If I do 'TextMorph borderedPrototype openInHand' I get that 'nice' behaviour
> in a free floating morph.
>
> If I make an AlignmentMorph (to contain it and the list) and drop the above
> TexstMorph it continues to work fine (you can type in it).
>
> If I programatically construct the AlignmentMorph and insert a new TextMorph
> and then open the containing Alignment, like:
>
> |a|
> a := AlignmentMorph newRow; extent: 200 at 200.
> a addMorph: TextMorph borderedPrototype.
> a openInHand

Removing the ; after newRow, I get what you do.

> then the TextMorph will not 'take' an insertion cursor and seems
> 'dead'/'deaf' to the mouse.

So I hacked it a little...

|a|
a := AlignmentMorph newRow extent: 200 at 200.
a addMorph: (TextMorph borderedPrototype isPartsDonor: false; yourself).
a openInHand

...thus undoing one of the chains of events (markAsPartsDonor) started
by borderedPrototype.  Morph>>openInHand undoes it too, which explains
why you can type into it.  Here's TextMorph's implementation of
handlesMouseDown: ...

handlesMouseDown: evt
	self isPartsDonor ifTrue: [^ false].
	^ self innerBounds containsPoint: evt cursorPoint

...a little more light on the subject.

Hope this helps,
Steve

--
How wonderful it is that nobody need wait a single moment
before starting to improve the world.       -- Anne Frank
Paradise is exactly where you are
right now...only much, much better.    -- Laurie Anderson



More information about the Squeak-dev mailing list