1 # HG changeset patch |
1 # HG changeset patch |
2 # Parent 420c86af3acf187f3f0e4d2fd061eb6221bb654c |
2 # Parent f8957db53f2d7122b59ce5ddb2a2c7bff8bf1862 |
3 Description: Add KDE integration to Firefox (toolkit parts) |
3 Description: Add KDE integration to Firefox (toolkit parts) |
4 Author: Wolfgang Rosenauer <wolfgang@rosenauer.org> |
4 Author: Wolfgang Rosenauer <wolfgang@rosenauer.org> |
5 Author: Lubos Lunak <lunak@suse.com> |
5 Author: Lubos Lunak <lunak@suse.com> |
6 Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=140751 |
6 Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=140751 |
7 https://bugzilla.novell.com/show_bug.cgi?id=170055 |
7 https://bugzilla.novell.com/show_bug.cgi?id=170055 |
324 + content/global/gmp-sources/widevinecdm.json (gmp-sources/widevinecdm.json) |
324 + content/global/gmp-sources/widevinecdm.json (gmp-sources/widevinecdm.json) |
325 diff --git a/toolkit/content/widgets/dialog-kde.xml b/toolkit/content/widgets/dialog-kde.xml |
325 diff --git a/toolkit/content/widgets/dialog-kde.xml b/toolkit/content/widgets/dialog-kde.xml |
326 new file mode 100644 |
326 new file mode 100644 |
327 --- /dev/null |
327 --- /dev/null |
328 +++ b/toolkit/content/widgets/dialog-kde.xml |
328 +++ b/toolkit/content/widgets/dialog-kde.xml |
329 @@ -0,0 +1,457 @@ |
329 @@ -0,0 +1,455 @@ |
330 +<?xml version="1.0"?> |
330 +<?xml version="1.0"?> |
331 +<!-- This Source Code Form is subject to the terms of the Mozilla Public |
331 +<!-- This Source Code Form is subject to the terms of the Mozilla Public |
332 + - License, v. 2.0. If a copy of the MPL was not distributed with this |
332 + - License, v. 2.0. If a copy of the MPL was not distributed with this |
333 + - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> |
333 + - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> |
334 + |
334 + |
469 + </method> |
469 + </method> |
470 + |
470 + |
471 + <method name="centerWindowOnScreen"> |
471 + <method name="centerWindowOnScreen"> |
472 + <body> |
472 + <body> |
473 + <![CDATA[ |
473 + <![CDATA[ |
474 + var xOffset = screen.availWidth/2 - window.outerWidth/2; |
474 + var xOffset = screen.availWidth / 2 - window.outerWidth / 2; |
475 + var yOffset = screen.availHeight/2 - window.outerHeight/2; |
475 + var yOffset = screen.availHeight / 2 - window.outerHeight / 2; |
476 + |
476 + |
477 + xOffset = xOffset > 0 ? xOffset : 0; |
477 + xOffset = xOffset > 0 ? xOffset : 0; |
478 + yOffset = yOffset > 0 ? yOffset : 0; |
478 + yOffset = yOffset > 0 ? yOffset : 0; |
479 + window.moveTo(xOffset, yOffset); |
479 + window.moveTo(xOffset, yOffset); |
480 + ]]> |
480 + ]]> |
484 + <constructor> |
484 + <constructor> |
485 + <![CDATA[ |
485 + <![CDATA[ |
486 + this._configureButtons(this.buttons); |
486 + this._configureButtons(this.buttons); |
487 + |
487 + |
488 + // listen for when window is closed via native close buttons |
488 + // listen for when window is closed via native close buttons |
489 + window.addEventListener("close", this._closeHandler, false); |
489 + window.addEventListener("close", this._closeHandler); |
490 + |
490 + |
491 + // for things that we need to initialize after onload fires |
491 + // for things that we need to initialize after onload fires |
492 + window.addEventListener("load", this.postLoadInit, false); |
492 + window.addEventListener("load", this.postLoadInit); |
493 + |
493 + |
494 + window.moveToAlertPosition = this.moveToAlertPosition; |
494 + window.moveToAlertPosition = this.moveToAlertPosition; |
495 + window.centerWindowOnScreen = this.centerWindowOnScreen; |
495 + window.centerWindowOnScreen = this.centerWindowOnScreen; |
496 + ]]> |
496 + ]]> |
497 + </constructor> |
497 + </constructor> |
522 + if (focusedElt.hasAttribute("dlgtype")) { |
522 + if (focusedElt.hasAttribute("dlgtype")) { |
523 + // We don't want to focus on anonymous OK, Cancel, etc. buttons, |
523 + // We don't want to focus on anonymous OK, Cancel, etc. buttons, |
524 + // so return focus to the tab itself |
524 + // so return focus to the tab itself |
525 + initialFocusedElt.focus(); |
525 + initialFocusedElt.focus(); |
526 + } |
526 + } |
527 + } |
527 + } else if (!/Mac/.test(navigator.platform) && |
528 + else if (!/Mac/.test(navigator.platform) && |
528 + focusedElt.hasAttribute("dlgtype") && focusedElt != defaultButton) { |
529 + focusedElt.hasAttribute("dlgtype") && focusedElt != defaultButton) { |
|
530 + defaultButton.focus(); |
529 + defaultButton.focus(); |
531 + } |
530 + } |
532 + } |
531 + } |
533 + } |
532 + } |
534 + |
533 + |
588 + button.addEventListener("command", this._handleButtonCommand, true); |
587 + button.addEventListener("command", this._handleButtonCommand, true); |
589 + |
588 + |
590 + // don't override custom labels with pre-defined labels on explicit buttons |
589 + // don't override custom labels with pre-defined labels on explicit buttons |
591 + if (!button.hasAttribute("label")) { |
590 + if (!button.hasAttribute("label")) { |
592 + // dialog attributes override the default labels in dialog.properties |
591 + // dialog attributes override the default labels in dialog.properties |
593 + if (this.hasAttribute("buttonlabel"+dlgtype)) { |
592 + if (this.hasAttribute("buttonlabel" + dlgtype)) { |
594 + button.setAttribute("label", this.getAttribute("buttonlabel"+dlgtype)); |
593 + button.setAttribute("label", this.getAttribute("buttonlabel" + dlgtype)); |
595 + if (this.hasAttribute("buttonaccesskey"+dlgtype)) |
594 + if (this.hasAttribute("buttonaccesskey" + dlgtype)) |
596 + button.setAttribute("accesskey", this.getAttribute("buttonaccesskey"+dlgtype)); |
595 + button.setAttribute("accesskey", this.getAttribute("buttonaccesskey" + dlgtype)); |
597 + } else if (dlgtype != "extra1" && dlgtype != "extra2") { |
596 + } else if (dlgtype != "extra1" && dlgtype != "extra2") { |
598 + button.setAttribute("label", this.mStrBundle.GetStringFromName("button-"+dlgtype)); |
597 + button.setAttribute("label", this.mStrBundle.GetStringFromName("button-" + dlgtype)); |
599 + var accessKey = this.mStrBundle.GetStringFromName("accesskey-"+dlgtype); |
598 + var accessKey = this.mStrBundle.GetStringFromName("accesskey-" + dlgtype); |
600 + if (accessKey) |
599 + if (accessKey) |
601 + button.setAttribute("accesskey", accessKey); |
600 + button.setAttribute("accesskey", accessKey); |
602 + } |
601 + } |
603 + } |
602 + } |
604 + // allow specifying alternate icons in the dialog header |
603 + // allow specifying alternate icons in the dialog header |
605 + if (!button.hasAttribute("icon")) { |
604 + if (!button.hasAttribute("icon")) { |
606 + // if there's an icon specified, use that |
605 + // if there's an icon specified, use that |
607 + if (this.hasAttribute("buttonicon"+dlgtype)) |
606 + if (this.hasAttribute("buttonicon" + dlgtype)) |
608 + button.setAttribute("icon", this.getAttribute("buttonicon"+dlgtype)); |
607 + button.setAttribute("icon", this.getAttribute("buttonicon" + dlgtype)); |
609 + // otherwise set defaults |
608 + // otherwise set defaults |
610 + else |
609 + else |
611 + switch (dlgtype) { |
610 + switch (dlgtype) { |
612 + case "accept": |
611 + case "accept": |
613 + button.setAttribute("icon", "accept"); |
612 + button.setAttribute("icon", "accept"); |
647 + |
646 + |
648 + // show the spacer on Windows only when the extra2 button is present |
647 + // show the spacer on Windows only when the extra2 button is present |
649 + if (/Win/.test(navigator.platform)) { |
648 + if (/Win/.test(navigator.platform)) { |
650 + var spacer = document.getAnonymousElementByAttribute(this, "anonid", "spacer"); |
649 + var spacer = document.getAnonymousElementByAttribute(this, "anonid", "spacer"); |
651 + spacer.removeAttribute("hidden"); |
650 + spacer.removeAttribute("hidden"); |
652 + spacer.setAttribute("flex", shown["extra2"]?"1":"0"); |
651 + spacer.setAttribute("flex", shown["extra2"] ? "1" : "0"); |
653 + } |
652 + } |
654 + } |
653 + } |
655 + ]]> |
654 + ]]> |
656 + </body> |
655 + </body> |
657 + </method> |
656 + </method> |
667 + |
666 + |
668 + var newDefaultButton = this.getButton(aNewDefault); |
667 + var newDefaultButton = this.getButton(aNewDefault); |
669 + if (newDefaultButton) { |
668 + if (newDefaultButton) { |
670 + this.setAttribute("defaultButton", aNewDefault); |
669 + this.setAttribute("defaultButton", aNewDefault); |
671 + newDefaultButton.setAttribute("default", "true"); |
670 + newDefaultButton.setAttribute("default", "true"); |
672 + } |
671 + } else { |
673 + else { |
|
674 + this.setAttribute("defaultButton", "none"); |
672 + this.setAttribute("defaultButton", "none"); |
675 + if (aNewDefault != "none") |
673 + if (aNewDefault != "none") |
676 + dump("invalid new default button: " + aNewDefault + ", assuming: none\n"); |
674 + dump("invalid new default button: " + aNewDefault + ", assuming: none\n"); |
677 + } |
675 + } |
678 + ]]> |
676 + ]]> |
679 + </body> |
677 + </body> |
680 + </method> |
678 + </method> |
681 + |
679 + |
716 + <method name="_fireButtonEvent"> |
714 + <method name="_fireButtonEvent"> |
717 + <parameter name="aDlgType"/> |
715 + <parameter name="aDlgType"/> |
718 + <body> |
716 + <body> |
719 + <![CDATA[ |
717 + <![CDATA[ |
720 + var event = document.createEvent("Events"); |
718 + var event = document.createEvent("Events"); |
721 + event.initEvent("dialog"+aDlgType, true, true); |
719 + event.initEvent("dialog" + aDlgType, true, true); |
722 + |
720 + |
723 + // handle dom event handlers |
721 + // handle dom event handlers |
724 + var noCancel = this.dispatchEvent(event); |
722 + var noCancel = this.dispatchEvent(event); |
725 + |
723 + |
726 + // handle any xml attribute event handlers |
724 + // handle any xml attribute event handlers |
727 + var handler = this.getAttribute("ondialog"+aDlgType); |
725 + var handler = this.getAttribute("ondialog" + aDlgType); |
728 + if (handler != "") { |
726 + if (handler != "") { |
729 + var fn = new Function("event", handler); |
727 + var fn = new Function("event", handler); |
730 + var returned = fn(event); |
728 + var returned = fn(event); |
731 + if (returned == false) |
729 + if (returned == false) |
732 + noCancel = false; |
730 + noCancel = false; |
786 +</bindings> |
784 +</bindings> |
787 diff --git a/toolkit/content/widgets/preferences-kde.xml b/toolkit/content/widgets/preferences-kde.xml |
785 diff --git a/toolkit/content/widgets/preferences-kde.xml b/toolkit/content/widgets/preferences-kde.xml |
788 new file mode 100644 |
786 new file mode 100644 |
789 --- /dev/null |
787 --- /dev/null |
790 +++ b/toolkit/content/widgets/preferences-kde.xml |
788 +++ b/toolkit/content/widgets/preferences-kde.xml |
791 @@ -0,0 +1,1411 @@ |
789 @@ -0,0 +1,1391 @@ |
792 +<?xml version="1.0"?> |
790 +<?xml version="1.0"?> |
793 + |
791 + |
794 +<!DOCTYPE bindings [ |
792 +<!DOCTYPE bindings [ |
795 + <!ENTITY % preferencesDTD SYSTEM "chrome://global/locale/preferences.dtd"> |
793 + <!ENTITY % preferencesDTD SYSTEM "chrome://global/locale/preferences.dtd"> |
796 + %preferencesDTD; |
794 + %preferencesDTD; |
863 + // Value changed, synthesize an event |
861 + // Value changed, synthesize an event |
864 + try { |
862 + try { |
865 + var event = document.createEvent("Events"); |
863 + var event = document.createEvent("Events"); |
866 + event.initEvent("change", true, true); |
864 + event.initEvent("change", true, true); |
867 + aPreference.dispatchEvent(event); |
865 + aPreference.dispatchEvent(event); |
868 + } |
866 + } catch (e) { |
869 + catch (e) { |
|
870 + Components.utils.reportError(e); |
867 + Components.utils.reportError(e); |
871 + } |
868 + } |
872 + ]]> |
869 + ]]> |
873 + </body> |
870 + </body> |
874 + </method> |
871 + </method> |
970 + if (val == this.name) |
966 + if (val == this.name) |
971 + return val; |
967 + return val; |
972 + |
968 + |
973 + this.preferences.rootBranchInternal |
969 + this.preferences.rootBranchInternal |
974 + .removeObserver(this.name, this.preferences); |
970 + .removeObserver(this.name, this.preferences); |
975 + this.setAttribute('name', val); |
971 + this.setAttribute("name", val); |
976 + this.preferences.rootBranchInternal |
972 + this.preferences.rootBranchInternal |
977 + .addObserver(val, this.preferences, false); |
973 + .addObserver(val, this.preferences, false); |
978 + |
974 + |
979 + return val; |
975 + return val; |
980 + </setter> |
976 + </setter> |
1194 + lf = Components.classes["@mozilla.org/file/local;1"] |
1189 + lf = Components.classes["@mozilla.org/file/local;1"] |
1195 + .createInstance(Components.interfaces.nsILocalFile); |
1190 + .createInstance(Components.interfaces.nsILocalFile); |
1196 + lf.persistentDescriptor = val; |
1191 + lf.persistentDescriptor = val; |
1197 + if (!lf.exists()) |
1192 + if (!lf.exists()) |
1198 + lf.initWithPath(val); |
1193 + lf.initWithPath(val); |
1199 + } |
1194 + } else |
1200 + else |
|
1201 + lf = val.QueryInterface(Components.interfaces.nsILocalFile); |
1195 + lf = val.QueryInterface(Components.interfaces.nsILocalFile); |
1202 + this.preferences.rootBranch |
1196 + this.preferences.rootBranch |
1203 + .setComplexValue(this.name, Components.interfaces.nsILocalFile, lf); |
1197 + .setComplexValue(this.name, Components.interfaces.nsILocalFile, lf); |
1204 + break; |
1198 + break; |
1205 + default: |
1199 + default: |
1226 + if (aElement.hasAttribute("onsyncfrompreference")) { |
1220 + if (aElement.hasAttribute("onsyncfrompreference")) { |
1227 + // Value changed, synthesize an event |
1221 + // Value changed, synthesize an event |
1228 + try { |
1222 + try { |
1229 + var event = document.createEvent("Events"); |
1223 + var event = document.createEvent("Events"); |
1230 + event.initEvent("syncfrompreference", true, true); |
1224 + event.initEvent("syncfrompreference", true, true); |
1231 + var f = new Function ("event", |
1225 + var f = new Function("event", |
1232 + aElement.getAttribute("onsyncfrompreference")); |
1226 + aElement.getAttribute("onsyncfrompreference")); |
1233 + rv = f.call(aElement, event); |
1227 + rv = f.call(aElement, event); |
1234 + } |
1228 + } catch (e) { |
1235 + catch (e) { |
|
1236 + Components.utils.reportError(e); |
1229 + Components.utils.reportError(e); |
1237 + } |
1230 + } |
1238 + } |
1231 + } |
1239 + var val = rv; |
1232 + var val = rv; |
1240 + if (val === undefined) |
1233 + if (val === undefined) |
1265 + // XXXmano Bug 303998: Avoid a caret placement issue if either the |
1258 + // XXXmano Bug 303998: Avoid a caret placement issue if either the |
1266 + // preference observer or its setter calls updateElements as a result |
1259 + // preference observer or its setter calls updateElements as a result |
1267 + // of the input event handler. |
1260 + // of the input event handler. |
1268 + if (aElement.value !== val) |
1261 + if (aElement.value !== val) |
1269 + setValue(aElement, "value", val); |
1262 + setValue(aElement, "value", val); |
1270 + } |
1263 + } else |
1271 + else |
|
1272 + setValue(aElement, "value", val); |
1264 + setValue(aElement, "value", val); |
1273 + ]]> |
1265 + ]]> |
1274 + </body> |
1266 + </body> |
1275 + </method> |
1267 + </method> |
1276 + |
1268 + |
1281 + if (aElement.hasAttribute("onsynctopreference")) { |
1273 + if (aElement.hasAttribute("onsynctopreference")) { |
1282 + // Value changed, synthesize an event |
1274 + // Value changed, synthesize an event |
1283 + try { |
1275 + try { |
1284 + var event = document.createEvent("Events"); |
1276 + var event = document.createEvent("Events"); |
1285 + event.initEvent("synctopreference", true, true); |
1277 + event.initEvent("synctopreference", true, true); |
1286 + var f = new Function ("event", |
1278 + var f = new Function("event", |
1287 + aElement.getAttribute("onsynctopreference")); |
1279 + aElement.getAttribute("onsynctopreference")); |
1288 + var rv = f.call(aElement, event); |
1280 + var rv = f.call(aElement, event); |
1289 + if (rv !== undefined) |
1281 + if (rv !== undefined) |
1290 + return rv; |
1282 + return rv; |
1291 + } |
1283 + } catch (e) { |
1292 + catch (e) { |
|
1293 + Components.utils.reportError(e); |
1284 + Components.utils.reportError(e); |
1294 + } |
1285 + } |
1295 + } |
1286 + } |
1296 + |
1287 + |
1297 + /** |
1288 + /** |
1433 + document.getAnonymousElementByAttribute(this, "anonid", "spacer").hidden = true; |
1424 + document.getAnonymousElementByAttribute(this, "anonid", "spacer").hidden = true; |
1434 + // Also, don't fire onDialogAccept on enter |
1425 + // Also, don't fire onDialogAccept on enter |
1435 + acceptButton.disabled = true; |
1426 + acceptButton.disabled = true; |
1436 + } else { |
1427 + } else { |
1437 + // morph the Cancel button into the Close button |
1428 + // morph the Cancel button into the Close button |
1438 + cancelButton.setAttribute ("icon", "close"); |
1429 + cancelButton.setAttribute("icon", "close"); |
1439 + cancelButton.label = docElt.getAttribute("closebuttonlabel"); |
1430 + cancelButton.label = docElt.getAttribute("closebuttonlabel"); |
1440 + cancelButton.accesskey = docElt.getAttribute("closebuttonaccesskey"); |
1431 + cancelButton.accesskey = docElt.getAttribute("closebuttonaccesskey"); |
1441 + } |
1432 + } |
1442 + } |
1433 + } |
1443 + } |
1434 + } |
1454 + |
1445 + |
1455 + var paneToLoad; |
1446 + var paneToLoad; |
1456 + if ("arguments" in window && window.arguments[0] && document.getElementById(window.arguments[0]) && document.getElementById(window.arguments[0]).nodeName == "prefpane") { |
1447 + if ("arguments" in window && window.arguments[0] && document.getElementById(window.arguments[0]) && document.getElementById(window.arguments[0]).nodeName == "prefpane") { |
1457 + paneToLoad = document.getElementById(window.arguments[0]); |
1448 + paneToLoad = document.getElementById(window.arguments[0]); |
1458 + this.lastSelected = paneToLoad.id; |
1449 + this.lastSelected = paneToLoad.id; |
1459 + } |
1450 + } else if (lastPane) |
1460 + else if (lastPane) |
|
1461 + paneToLoad = lastPane; |
1451 + paneToLoad = lastPane; |
1462 + else |
1452 + else |
1463 + paneToLoad = panes[0]; |
1453 + paneToLoad = panes[0]; |
1464 + |
1454 + |
1465 + for (var i = 0; i < panes.length; ++i) { |
1455 + for (var i = 0; i < panes.length; ++i) { |
1552 + if (!aPaneElement) |
1542 + if (!aPaneElement) |
1553 + return; |
1543 + return; |
1554 + |
1544 + |
1555 + this._selector.selectedItem = document.getAnonymousElementByAttribute(this, "pane", aPaneElement.id); |
1545 + this._selector.selectedItem = document.getAnonymousElementByAttribute(this, "pane", aPaneElement.id); |
1556 + if (!aPaneElement.loaded) { |
1546 + if (!aPaneElement.loaded) { |
1557 + let OverlayLoadObserver = function(aPane) |
1547 + let OverlayLoadObserver = function(aPane) { |
1558 + { |
|
1559 + this._pane = aPane; |
1548 + this._pane = aPane; |
1560 + } |
1549 + } |
1561 + OverlayLoadObserver.prototype = { |
1550 + OverlayLoadObserver.prototype = { |
1562 + _outer: this, |
1551 + _outer: this, |
1563 + observe: function (aSubject, aTopic, aData) |
1552 + observe(aSubject, aTopic, aData) { |
1564 + { |
|
1565 + this._pane.loaded = true; |
1553 + this._pane.loaded = true; |
1566 + this._outer._fireEvent("paneload", this._pane); |
1554 + this._outer._fireEvent("paneload", this._pane); |
1567 + this._outer._selectPane(this._pane); |
1555 + this._outer._selectPane(this._pane); |
1568 + } |
1556 + } |
1569 + }; |
1557 + }; |
1570 + |
1558 + |
1571 + var obs = new OverlayLoadObserver(aPaneElement); |
1559 + var obs = new OverlayLoadObserver(aPaneElement); |
1572 + document.loadOverlay(aPaneElement.src, obs); |
1560 + document.loadOverlay(aPaneElement.src, obs); |
1573 + } |
1561 + } else |
1574 + else |
|
1575 + this._selectPane(aPaneElement); |
1562 + this._selectPane(aPaneElement); |
1576 + ]]> |
1563 + ]]> |
1577 + </body> |
1564 + </body> |
1578 + </method> |
1565 + </method> |
1579 + |
1566 + |
1586 + try { |
1573 + try { |
1587 + var event = document.createEvent("Events"); |
1574 + var event = document.createEvent("Events"); |
1588 + event.initEvent(aEventName, true, true); |
1575 + event.initEvent(aEventName, true, true); |
1589 + var cancel = !aTarget.dispatchEvent(event); |
1576 + var cancel = !aTarget.dispatchEvent(event); |
1590 + if (aTarget.hasAttribute("on" + aEventName)) { |
1577 + if (aTarget.hasAttribute("on" + aEventName)) { |
1591 + var fn = new Function ("event", aTarget.getAttribute("on" + aEventName)); |
1578 + var fn = new Function("event", aTarget.getAttribute("on" + aEventName)); |
1592 + var rv = fn.call(aTarget, event); |
1579 + var rv = fn.call(aTarget, event); |
1593 + if (rv == false) |
1580 + if (rv == false) |
1594 + cancel = true; |
1581 + cancel = true; |
1595 + } |
1582 + } |
1596 + return !cancel; |
1583 + return !cancel; |
1597 + } |
1584 + } catch (e) { |
1598 + catch (e) { |
|
1599 + Components.utils.reportError(e); |
1585 + Components.utils.reportError(e); |
1600 + } |
1586 + } |
1601 + return false; |
1587 + return false; |
1602 + ]]> |
1588 + ]]> |
1603 + </body> |
1589 + </body> |
1647 + |
1633 + |
1648 + // Only animate if we've switched between prefpanes |
1634 + // Only animate if we've switched between prefpanes |
1649 + if (this._shouldAnimate && oldPane.id != aPaneElement.id) { |
1635 + if (this._shouldAnimate && oldPane.id != aPaneElement.id) { |
1650 + aPaneElement.style.opacity = 0.0; |
1636 + aPaneElement.style.opacity = 0.0; |
1651 + this.animate(oldPane, aPaneElement); |
1637 + this.animate(oldPane, aPaneElement); |
1652 + } |
1638 + } else if (!this._shouldAnimate && prefpanes.length > 1) { |
1653 + else if (!this._shouldAnimate && prefpanes.length > 1) { |
|
1654 + var targetHeight = parseInt(window.getComputedStyle(this._paneDeckContainer, "").height); |
1639 + var targetHeight = parseInt(window.getComputedStyle(this._paneDeckContainer, "").height); |
1655 + var verticalPadding = parseInt(window.getComputedStyle(aPaneElement, "").paddingTop); |
1640 + var verticalPadding = parseInt(window.getComputedStyle(aPaneElement, "").paddingTop); |
1656 + verticalPadding += parseInt(window.getComputedStyle(aPaneElement, "").paddingBottom); |
1641 + verticalPadding += parseInt(window.getComputedStyle(aPaneElement, "").paddingBottom); |
1657 + if (aPaneElement.contentHeight > targetHeight - verticalPadding) { |
1642 + if (aPaneElement.contentHeight > targetHeight - verticalPadding) { |
1658 + // To workaround the bottom border of a groupbox from being |
1643 + // To workaround the bottom border of a groupbox from being |
1739 + if (aTimer == this._animateTimer) { |
1723 + if (aTimer == this._animateTimer) { |
1740 + var increment = this._sizeIncrement; |
1724 + var increment = this._sizeIncrement; |
1741 + if (increment != 0) { |
1725 + if (increment != 0) { |
1742 + window.innerHeight += increment; |
1726 + window.innerHeight += increment; |
1743 + this._currentHeight += increment; |
1727 + this._currentHeight += increment; |
1744 + } |
1728 + } else { |
1745 + else { |
|
1746 + aTimer.cancel(); |
1729 + aTimer.cancel(); |
1747 + this._setUpFadeTimer(); |
1730 + this._setUpFadeTimer(); |
1748 + } |
1731 + } |
1749 + } else if (aTimer == this._fadeTimer) { |
1732 + } else if (aTimer == this._fadeTimer) { |
1750 + var elt = document.getElementById(this.lastSelected); |
1733 + var elt = document.getElementById(this.lastSelected); |
1835 + var win = aWindowType ? wm.getMostRecentWindow(aWindowType) : null; |
1818 + var win = aWindowType ? wm.getMostRecentWindow(aWindowType) : null; |
1836 + if (win) { |
1819 + if (win) { |
1837 + if ("initWithParams" in win) |
1820 + if ("initWithParams" in win) |
1838 + win.initWithParams(aParams); |
1821 + win.initWithParams(aParams); |
1839 + win.focus(); |
1822 + win.focus(); |
1840 + } |
1823 + } else { |
1841 + else { |
|
1842 + var features = "resizable,dialog=no,centerscreen" + (aFeatures != "" ? ("," + aFeatures) : ""); |
1824 + var features = "resizable,dialog=no,centerscreen" + (aFeatures != "" ? ("," + aFeatures) : ""); |
1843 + var parentWindow = (this.instantApply || !window.opener || window.opener.closed) ? window : window.opener; |
1825 + var parentWindow = (this.instantApply || !window.opener || window.opener.closed) ? window : window.opener; |
1844 + win = parentWindow.openDialog(aURL, "_blank", features, aParams); |
1826 + win = parentWindow.openDialog(aURL, "_blank", features, aParams); |
1845 + } |
1827 + } |
1846 + return win; |
1828 + return win; |
1857 + |
1839 + |
1858 + var secMan = Components.classes["@mozilla.org/scriptsecuritymanager;1"] |
1840 + var secMan = Components.classes["@mozilla.org/scriptsecuritymanager;1"] |
1859 + .getService(Components.interfaces.nsIScriptSecurityManager); |
1841 + .getService(Components.interfaces.nsIScriptSecurityManager); |
1860 + if (this.type == "child" && window.opener && |
1842 + if (this.type == "child" && window.opener && |
1861 + secMan.isSystemPrincipal(window.opener.document.nodePrincipal)) { |
1843 + secMan.isSystemPrincipal(window.opener.document.nodePrincipal)) { |
1862 + let psvc = Components.classes["@mozilla.org/preferences-service;1"] |
|
1863 + .getService(Components.interfaces.nsIPrefBranch); |
|
1864 + var pdocEl = window.opener.document.documentElement; |
1844 + var pdocEl = window.opener.document.documentElement; |
1865 + if (pdocEl.instantApply) { |
1845 + if (pdocEl.instantApply) { |
1866 + let panes = this.preferencePanes; |
1846 + let panes = this.preferencePanes; |
1867 + for (let i = 0; i < panes.length; ++i) |
1847 + for (let i = 0; i < panes.length; ++i) |
1868 + panes[i].writePreferences(true); |
1848 + panes[i].writePreferences(true); |
1869 + } |
1849 + } else { |
1870 + else { |
|
1871 + // Clone all the preferences elements from the child document and |
1850 + // Clone all the preferences elements from the child document and |
1872 + // insert them into the pane collection of the parent. |
1851 + // insert them into the pane collection of the parent. |
1873 + var pdoc = window.opener.document; |
1852 + var pdoc = window.opener.document; |
1874 + if (pdoc.documentElement.localName == "prefwindow") { |
1853 + if (pdoc.documentElement.localName == "prefwindow") { |
1875 + var currentPane = pdoc.documentElement.currentPane; |
1854 + var currentPane = pdoc.documentElement.currentPane; |
2047 + <![CDATA[ |
2025 + <![CDATA[ |
2048 + var temp = aStartElement; |
2026 + var temp = aStartElement; |
2049 + while (temp && temp.nodeType == Node.ELEMENT_NODE && |
2027 + while (temp && temp.nodeType == Node.ELEMENT_NODE && |
2050 + !temp.hasAttribute("preference")) |
2028 + !temp.hasAttribute("preference")) |
2051 + temp = temp.parentNode; |
2029 + temp = temp.parentNode; |
2052 + return temp.nodeType == Node.ELEMENT_NODE ? temp : aStartElement; |
2030 + return temp && temp.nodeType == Node.ELEMENT_NODE ? |
|
2031 + temp : aStartElement; |
2053 + ]]> |
2032 + ]]> |
2054 + </body> |
2033 + </body> |
2055 + </method> |
2034 + </method> |
2056 + |
2035 + |
2057 + <property name="DeferredTask" readonly="true"> |
2036 + <property name="DeferredTask" readonly="true"> |
2160 + var elements = this.preferenceElements; |
2139 + var elements = this.preferenceElements; |
2161 + for (var i = 0; i < elements.length; ++i) { |
2140 + for (var i = 0; i < elements.length; ++i) { |
2162 + try { |
2141 + try { |
2163 + var preference = this.preferenceForElement(elements[i]); |
2142 + var preference = this.preferenceForElement(elements[i]); |
2164 + preference.setElementValue(elements[i]); |
2143 + preference.setElementValue(elements[i]); |
2165 + } |
2144 + } catch (e) { |
2166 + catch (e) { |
|
2167 + dump("*** No preference found for " + elements[i].getAttribute("preference") + "\n"); |
2145 + dump("*** No preference found for " + elements[i].getAttribute("preference") + "\n"); |
2168 + } |
2146 + } |
2169 + } |
2147 + } |
2170 + ]]> |
2148 + ]]> |
2171 + </handler> |
2149 + </handler> |