<div dir="ltr"><div>I've been thinking a lot about the distinctions between subclassing from Morph, PlacedMorph, and BoxMorph. To me it seems like the following are the primary distinctions.</div><div><br></div><div>Subclasses of `Morph`:<br><br>- do not have a specified "extent" (size)<br>- use the coordinate system of their owner (such as a `WorldMorph`)<br>  For example, if the owner is scaled by a factor of 2 then this will be also.<br>- use a `VectorCanvas`<br>- if the `drawOn:` method is not overridden, it will fill the morph with a blue rectangle<br>  that is centered at origin, has a width of 150, and a height of 140<br><br>Subclasses of `PlacedMorph`<br><br>- do not have a specified "extent" (size)<br>- use their own local coordinate system<br>- can be dragged to a new location<br>- use a `VectorCanvas`<br>- inherits the `drawOn:` method defined in its superclass `Morph`<br><br>Subclasses of `BoxMorph`:<br><br>- have an "extent" (size) specified by their `defaultExtent` method which defaults to `50@40`<br>- use a `HybridCanvas` by default, but will use a `VectorCanvas`</div><div>  if their `requiresVectorCanvas` method returns `true`<br>- if the `drawOn:` method is not overridden, it will fill the morph with a light green rectangle<br>- automatically clips its contents to its extent<br>  (major difference between this class and the previous two!)<br></div><div><br></div><div>While there is nothing wrong with the class comment for `BoxMorph`, I think it would be good to emphasize that what you choose to draw inside it doesn't need to be "rectangular". It seems that the important thing to know is that whatever you draw will be CLIPPED to a rectangle whose size is specified by what is returned from the `defaultExtent` method.</div><div><br></div><div>The warning about when we should not subclass from BoxMorph could say that we should not do that unless we are okay with the clipping that it provides.<br></div><div><br></div><span class="gmail_signature_prefix">-- </span><br><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div dir="ltr"><div><font face="arial, helvetica, sans-serif">R. Mark Volkmann</font></div><div><span style="font-size:12.8000001907349px"><font face="arial, helvetica, sans-serif">Object Computing, Inc.</font></span></div></div></div></div></div></div></div></div></div>