<div dir="ltr">Thanks! I didn't consider doing that because I didn't want the default light green background. And it seems "super drawOn: aCanvas" isn't necessary when the superclass is Morph or PlacedMorph.</div><br><div class="gmail_quote gmail_quote_container"><div dir="ltr" class="gmail_attr">On Sun, Dec 15, 2024 at 11:51 AM Mariano Montone <<a href="mailto:marianomontone@gmail.com">marianomontone@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><u></u>

  
    
  
  <div>
    <p>You are forgetting to call to super. Always consider that when
      you are overriding a method.</p>
    <p>It works. Look at screenshot attached.</p>
    <div>El 15/12/24 a las 13:41, Mark Volkmann
      escribió:<br>
    </div>
    <blockquote type="cite">
      
      <div dir="ltr">
        <div dir="ltr">On Sun, Dec 15, 2024 at 7:37 AM Mariano Montone
          via Cuis-dev <<a href="mailto:cuis-dev@lists.cuis.st" target="_blank">cuis-dev@lists.cuis.st</a>>
          wrote:<br>
        </div>
        <div class="gmail_quote">
          <blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">
            <div>
              <p>Hi Mark,<br>
              </p>
              <div>El 14/12/24 a las 22:42, Mark Volkmann via Cuis-dev
                escribió:<br>
              </div>
              <blockquote type="cite">
                <div dir="ltr">
                  <div>
                    <div>I'm trying to understand what is required to
                      create a subclass of<span> </span><font face="monospace">BoxMorph</font>. I know I need
                      to implement the<span> </span><font face="monospace">drawOn:</font><span> </span>instance
                      method. And I believe that depending on how I
                      implement that, I need to implement the<span> </span><font face="monospace">requiresVectorCanvas</font><span> </span>method
                      to return true.</div>
                    <div><br>
                    </div>
                    <div>Is anything else required? I think more must be
                      required, because I can't get a basic example to
                      work doing only those things.</div>
                  </div>
                </div>
              </blockquote>
              Have you tried browsing BoxMorph hierarchy and looking at
              its subclasses?<br>
            </div>
          </blockquote>
          <div><br>
          </div>
          <div>Yes. In particular I looked at <font face="monospace">ColoredBoxMorph</font>.
            That has no class methods and 6 instance methods. The only
            method that does something not directly related to color is
            <font face="monospace">color:</font> which sends <font face="monospace">#redrawNeeded</font> to <font face="monospace">self</font> when the color is changed.
            The <font face="monospace">initialize</font> method sends <font face="monospace">#color:</font> with the default color, so
            I thought perhaps when subclassing <font face="monospace">BoxMorph</font>,
            I need to send <font face="monospace">#redrawNeeded</font>.
            I added the following instance method, but that didn't
            help. </div>
          <div><br>
          </div>
          <div><font face="monospace">initialize<br>
                  super initialize.<br>
                  self redrawNeeded</font><br>
          </div>
          <blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">
            <div>
              <blockquote type="cite">
                <div dir="ltr">
                  <div>
                    <div><br>
                    </div>
                    <div>I'd especially appreciate it if someone can
                      tell me how I could have determined the answer on
                      my own by looking at the source. I tried to do
                      that and failed.</div>
                  </div>
                </div>
              </blockquote>
              <p>How is it failing? Perhaps attach example of what you
                are trying to do ... it shouldn't be much more than
                implementing a #drawOn: method ...</p>
            </div>
          </blockquote>
          <div><br>
          </div>
          <div>If I create the class <font face="monospace">Try1</font>
            as a subclass of <font face="monospace">Morph</font>, add
            the following <font face="monospace">drawOn:</font> method,
            and evaluate <font face="monospace">Try1</font> new
            openInWorld in a workspace, it works as expected.</div>
        </div>
        <div><br clear="all">
        </div>
        <div><font face="monospace">drawOn: aCanvas<br>
                aCanvas class name print.<br>
                aCanvas strokeWidth: 10 color: Color red do: [<br>
                    aCanvas<br>
                        moveTo: 100 @ 100;<br>
                        lineTo: 200 @ 200<br>
                ].</font><br>
        </div>
        <div><br>
        </div>
        <div>If I create the class <font face="monospace">Try2</font>
          ais a subclass or <font face="monospace">PlacedMorph</font>,
          add the same <font face="monospace">drawOn:</font> method,
          and evaluate <font face="monospace">Try2 new openInWorld</font>
          in a workspace, it also works.</div>
        <div><br>
        </div>
        <div>But if I create the class <font face="monospace">Try3</font> as
          a subclass of <font face="monospace">BoxMorph</font>, add the
          same <font face="monospace">drawOn:</font> method, and
          evaluate <font face="monospace">Try3 new openInWorld</font>
          in a workspace, it does not work. I get the error <span style="font-family:monospace">"MessageNotUnderstood:
            HybridCanvas>>strokeWidth:color:do:"</span><font face="arial, sans-serif">. I understand that is because </font><font face="monospace">BoxMorph</font><font face="arial, sans-serif"> u</font>ses <font face="monospace">HybridCanvas</font> by default instead of <font face="monospace">VectorCanvas</font>, so I added the
          instance method <font face="monospace">requiresVectorCanvas</font>
          which returns <font face="monospace">true</font>. That
          eliminates the eror, but doesn't result in rendering anything.
          So it's not clear to me what I'm missing in my <font face="monospace">Try3</font> class.</div>
        <div><br>
        </div>
        <span class="gmail_signature_prefix">-- </span><br>
        <div dir="ltr" class="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.8px"><font face="arial, helvetica, sans-serif">Object
                            Computing, Inc.</font></span></div>
                    </div>
                  </div>
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>
    </blockquote>
  </div>

</blockquote></div><div><br clear="all"></div><div><br></div><span class="gmail_signature_prefix">-- </span><br><div dir="ltr" class="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.8px"><font face="arial, helvetica, sans-serif">Object Computing, Inc.</font></span></div></div></div></div></div></div></div></div>