<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <div class="moz-cite-prefix">Hi Graeme,</div>
    <div class="moz-cite-prefix"><br>
    </div>
    <div class="moz-cite-prefix">I'm not sure if this is going to answer
      your questions, but since you earlier mentioned compose window I
      may know why you feel it is not working.<br>
    </div>
    <div class="moz-cite-prefix"><br>
    </div>
    <div class="moz-cite-prefix">browser.windows is currently monitoring
      the main Thunderbird windows, or popup windows created using
      browser.windows.create({ type: "popup" }) (which are by extension
      main windows).</div>
    <div class="moz-cite-prefix"><br>
    </div>
    <div class="moz-cite-prefix">The compose windows are not hooked up
      yet, and we'll have to figure out a smart way to integrate those.
      browser.windows. is implemented for compatibility with
      WebExtensions, and mainly points to the content windows (i.e.
      websites loaded as tabs).</div>
    <div class="moz-cite-prefix"><br>
    </div>
    <div class="moz-cite-prefix">We could possibly extend
      browser.windows.create() to have a { type: "compose" } option,
      though I am not sure how the concept of windows having tabs would
      apply to that. We could also have a separate API that allows to
      interact with compose windows.</div>
    <div class="moz-cite-prefix"><br>
    </div>
    <div class="moz-cite-prefix">What specifically did you want to do
      with the compose window?<br>
    </div>
    <div class="moz-cite-prefix"><br>
    </div>
    <div class="moz-cite-prefix">This might be something to discuss
      further on discourse or maildev. Maybe Geoff already has an idea
      though :)<br>
    </div>
    <div class="moz-cite-prefix"><br>
    </div>
    <div class="moz-cite-prefix">Philipp<br>
    </div>
    <div class="moz-cite-prefix"><br>
    </div>
    <div class="moz-cite-prefix">On 12/17/18 11:58 AM, Graeme wrote:<br>
    </div>
    <blockquote type="cite"
      cite="mid:619cda97-2696-589f-6123-b54e49a6de39@gmail.com">
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      <p>I tried </p>
      <pre> browser.tabs.onCreated.addListener(newTab);
</pre>
      <p>and it worked, it ran newTab <br>
      </p>
      <p>I tried </p>
      <pre> browser.windows.onCreated.addListener(newWindow);
</pre>
      <p>and it didn't work although these events look exactly the same.
        What is the difference? <br>
      </p>
      Blessings
      <div class="moz-cite-prefix">On 08/12/2018 00:50, Ben Bucksch
        wrote:<br>
      </div>
      <blockquote type="cite"
        cite="mid:d9386bc5-0ad8-3101-228e-29e0fe647d71@beonex.com">
        <meta http-equiv="Content-Type" content="text/html;
          charset=UTF-8">
        <div class="moz-cite-prefix">Given that you run in Thunderbird,
          you can assume a modern JS engine, and you can also use
          async/await for any function that returns Promises. Googling
          "javascript async await" should give you plenty of
          introductions.</div>
        <div class="moz-cite-prefix"><br>
        </div>
        <div class="moz-cite-prefix">Essentially, something like this
          should work:</div>
        <div class="moz-cite-prefix">
          <pre>async function foo() {
  var myWindow  = await browser.windows.getCurrent();
}</pre>
        </div>
        <div class="moz-cite-prefix"><br>
        </div>
        <div class="moz-cite-prefix">HTH</div>
        <div class="moz-cite-prefix"><br>
        </div>
        <div class="moz-cite-prefix">Ben<br>
        </div>
        <div class="moz-cite-prefix"><br>
        </div>
        <div class="moz-cite-prefix">Geoff Lankow wrote on 08.12.18
          01:43:<br>
        </div>
        <blockquote type="cite"
          cite="mid:7273445f-1536-e625-58ee-830dd4f711b7@thunderbird.net">
          <p>That's a <a
href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Using_promises"
              moz-do-not-send="true">Promise</a>, Graeme. Almost all
            browser.something.… methods return them.</p>
          <p>GL<br>
          </p>
          <div class="moz-cite-prefix">On 8/12/18 00:49, Graeme wrote:<br>
          </div>
          <blockquote type="cite"
            cite="mid:ae732bce-873a-826c-43b6-bf69c9426e33@gmail.com">
            <p>I've looked at the docs.</p>
            <p>I actually found a lot of help in Owl... I have a
              "working" extension and options that work. <br>
            </p>
            <p>Now I'm trying to get a listener working that will tell
              me when a window opens, specifically a compose window...
              but hey, any window would be a good start. <br>
            </p>
            <p>I found in docs, reference to the browser.windows API and
              a function getCurrent(). I thought that would be a good
              test. There's an event onCreated as well but when I tried
              <br>
            </p>
            <p>var MyWindow = browser.windows.getCurrent();</p>
            <p>according to docs, MyWindow should be an array with a
              whole lot of info. But when I put <br>
            </p>
            <p>console.dir(MyWindow);</p>
            <p>I got <br>
            </p>
            <p><span class="message-body-wrapper"><span
                  class="message-flex-body"><span
                    class="message-body&#xA;&#xA; devtools-monospace"> </span></span></span></p>
            <div class="tree object-inspector" role="tree" tabindex="0">
              <div id="Symbol(server1.conn1.obj244)" class="tree-node"
                role="treeitem" aria-level="1" aria-expanded="true"
                data-expandable="true">
                <div class="node object-node"><img class="arrow
                    expanded" moz-do-not-send="true"><span
                    data-link-actor-id="server1.conn1.obj244"
                    class="objectBox objectBox-object"><span
                      class="objectTitle">Promise</span><span
                      class="objectLeftBrace"> { </span><span
                      class="objectBox objectBox-string">"pending"</span><span
                      class="objectRightBrace"> }</span></span></div>
              </div>
              <div id="Symbol(server1.conn1.obj244/<state>)"
                class="tree-node" role="treeitem" aria-level="2"
                data-expandable="false"><span class="tree-indent"></span>
                <div class="node object-node"><span class="object-label">   
                    <state></span><span class="object-delimiter">:
                  </span><span class="objectBox objectBox-string">"pending"</span></div>
              </div>
              <div id="Symbol(server1.conn1.obj244/<prototype>)"
                class="tree-node" role="treeitem" aria-level="2"
                aria-expanded="true" data-expandable="true"><span
                  class="tree-indent"></span>
                <div
                  id="Symbol(server1.conn1.obj244/<prototype>/catch)"
                  class="tree-node" role="treeitem" aria-level="3"
                  aria-expanded="false" data-expandable="true">    <img
                    class="arrow expanded" moz-do-not-send="true"><span
                    class="object-label"><prototype></span><span
                    class="object-delimiter">: </span><span
                    data-link-actor-id="server1.conn1.obj247"
                    class="objectBox objectBox-object"><span
                      class="objectTitle">PromiseProto</span></span><span
                    class="tree-indent"></span><span class="tree-indent">​</span>
                  <div
                    id="Symbol(server1.conn1.obj244/<prototype>/constructor)"
                    class="tree-node" role="treeitem" aria-level="3"
                    aria-expanded="false" data-expandable="true"><img
                      class="arrow" moz-do-not-send="true"><span
                      class="object-label">        catch</span><span
                      class="object-delimiter">: </span><span
                      data-link-actor-id="server1.conn1.obj253"
                      class="objectBox objectBox-function" dir="ltr"><span
                        class="objectTitle">function </span>catch()</span><span
                      class="tree-indent"></span><span
                      class="tree-indent">​</span>
                    <div
                      id="Symbol(server1.conn1.obj244/<prototype>/finally)"
                      class="tree-node" role="treeitem" aria-level="3"
                      aria-expanded="false" data-expandable="true"><img
                        class="arrow" moz-do-not-send="true"><span
                        class="object-label">        constructor</span><span
                        class="object-delimiter">: </span><span
                        data-link-actor-id="server1.conn1.obj255"
                        class="objectBox objectBox-function" dir="ltr"><span
                          class="objectTitle">function </span>Promise()</span><span
                        class="tree-indent"></span><span
                        class="tree-indent">​</span>
                      <div
                        id="Symbol(server1.conn1.obj244/<prototype>/then)"
                        class="tree-node" role="treeitem" aria-level="3"
                        aria-expanded="false" data-expandable="true"><img
                          class="arrow" moz-do-not-send="true"><span
                          class="object-label">        finally</span><span
                          class="object-delimiter">: </span><span
                          data-link-actor-id="server1.conn1.obj254"
                          class="objectBox objectBox-function" dir="ltr"><span
                            class="objectTitle">function </span>finally()</span><span
                          class="tree-indent"></span><span
                          class="tree-indent">​</span>
                        <div
                          id="Symbol(server1.conn1.obj244/<prototype>/symbol-0)"
                          class="tree-node" role="treeitem"
                          aria-level="3" data-expandable="false">       
                          <img class="arrow" moz-do-not-send="true"><span
                            class="object-label">then</span><span
                            class="object-delimiter">: </span><span
                            data-link-actor-id="server1.conn1.obj252"
                            class="objectBox objectBox-function"
                            dir="ltr"><span class="objectTitle">function
                            </span>then()</span><span
                            class="tree-indent"></span><span
                            class="tree-indent">​</span>
                          <div
                            id="Symbol(server1.conn1.obj244/<prototype>/<prototype>)"
                            class="tree-node" role="treeitem"
                            aria-level="3" aria-expanded="false"
                            data-expandable="true"><span
                              class="object-label">       
                              Symbol(Symbol.toStringTag)</span><span
                              class="object-delimiter">: </span><span
                              class="objectBox objectBox-string">"Promise"</span><span
                              class="tree-indent"></span><span
                              class="tree-indent">​</span>
                            <div class="node object-node lessen"><img
                                class="arrow" moz-do-not-send="true"><span
                                class="object-label">       
                                <prototype></span><span
                                class="object-delimiter">: </span><span
data-link-actor-id="server1.conn1.obj251" class="objectBox
                                objectBox-object"><span
                                  class="objectTitle">Object</span><span
                                  class="objectLeftBrace"> { </span><span
                                  class="more-ellipsis" title="more…">…</span><span
                                  class="objectRightBrace"> }</span></span></div>
                            <div class="node object-node lessen"><span
                                data-link-actor-id="server1.conn1.obj251"
                                class="objectBox objectBox-object"><span
                                  class="objectRightBrace">What did I do
                                  wrong? Is there a place to ask more
                                  about how these API work? <br>
                                </span></span></div>
                            <br>
                            <div class="node object-node lessen"><span
                                data-link-actor-id="server1.conn1.obj251"
                                class="objectBox objectBox-object"><span
                                  class="objectRightBrace">Blessings<br>
                                  Graeme<br>
                                </span></span></div>
                          </div>
                        </div>
                      </div>
                    </div>
                  </div>
                </div>
              </div>
            </div>
            <div class="moz-cite-prefix">On 03/12/2018 06:00, Ben
              Bucksch wrote:<br>
            </div>
            <blockquote type="cite"
              cite="mid:20f5c695-a720-3a75-55eb-e46c0f529df6@beonex.com">Graeme
              wrote on 03.12.18 15:50: <br>
              <blockquote type="cite"> <br>
                I would really like to shift to [WebExtension for
                Thunderbird] which seems the addon of the future but
                where is there any help for this? <br>
                <br>
                Could someone do a summary of the conversion effort for
                this one please? <br>
              </blockquote>
              <br>
              <br>
              First off, it's a completely different type of addon, so
              be prepared to have to change a lot. <br>
              <br>
              For a general intro to WebExtensions, see the Firefox
              pages: <br>
              <br>
              <a class="moz-txt-link-freetext"
                href="https://developer.mozilla.org/docs/Mozilla/Add-ons/WebExtensions"
                moz-do-not-send="true">https://developer.mozilla.org/docs/Mozilla/Add-ons/WebExtensions</a>
              <br>
              <br>
              <a class="moz-txt-link-freetext"
href="https://developer.mozilla.org/docs/Mozilla/Add-ons/WebExtensions/What_are_WebExtensions"
                moz-do-not-send="true">https://developer.mozilla.org/docs/Mozilla/Add-ons/WebExtensions/What_are_WebExtensions</a>
              <br>
              <br>
              However, the APIs are different between Thunderbird and
              Firefox. Some Firefox APIs work in Thunderbird (just try
              it), other Firefox APIs do not work, and Thunderbird has a
              few specific APIs added. Here are some docs about the
              latter ones: <br>
              <br>
              <a class="moz-txt-link-freetext"
                href="https://thunderbird-webextensions.readthedocs.io/en/latest/"
                moz-do-not-send="true">https://thunderbird-webextensions.readthedocs.io/en/latest/</a>
              <br>
              <br>
              There are not many WebExtensions for Thunderbird yet, our
              own Owl is one of the first that I know of, so you're in
              new territory. Don't expect a smooth ride. But to be one
              the pioneers can be exciting, too. <br>
              <br>
              HTH, <br>
              <br>
              Ben <br>
              <br>
              _______________________________________________ <br>
              tb-planning mailing list <br>
              <a class="moz-txt-link-abbreviated"
                href="mailto:tb-planning@mozilla.org"
                moz-do-not-send="true">tb-planning@mozilla.org</a> <br>
              <a class="moz-txt-link-freetext"
                href="https://mail.mozilla.org/listinfo/tb-planning"
                moz-do-not-send="true">https://mail.mozilla.org/listinfo/tb-planning</a>
              <br>
              <br>
            </blockquote>
            <br>
            <fieldset class="mimeAttachmentHeader"></fieldset>
            <pre class="moz-quote-pre" wrap="">_______________________________________________
tb-planning mailing list
<a class="moz-txt-link-abbreviated" href="mailto:tb-planning@mozilla.org" moz-do-not-send="true">tb-planning@mozilla.org</a>
<a class="moz-txt-link-freetext" href="https://mail.mozilla.org/listinfo/tb-planning" moz-do-not-send="true">https://mail.mozilla.org/listinfo/tb-planning</a>
</pre>
          </blockquote>
          <br>
          <fieldset class="mimeAttachmentHeader"></fieldset>
          <pre class="moz-quote-pre" wrap="">_______________________________________________
tb-planning mailing list
<a class="moz-txt-link-abbreviated" href="mailto:tb-planning@mozilla.org" moz-do-not-send="true">tb-planning@mozilla.org</a>
<a class="moz-txt-link-freetext" href="https://mail.mozilla.org/listinfo/tb-planning" moz-do-not-send="true">https://mail.mozilla.org/listinfo/tb-planning</a>
</pre>
        </blockquote>
        <p><br>
        </p>
        <br>
        <fieldset class="mimeAttachmentHeader"></fieldset>
        <pre class="moz-quote-pre" wrap="">_______________________________________________
tb-planning mailing list
<a class="moz-txt-link-abbreviated" href="mailto:tb-planning@mozilla.org" moz-do-not-send="true">tb-planning@mozilla.org</a>
<a class="moz-txt-link-freetext" href="https://mail.mozilla.org/listinfo/tb-planning" moz-do-not-send="true">https://mail.mozilla.org/listinfo/tb-planning</a>
</pre>
      </blockquote>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <pre class="moz-quote-pre" wrap="">_______________________________________________
tb-planning mailing list
<a class="moz-txt-link-abbreviated" href="mailto:tb-planning@mozilla.org">tb-planning@mozilla.org</a>
<a class="moz-txt-link-freetext" href="https://mail.mozilla.org/listinfo/tb-planning">https://mail.mozilla.org/listinfo/tb-planning</a>
</pre>
    </blockquote>
    <p><br>
    </p>
  </body>
</html>