<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <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>
  </body>
</html>