<div dir="ltr"><div>I looked at the code and I'm really not sure what to do. <br></div><div>I don't think understand what is going on in the code, and what is supposed to go on.</div><div><br></div><div>Best,</div><div>Karl</div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Jul 4, 2019 at 10:33 PM Bob Arning <<a href="mailto:arning315@comcast.net">arning315@comcast.net</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
  
    
  
  <div bgcolor="#FFFFFF">
    <font face="Georgia">I think it's not really broken - adjustRightX
      is only used when wrapFlag is false, which is probably not the
      originally intended use for TextContainers. You could add a method
      or two to TextContainer to see if it would work when not
      wrappping.</font><br>
    <br>
    <div class="gmail-m_856221375151308230moz-cite-prefix">On 7/4/19 4:00 PM, karl ramberg wrote:<br>
    </div>
    <blockquote type="cite">
      
      <div dir="ltr">
        <div dir="ltr"><br>
        </div>
        <br>
        <div class="gmail_quote">
          <div dir="ltr" class="gmail_attr">On Thu, Jul 4, 2019 at 8:50
            PM karl ramberg <<a href="mailto:karlramberg@gmail.com" target="_blank">karlramberg@gmail.com</a>>
            wrote:<br>
          </div>
          <blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
            <div dir="ltr">
              <div>The code in NewParagraph>>adjustRightX is
                broken. <br>
              </div>
              <div>It seem to expect a container that is a Rectangle and
                not a TextContainer.</div>
              <div>This method must be made to work with TextContainer.<br>
              </div>
              <div><br>
              </div>
              <div>NewParagraph>>adjustRightX<br>
                | shrink |<br>
                shrink := container right - maxRightX.<br>
                lines do: [:line | line paddingWidth: (line paddingWidth
                - shrink)].<br>
                container := container withRight: maxRightX + self
                caretWidth.</div>
              <div><br>
              </div>
              <div>Best,</div>
              <div>Karl</div>
            </div>
          </blockquote>
          <div><br>
          </div>
          <div>NewParagraph seems to sometimes have Rectangle as
            container  and sometimes a TextContainer.</div>
          <div>I'm not sure what to do about that...</div>
          <div><br>
          </div>
          <div>Best,</div>
          <div>Karl<br>
          </div>
          <blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
            <div dir="ltr">
              <div><br>
              </div>
            </div>
            <br>
            <div class="gmail_quote">
              <div dir="ltr" class="gmail_attr">On Wed, Jul 3, 2019 at
                8:26 PM Rein, Patrick <<a href="mailto:Patrick.Rein@hpi.de" target="_blank">Patrick.Rein@hpi.de</a>>
                wrote:<br>
              </div>
              <blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi Karl,<br>
                <br>
                I agree that the drag and drop handling of TextMorphs is
                somewhat complex by now.  While looking into the issue I
                found two kinds of issues: some more general ones and
                one related to layouting.<br>
                <br>
                ## General Occlusion Bug<br>
                <br>
                I have to admit that I was not aware of the avoid
                occlusions feature. I dug into it a little and<br>
                found TextContainer and the class comment which explains
                the feature. Then I constructed<br>
                the following example:<br>
                <br>
                o := Morph new.<br>
                tm := TextMorph new<br>
                        contents: 'This is a very long text with a lot
                of characters<br>
                spanning multiple lines overall and throughout the<br>
                place in order to trigger the occlusion thing';<br>
                        yourself.<br>
                m := RectangleMorph new.<br>
                m position: tm topLeft + (10@10).<br>
                tm occlusionsOnOff.<br>
                o addMorph: tm.<br>
                o addMorph: m.<br>
                o openInWorld.<br>
                <br>
                I tried it in trunk and Squeak 3.8 and in both it
                results in errors in NewParagraph>>#adjustRightX
                as<br>
                it expects container to behave like a rectangle.<br>
                <br>
                However, the root cause seems to be that #adjustRightX
                does not make sense when having a fixed<br>
                TextContainer as it describes the individual rectangles
                in which the text can be set. One solution is<br>
                to set `tm wrapFlag: true` before turning
                avoidOcclusions on (otherwise #wrapFlag triggers a
                relayout<br>
                without tm having an owner which does not work...).<br>
                <br>
                To make this more robust I would propose:<br>
                1.) When activating occlusion we also set the wrapFlag<br>
                2.) We do not try to avoid occlusions as long as the
                morph does not have an owner yet.<br>
                <br>
                ## Text Anchor Related<br>
                <br>
                Maybe this is more what you were thinking about Karl: I
                found that when having the above example<br>
                plus an anchored morph which is layouted inline most
                things work fine. Except for the layout issue<br>
                you can see in the attachment (the first morph in the
                third line is the anchored morph, the second one<br>
                is the m from the example above). The second part of the
                third line does not adhere to the offset of the<br>
                first part of the line. @Karl: Did you refer to that?
                (Not sure how to fix this yet...)<br>
                <br>
                Bests<br>
                Patrick<br>
                ________________________________________<br>
                From: Squeak-dev <<a href="mailto:squeak-dev-bounces@lists.squeakfoundation.org" target="_blank">squeak-dev-bounces@lists.squeakfoundation.org</a>>
                on behalf of karl ramberg <<a href="mailto:karlramberg@gmail.com" target="_blank">karlramberg@gmail.com</a>><br>
                Sent: Monday, July 1, 2019 11:44:34 AM<br>
                To: Chris Muller<br>
                Cc: The general-purpose Squeak developers list<br>
                Subject: Re: [squeak-dev] Proposal: Morphs in Text<br>
                <br>
                One big issue with the drag and drop is that it is often
                not clear which morph one drop into.<br>
                There are so many layers of morphs in a text window so
                it gets confusing to know which morph to actually<br>
                enable to accepting the drop.<br>
                <br>
                But drag and drop are probably a separate issue from
                text anchors constructed from<br>
                code. Just don't break it to badly  :-)<br>
                <br>
                <br>
                Best,<br>
                Karl<br>
                <br>
                <br>
                <br>
                Best.<br>
                Karl<br>
                <br>
                <br>
                <br>
                On Mon, Jul 1, 2019 at 2:19 AM Chris Muller <<a href="mailto:ma.chris.m@gmail.com" target="_blank">ma.chris.m@gmail.com</a><mailto:<a href="mailto:ma.chris.m@gmail.com" target="_blank">ma.chris.m@gmail.com</a>>>
                wrote:<br>
                > I'm a little late here.<br>
                > TextMorph does not really need TextAnchor I think.<br>
                > You can just drop morphs on the text and select
                avoid occlusions in the menu.<br>
                > What are the use of text anchors instead just
                dropped in morphs ?<br>
                > I filed in TextAnchorPlacement change set and it
                interferes somewhat with the avoid occlusions functions.<br>
                <br>
                I was wondering about the 'avoid occlusions' but spent
                all my focus on<br>
                the alignment testing, thanks for testing that too!<br>
                <br>
                We should not break that.  I like this new alignment
                capability, but<br>
                classic DTP text-handling is one of Squeak's most
                impressive<br>
                capabilities.  Hopefully an easy fix..?<br>
                <br>
                <br>
                 - Chris<br>
                <br>
              </blockquote>
            </div>
          </blockquote>
        </div>
      </div>
      <br>
      <fieldset class="gmail-m_856221375151308230mimeAttachmentHeader"></fieldset>
      <pre class="gmail-m_856221375151308230moz-quote-pre"></pre>
    </blockquote>
    <br>
  </div>

<br>
</blockquote></div>