you need to position points/morphs in a canvas ?
In that case you need a) a canvas and b) the points.
This cannot (and should not) be achieved with different widgets (spec) but with just one : a morph there acts as a canvas.
So, instead of going to the window of the presenter (which,, by the way, may or may not exist) I would just add a morph, e.g. :
(this example is just a script, in real life you would do things differently)
presenter := SpPresenter new.
presenter layout: (SpBoxLayout newVertical
���� ��add: (morphPresenter := presenter newMorph);
���� ��yourself).
���� ��
morph := Morph new color: Color white.
morphPresenter morph: morph.
morph color: Color white.
1 to: 10 do: [ :index |
���� ��| pointMorph |������
���� ��pointMorph := Morph new
���� �������� color: Color random;
���� �������� extent: 10@10;
���� �������� yourself.
���� ��pointMorph position: 300 atRandom @ 200 atRandom.
���� ��morph addMorph: pointMorph ].
presenter open.
getting the real size of a window is not really provided by the api except for its initial status (after that, you can suscribe to the resize event if you want to know the new size), but you shouldn't needed that�� (and getting the SpWindow which is a morph is not the way to go, since this is not portable).
Spec is a framework to make and place **widgets**, as soon as you need something that is not a widget, you need to go to a lower level than it (hence, rendering a morph).