Bug 458655 - Position Mac About dialog somewhere better than 0:0, r=standard8
authorPhil Ringnalda <philringnalda@gmail.com>
Mon, 20 Oct 2008 15:06:20 -0700
changeset 649 723d31daabb32100b44d41a05082ae1b9288500c
parent 648 8d3721ac95ed92903de8ce92fb609b9552ea799e
child 650 3c28c613fa2a976c0bd7c9f18a6c3fcf9ff55abb
push idunknown
push userunknown
push dateunknown
reviewersstandard8
bugs458655
Bug 458655 - Position Mac About dialog somewhere better than 0:0, r=standard8 Also, for bonus points, move the inline script out of the XUL.
mail/base/content/aboutDialog.js
mail/base/content/aboutDialog.xul
mail/base/jar.mn
new file mode 100644
--- /dev/null
+++ b/mail/base/content/aboutDialog.js
@@ -0,0 +1,86 @@
+# ***** BEGIN LICENSE BLOCK *****
+# Version: MPL 1.1/GPL 2.0/LGPL 2.1
+#
+# The contents of this file are subject to the Mozilla Public License Version
+# 1.1 (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+# http://www.mozilla.org/MPL/
+#
+# Software distributed under the License is distributed on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+#
+# The Original Code is Mozilla Thunderbird about dialog.
+#
+# The Initial Developer of the Original Code is
+# Blake Ross (blaker@netscape.com).
+# Portions created by the Initial Developer are Copyright (C) 2002
+# the Initial Developer. All Rights Reserved.
+#
+# Contributor(s):
+#
+# Alternatively, the contents of this file may be used under the terms of
+# either the GNU General Public License Version 2 or later (the "GPL"), or
+# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+# in which case the provisions of the GPL or the LGPL are applicable instead
+# of those above. If you wish to allow use of your version of this file only
+# under the terms of either the GPL or the LGPL, and not to allow others to
+# use your version of this file under the terms of the MPL, indicate your
+# decision by deleting the provisions above and replace them with the notice
+# and other provisions required by the LGPL or the GPL. If you do not delete
+# the provisions above, a recipient may use your version of this file under
+# the terms of any one of the MPL, the GPL or the LGPL.
+#
+# ***** END LICENSE BLOCK *****
+
+var gSelectedPage = 0;
+
+function onLoad() {
+  document.getElementById("userAgent").value = navigator.userAgent;
+
+  var button = document.documentElement.getButton("extra2");
+  button.setAttribute("label",
+                      document.documentElement.getAttribute("creditslabel"));
+  button.setAttribute("accesskey",
+                      document.documentElement.getAttribute("creditsaccesskey"));
+  button.addEventListener("command", switchPage, false);
+  document.documentElement.getButton("accept").focus();
+#ifdef XP_MACOSX
+  // The dialog may not be sized at this point, and we need its width to
+  // calculate its position.
+  window.sizeToContent();
+  window.moveTo((screen.availWidth / 2) - (window.outerWidth / 2),
+                screen.availHeight / 5);
+#endif
+}
+
+function onUnload(aEvent) {
+  if (aEvent.target != document)
+    return;
+  document.getElementById("creditsIframe").setAttribute("src", "");
+}
+
+function switchPage(aEvent) {
+  var button = aEvent.target;
+  if (button.localName != "button")
+    return;
+
+  var iframe = document.getElementById("creditsIframe");
+  if (gSelectedPage == 0) {
+    iframe.setAttribute("src", "chrome://messenger/content/credits.xhtml");
+    button.setAttribute("label",
+                        document.documentElement.getAttribute("aboutlabel"));
+    button.setAttribute("accesskey",
+                        document.documentElement.getAttribute("aboutaccesskey"));
+    gSelectedPage = 1;
+  } else {
+    iframe.setAttribute("src", "");
+    button.setAttribute("label",
+                        document.documentElement.getAttribute("creditslabel"));
+    button.setAttribute("accesskey",
+                        document.documentElement.getAttribute("creditsaccesskey"));
+    gSelectedPage = 0;
+  }
+  document.getElementById("modes").setAttribute("selectedIndex", gSelectedPage);
+}
--- a/mail/base/content/aboutDialog.xul
+++ b/mail/base/content/aboutDialog.xul
@@ -54,62 +54,18 @@
 #else
         buttons="accept,extra2"
 #endif
         onload="onLoad();" onunload="onUnload(event);"
         title="&aboutDialog.title;"
         creditslabel="&credits.label;" creditsaccesskey="&credits.accesskey;"
         aboutlabel="&aboutLink.label;" aboutaccesskey="&aboutLink.accesskey;">
 
-    <script type="application/x-javascript">
-      <![CDATA[
-        var gSelectedPage = 0;
-
-        function onLoad() {
-          document.getElementById("userAgent").value = navigator.userAgent;
-
-          var button = document.documentElement.getButton("extra2");
-          button.setAttribute("label", document.documentElement.getAttribute("creditslabel"));
-          button.setAttribute("accesskey", document.documentElement.getAttribute("creditsaccesskey"));
-          button.addEventListener("command", switchPage, false);
-          document.documentElement.getButton("accept").focus();
-        }
-
-        function onUnload(aEvent)
-        {
-          if (aEvent.target != document)
-            return;
-          var iframe = document.getElementById("creditsIframe");
-          iframe.setAttribute("src", "");
-        }
-
-        function switchPage(aEvent)
-        {
-          var button = aEvent.target;
-          if (button.localName != "button")
-            return;
-
-          var iframe = document.getElementById("creditsIframe");
-          if (gSelectedPage == 0) { 
-            iframe.setAttribute("src", "chrome://messenger/content/credits.xhtml");
-            button.setAttribute("label", document.documentElement.getAttribute("aboutlabel"));
-            button.setAttribute("accesskey", document.documentElement.getAttribute("aboutaccesskey"));
-            gSelectedPage = 1;
-          }
-          else {
-            iframe.setAttribute("src", ""); 
-            button.setAttribute("label", document.documentElement.getAttribute("creditslabel"));
-            button.setAttribute("accesskey", document.documentElement.getAttribute("creditsaccesskey"));
-            gSelectedPage = 0;
-          }
-          var modes = document.getElementById("modes");
-          modes.setAttribute("selectedIndex", gSelectedPage);
-        }
-      ]]>
-    </script>
+    <script type="application/x-javascript"
+            src="chrome://messenger/content/aboutDialog.js"/>
 
     <deck id="modes" flex="1">
       <vbox flex="1" id="clientBox">
 #expand <label id="versionField" value="&aboutVersion; __MOZ_APP_VERSION__"/>
         <description id="copyright">&copyrightText;</description>
         <textbox id="userAgent" multiline="true" readonly="true" flex="1"/>
       </vbox>
 
--- a/mail/base/jar.mn
+++ b/mail/base/jar.mn
@@ -27,16 +27,17 @@ messenger.jar:
 *   content/messenger/SearchDialog.xul              (content/SearchDialog.xul)
 *   content/messenger/ABSearchDialog.xul            (content/ABSearchDialog.xul)
 *   content/messenger/ABSearchDialog.js             (content/ABSearchDialog.js)
 *   content/messenger/FilterListDialog.xul          (content/FilterListDialog.xul)
 *   content/messenger/FilterListDialog.js           (content/FilterListDialog.js)
 *   content/messenger/subscribe.xul                 (content/subscribe.xul)
     content/messenger/subscribe.js                  (content/subscribe.js)
 *   content/messenger/aboutDialog.xul               (content/aboutDialog.xul)
+*   content/messenger/aboutDialog.js                (content/aboutDialog.js)
 *   content/messenger/defaultClientDialog.xul       (content/defaultClientDialog.xul)
 *   content/messenger/defaultClientDialog.js        (content/defaultClientDialog.js)
 *   content/messenger/msgSelectOffline.xul          (content/msgSelectOffline.xul)
 *   content/messenger/msgPrintEngine.xul            (content/msgPrintEngine.xul)
 *   content/messenger/searchBar.js                  (content/searchBar.js)
 *   content/messenger/phishingDetector.js           (content/phishingDetector.js)
 *   content/messenger/mail-offline.js               (content/mail-offline.js)
     content/messenger/about-footer.png              (content/about-footer.png)