| Index: block.js |
| diff --git a/block.js b/block.js |
| index 42d2d1242f862546f20e90afcf5fb35406c4ba50..71f9b6c376d5a307453a27137cf848b677b1e847 100644 |
| --- a/block.js |
| +++ b/block.js |
| @@ -15,38 +15,7 @@ |
| * along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>. |
| */ |
| -function init() |
| -{ |
| - // Attach event listeners |
| - window.addEventListener("keydown", onKeyDown, false); |
| - window.addEventListener("dragstart", onDragStart, false); |
| - window.addEventListener("dragend", onDragEnd, false); |
| - |
| - $("#addButton").click(addFilters); |
| - $("#cancelButton").click(closeDialog.bind(null, false)); |
| - |
| - // Apply jQuery UI styles |
| - $("button").button(); |
| - |
| - ext.backgroundPage.sendMessage( |
| - { |
| - type: "forward", |
| - expectsResponse: true, |
| - payload: |
| - { |
| - type: "clickhide-init", |
| - width: Math.max(document.body.offsetWidth || document.body.scrollWidth), |
| - height: Math.max(document.body.offsetHeight || document.body.scrollHeight) |
| - } |
| - }, |
| - function(response) |
| - { |
| - document.getElementById("filters").value = response.filters.join("\n"); |
| - }); |
| - |
| - document.getElementById("filters").focus(); |
| -} |
| -window.addEventListener("load", init, false); |
| +var targetPageId = null; |
| function onKeyDown(event) |
| { |
| @@ -65,88 +34,63 @@ function onKeyDown(event) |
| function addFilters() |
| { |
| ext.backgroundPage.sendMessage( |
| - { |
| - type: "add-filters", |
| - text: document.getElementById("filters").value |
| - }, |
| - |
| - function(response) |
| - { |
| - if (response.status == "ok") |
| - closeDialog(true); |
| - else |
| - alert(response.error); |
| - } |
| - ); |
| + { |
| + type: "add-filters", |
| + text: document.getElementById("filters").value |
| + }, |
| + function(response) |
| + { |
| + if (response.status == "ok") |
| + closeDialog(true); |
| + else |
| + alert(response.error); |
| + }); |
| } |
| function closeDialog(success) |
| { |
| ext.backgroundPage.sendMessage( |
| + { |
| + type: "forward", |
| + targetPageId: targetPageId, |
| + payload: |
| { |
| - type: "forward", |
| - payload: |
| - { |
| - type: "clickhide-close", |
| - remove: (typeof success == "boolean" ? success : false) |
| - } |
| + type: "blockelement-finished", |
| + remove: (typeof success == "boolean" ? success : false) |
| } |
| - ); |
| + }); |
| + window.close(); |
| } |
| -var dragStartX; |
| -var dragStartY; |
| -var dragEndX = null; |
| -var dragEndY = null; |
| - |
| -function onDragStart(event) |
| +function init() |
| { |
| - var element = document.elementFromPoint(event.clientX, event.clientY); |
| - if (element && element.localName == "textarea") |
| - { |
| - // Don't drag the dialog when the user has clicked into the textarea. |
| - // Most likely the user just wants to focus it or select text there. |
| - event.preventDefault(); |
| - } |
| - else |
| - { |
| - dragStartX = event.screenX; |
| - dragStartY = event.screenY; |
| - } |
| -} |
| + // Attach event listeners |
| + window.addEventListener("keydown", onKeyDown, false); |
| -function onDragEnd(event) |
| -{ |
| - if (dragEndX == null) |
| - dragEndX = event.screenX; |
| - if (dragEndY == null) |
| - dragEndY = event.screenY; |
| + document.getElementById("addButton").addEventListener("click", addFilters); |
| + document.getElementById("cancelButton").addEventListener( |
| + "click", closeDialog.bind(null, false) |
| + ); |
| - ext.backgroundPage.sendMessage({ |
| - type: "forward", |
| - payload: |
| + // Apply jQuery UI styles |
| + $("button").button(); |
| + |
| + document.getElementById("filters").focus(); |
| + |
| + ext.onMessage.addListener(function(msg, sender, sendResponse) |
| + { |
| + switch (msg.type) |
| { |
| - type: "clickhide-move", |
| - x: dragEndX - dragStartX, |
| - y: dragEndY - dragStartY |
| + case "blockelement-popup-init": |
| + targetPageId = msg.sender; |
| + document.getElementById("filters").value = msg.filters.join("\n"); |
| + break; |
| + case "blockelement-close-popup": |
| + window.close(); |
| + break; |
| } |
| }); |
| - dragStartX = null; |
| - dragStartY = null; |
| - dragEndX = null; |
| - dragEndY = null; |
| -} |
| - |
| -// The coordinates in the dragend event are unreliable on Safari. So we |
| -// need to get the destination coordinates from the drag event instead. |
| -// However on Chrome, the coordinates in the drag event are unreliable. |
| -// So we need to get the coordinates from dragend event there. |
| -if (navigator.userAgent.indexOf(" Version/") != -1) |
| -{ |
| - window.addEventListener("drag", function(event) |
| - { |
| - dragEndX = event.screenX; |
| - dragEndY = event.screenY; |
| - }, false); |
| + window.removeEventListener("load", init); |
| } |
| +window.addEventListener("load", init, false); |