<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <div class="moz-cite-prefix">That question worked well: turned out I
      had a focus-lost listener on the WebView that did a getHtmlText
      call on the editor. Apparently that causes this toggle behavior. </div>
    <div class="moz-cite-prefix"><br>
    </div>
    <div class="moz-cite-prefix">Thanks!<br>
    </div>
    <div class="moz-cite-prefix"><br>
    </div>
    <div class="moz-cite-prefix"><br>
    </div>
    <div class="moz-cite-prefix">On 2024-07-24 23:31, Andy Goryachev
      wrote:<br>
    </div>
    <blockquote type="cite"
cite="mid:BL3PR10MB6185E3BAEBFDEAB271779413E5AA2@BL3PR10MB6185.namprd10.prod.outlook.com">
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      <meta name="Generator"
        content="Microsoft Word 15 (filtered medium)">
      <style>@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}@font-face
        {font-family:"Yu Gothic";
        panose-1:2 11 4 0 0 0 0 0 0 0;}@font-face
        {font-family:Aptos;
        panose-1:2 11 0 4 2 2 2 2 2 4;}@font-face
        {font-family:"Iosevka Fixed SS16";
        panose-1:2 0 5 9 3 0 0 0 0 4;}@font-face
        {font-family:"Times New Roman \(Body CS\)";
        panose-1:2 11 6 4 2 2 2 2 2 4;}@font-face
        {font-family:"\@Yu Gothic";
        panose-1:2 11 4 0 0 0 0 0 0 0;}p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        font-size:10.0pt;
        font-family:"Aptos",sans-serif;}a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}span.EmailStyle21
        {mso-style-type:personal-reply;
        font-family:"Iosevka Fixed SS16";
        color:windowtext;}.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;
        mso-ligatures:none;}div.WordSection1
        {page:WordSection1;}</style>
      <div class="WordSection1">
        <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Iosevka Fixed SS16"">Hi,<o:p></o:p></span></p>
        <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Iosevka Fixed SS16""><o:p> </o:p></span></p>
        <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Iosevka Fixed SS16"">Please
            create a self-contained code example (SCCE) illustrating the
            issue.<o:p></o:p></span></p>
        <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Iosevka Fixed SS16""><o:p> </o:p></span></p>
        <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Iosevka Fixed SS16"">Thanks!
            <o:p></o:p></span></p>
        <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Iosevka Fixed SS16""><o:p> </o:p></span></p>
        <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Iosevka Fixed SS16"">-andy<o:p></o:p></span></p>
        <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Iosevka Fixed SS16""><o:p> </o:p></span></p>
        <div id="mail-editor-reference-message-container">
          <div>
            <div
style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
              <p class="MsoNormal" style="margin-bottom:12.0pt"><b><span
                    style="font-size:12.0pt;color:black">From:
                  </span></b><span style="font-size:12.0pt;color:black">openjfx-discuss
                  <a class="moz-txt-link-rfc2396E" href="mailto:openjfx-discuss-retn@openjdk.org"><openjfx-discuss-retn@openjdk.org></a> on behalf of
                  Tom Eugelink <a class="moz-txt-link-rfc2396E" href="mailto:tbee@tbee.org"><tbee@tbee.org></a><br>
                  <b>Date: </b>Wednesday, July 24, 2024 at 11:56<br>
                  <b>To: </b><a class="moz-txt-link-abbreviated" href="mailto:openjfx-discuss@openjdk.org">openjfx-discuss@openjdk.org</a>
                  <a class="moz-txt-link-rfc2396E" href="mailto:openjfx-discuss@openjdk.org"><openjfx-discuss@openjdk.org></a><br>
                  <b>Subject: </b>Re: HTMLEditor customization<o:p></o:p></span></p>
            </div>
            <div>
              <p class="MsoNormal"><span style="font-size:12.0pt">insertHTML
                  has the same peculiar behavior. <o:p></o:p></span></p>
            </div>
            <div>
              <p class="MsoNormal"><span style="font-size:12.0pt"><o:p> </o:p></span></p>
            </div>
            <div>
              <p class="MsoNormal"><span style="font-size:12.0pt">I've
                  added a button to the toolbar that calls
                  insertHTML/insertImage with an embedded image.<o:p></o:p></span></p>
            </div>
            <div>
              <p class="MsoNormal"><span style="font-size:12.0pt">-
                  click at the end of the html, click button: call is
                  unsuccessful (returns false)<o:p></o:p></span></p>
            </div>
            <div>
              <p class="MsoNormal"><span style="font-size:12.0pt">-
                  click at the end of the html, click button: call is
                  successful (returns true, image is added)<o:p></o:p></span></p>
            </div>
            <div>
              <div>
                <p class="MsoNormal"><span style="font-size:12.0pt">-
                    click at the end of the html, click button: call is
                    unsuccessful (returns false)<o:p></o:p></span></p>
              </div>
              <div>
                <p class="MsoNormal"><span style="font-size:12.0pt">-
                    click at the end of the html, click button: call is
                    successful (returns true, image is added)<o:p></o:p></span></p>
              </div>
              <p class="MsoNormal"><span style="font-size:12.0pt">... <o:p></o:p></span></p>
              <div>
                <p class="MsoNormal"><span style="font-size:12.0pt"><o:p> </o:p></span></p>
              </div>
              <div>
                <p class="MsoNormal"><span style="font-size:12.0pt">It
                    does not matter if it is an img-tag or a p-tag or
                    whatever, the alternating behavior is the same. Also
                    multiple clicks make no difference, all of them
                    either fail or succeed, it is the regaining of the
                    focus of the WebPage that makes the difference. It
                    can be any component that the focus is lost to, but
                    webview.requestFocus is not enough (it does not
                    really place the focus back to the webpage, e.g. the
                    toolbar buttons stay disabled).<o:p></o:p></span></p>
              </div>
              <div>
                <p class="MsoNormal"><span style="font-size:12.0pt"><o:p> </o:p></span></p>
              </div>
              <div>
                <p class="MsoNormal"><span style="font-size:12.0pt">Interestingly,
                    when the insert*-commands succeed, the
                    webpage.getHtml call returns an empty string, and
                    when they fail you get the actual HTML. But for the
                    rest none of the webPage methods make a difference.<o:p></o:p></span></p>
              </div>
              <div>
                <p class="MsoNormal"><span style="font-size:12.0pt"><o:p> </o:p></span></p>
              </div>
              <div>
                <p class="MsoNormal"><span style="font-size:12.0pt">It
                    would be nice to understand why the wrapped browser
                    alternates between two states.<o:p></o:p></span></p>
              </div>
              <div>
                <p class="MsoNormal"><span style="font-size:12.0pt"><o:p> </o:p></span></p>
              </div>
              <div>
                <p class="MsoNormal"><span style="font-size:12.0pt"><o:p> </o:p></span></p>
              </div>
            </div>
            <div>
              <p class="MsoNormal"><span style="font-size:12.0pt"><o:p> </o:p></span></p>
            </div>
            <div>
              <p class="MsoNormal"><span style="font-size:12.0pt">On
                  2024-07-24 09:15, Tom Eugelink wrote:<o:p></o:p></span></p>
            </div>
            <blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
              <div>
                <p class="MsoNormal"><span style="font-size:12.0pt">Apparently
                    I had checked out an old repository where that code
                    was missing. Should have looked again in the URL
                    before posting.<o:p></o:p></span></p>
              </div>
              <div>
                <p class="MsoNormal"><span style="font-size:12.0pt"><o:p> </o:p></span></p>
              </div>
              <div>
                <p class="MsoNormal"><span style="font-size:12.0pt">Anyhow,
                    I've progressed to the point where I can insert an
                    image using the W3C insertImage command. Works fine,
                    but it is picky when it can be executed. However,
                    the queryCommandEnabled does not return a correct
                    value; the true or false does not actually match
                    whether the insertImage command will succeed. The
                    value is only correct after focus is moved out of
                    the WebView, but that doesn't work practically (you
                    can hardly bounce the focus after every keystroke).
                    <o:p></o:p></span></p>
              </div>
              <div>
                <p class="MsoNormal"><span style="font-size:12.0pt"><o:p> </o:p></span></p>
              </div>
              <div>
                <p class="MsoNormal"><span style="font-size:12.0pt">I'll
                    give the insertHtml command a try.<o:p></o:p></span></p>
              </div>
              <div>
                <p class="MsoNormal"><span style="font-size:12.0pt"><o:p> </o:p></span></p>
              </div>
              <div>
                <p class="MsoNormal"><span style="font-size:12.0pt"><o:p> </o:p></span></p>
              </div>
              <div>
                <p class="MsoNormal"><span style="font-size:12.0pt">On
                    2024-07-22 17:27, Andy Goryachev wrote:<o:p></o:p></span></p>
              </div>
              <blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
                <div>
                  <p style="margin:0in;background:white"><span
style="font-family:"Iosevka Fixed SS16";color:black">   
                    </span><span
style="font-family:"Iosevka Fixed SS16";color:#FF2600">/**</span><o:p></o:p></p>
                  <p style="margin:0in;background:white"><span
style="font-family:"Iosevka Fixed SS16";color:#FF2600">     *
                      Represents commands that can be passed into the
                      HTMLEditor web engine.</span><o:p></o:p></p>
                  <p style="margin:0in;background:white"><span
style="font-family:"Iosevka Fixed SS16";color:#FF2600">     */</span><o:p></o:p></p>
                  <p style="margin:0in;background:white"><span
style="font-family:"Iosevka Fixed SS16";color:black">   
                    </span><span
style="font-family:"Iosevka Fixed SS16";color:#4E8F00">public</span><span
style="font-family:"Iosevka Fixed SS16";color:black">
                    </span><span
style="font-family:"Iosevka Fixed SS16";color:#4E8F00">enum</span><span
style="font-family:"Iosevka Fixed SS16";color:black">
                      <span style="background:#D4D4D4">Command</span> {</span><o:p></o:p></p>
                  <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Iosevka Fixed SS16""> </span><o:p></o:p></p>
                  <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Iosevka Fixed SS16"">line
                      1167</span><o:p></o:p></p>
                  <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Iosevka Fixed SS16""> </span><o:p></o:p></p>
                  <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Iosevka Fixed SS16"">-andy</span><o:p></o:p></p>
                  <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Iosevka Fixed SS16""> </span><o:p></o:p></p>
                  <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Iosevka Fixed SS16""> </span><o:p></o:p></p>
                  <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Iosevka Fixed SS16""> </span><o:p></o:p></p>
                  <div id="mail-editor-reference-message-container">
                    <div>
                      <div
style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
                        <p class="MsoNormal"
                          style="margin-bottom:12.0pt"><b><span
                              style="font-size:12.0pt;color:black">From:
                            </span></b><span
                            style="font-size:12.0pt;color:black">openjfx-discuss
                            <a
href="mailto:openjfx-discuss-retn@openjdk.org" moz-do-not-send="true">
                              <openjfx-discuss-retn@openjdk.org></a>
                            on behalf of Tom Eugelink <a
                              href="mailto:tbee@tbee.org"
                              moz-do-not-send="true">
                              <tbee@tbee.org></a><br>
                            <b>Date: </b>Saturday, July 20, 2024 at
                            00:21<br>
                            <b>To: </b><a
                              href="mailto:openjfx-discuss@openjdk.org"
                              moz-do-not-send="true"
                              class="moz-txt-link-freetext">openjfx-discuss@openjdk.org</a>
                            <a href="mailto:openjfx-discuss@openjdk.org"
                              moz-do-not-send="true"><openjfx-discuss@openjdk.org></a><br>
                            <b>Subject: </b>Re: HTMLEditor
                            customization</span><o:p></o:p></p>
                      </div>
                      <div>
                        <p class="MsoNormal"
                          style="margin-bottom:12.0pt"><span
                            style="font-size:11.0pt">It seems those 10
                            year old hacks are not working anymore. All
                            of the 'selection' objects in javascript
                            appear to be either null, or unwilling to
                            return a range.<br>
                            <br>
                            The other approach would be to extend the
                            HTMLEditor implementation, because why not?
                            While investigating that approach I got
                            confused:<br>
                            <a
href="https://github.com/javafxports/openjdk-jfx/blob/develop/modules/javafx.web/src/main/java/javafx/scene/web/HTMLEditorSkin.java"
                              moz-do-not-send="true"
                              class="moz-txt-link-freetext">https://github.com/javafxports/openjdk-jfx/blob/develop/modules/javafx.web/src/main/java/javafx/scene/web/HTMLEditorSkin.java</a><br>
                            import static
                            javafx.scene.web.HTMLEditorSkin.Command.*;<br>
                            <br>
                            Where did the Command enum hide? It should
                            be in the HTMLEditorSkin class?<br>
                            <br>
                            <br>
                            On 2024-07-19 07:37, Tom Eugelink wrote:<br>
                            > I was wondering; is the HTML editor
                            still at the point where any customization
                            is done by executing javascript code via the
                            WebEngine? I find some 10 year old or so
                            articles on how to insert things at the
                            cursor position using that approach. And
                            inserting additional buttons in the toolbar
                            by finding it via its CSS class?<br>
                            ><br>
                            > Because the vanilla version of the HTML
                            editor is limited; no image support and all.<br>
                            ><br>
                            > Regards, Tom<br>
                            ><br>
                            ></span><o:p></o:p></p>
                      </div>
                    </div>
                  </div>
                </div>
              </blockquote>
              <p><o:p> </o:p></p>
            </blockquote>
            <p><o:p> </o:p></p>
          </div>
        </div>
      </div>
    </blockquote>
    <p><br>
    </p>
  </body>
</html>