| Index: chrome/content/composer.js |
| =================================================================== |
| --- a/chrome/content/composer.js |
| +++ b/chrome/content/composer.js |
| @@ -3,22 +3,22 @@ |
| * version 2.0 (the "License"). You can obtain a copy of the License at |
| * http://mozilla.org/MPL/2.0/. |
| */ |
| let {Prefs} = require("prefs"); |
| let domainData; |
| let nodeData; |
| +let nodeID; |
| let selectedNode = null; |
| let advancedMode = false; |
| let treeView = null; |
| let stylesheetData; |
| let previewStyle = null; |
| -let doc; |
| let abpURL = Cc["@adblockplus.org/abp/public;1"].getService(Ci.nsIURI); |
| Cu.import(abpURL.spec); |
| /******************* |
| * TreeView object * |
| *******************/ |
| @@ -79,18 +79,18 @@ function TreeView_getCellProperties(row, |
| } |
| /********************* |
| * General functions * |
| *********************/ |
| function init() |
| { |
| - nodeData = window.arguments[0]; |
| - let host = window.arguments[1]; |
| + let host; |
| + ({host, nodeData, nodeID} = window.arguments[0]); |
| // Check whether element hiding group is disabled |
| let subscription = AdblockPlus.getSubscription("~eh~"); |
| if (subscription && subscription.disabled) |
| { |
| let warning = document.getElementById("groupDisabledWarning"); |
| if (/\?1\?/.test(warning.textContent)) |
| warning.textContent = warning.textContent.replace(/\?1\?/g, subscription.title); |
| @@ -306,18 +306,18 @@ function updateExpression() |
| expression = domainData.selected + "##" + expression; |
| document.getElementById("expression").value = expression; |
| var tree = document.getElementById("nodes-tree"); |
| if (tree.view && tree.view.selection) |
| tree.treeBoxObject.invalidateRow(tree.view.selection.currentIndex); |
| - if (previewStyle) |
| - previewStyle.textContent = stylesheetData; |
| + if (document.getElementById("preview").checked) |
| + togglePreview(true); |
| } |
| function escapeChar(dummy, match) |
| { |
| return "\\" + match.charCodeAt(0).toString(16) + " "; |
| } |
| function fillDomains(domainData) { |
| @@ -486,39 +486,23 @@ function fillAttributes(nodeData) |
| if (advancedMode) |
| { |
| // Add custom CSS entry |
| node = createAttribute("advanced", nodeData.customCSS, list.getAttribute("_labelcustom"), nodeData.customCSS.selected); |
| list.appendChild(node); |
| } |
| } |
| -function togglePreview(preview) { |
| - if (preview) { |
| - if (!previewStyle || !previewStyle.parentNode) { |
| - previewStyle = doc.createElementNS("http://www.w3.org/1999/xhtml", "style"); |
| - previewStyle.setAttribute("type", "text/css"); |
| - doc.documentElement.appendChild(previewStyle); |
| - } |
| - previewStyle.textContent = stylesheetData; |
| - } |
| - else { |
| - try |
| - { |
| - if (previewStyle && previewStyle.parentNode) |
| - previewStyle.parentNode.removeChild(previewStyle); |
| - } |
| - catch (e) |
| - { |
| - // if the window was closed (reloaded) we end up with dead object reference |
| - // https://bugzilla.mozilla.org/show_bug.cgi?id=695480 |
| - // just ignore this case |
| - } |
| - previewStyle = null; |
| - } |
| +function togglePreview(preview, forgetNode) |
| +{ |
| + Services.mm.broadcastAsyncMessage("ElemHideHelper:Preview", { |
| + nodeID: nodeID, |
| + stylesheetData: preview ? stylesheetData : null, |
| + forgetNode: !!forgetNode |
| + }); |
| } |
| function changeDomain(node) { |
| domainData.selected = node.getAttribute("value"); |
| updateExpression(); |
| } |
| function toggleAttr(node) { |