[Pkg-mozext-commits] [adblock-plus-element-hiding-helper] 464/483: Issue 227 - Element hiding selection by mouse wheel broken
David Prévot
taffit at moszumanska.debian.org
Thu Jan 22 21:42:07 UTC 2015
This is an automated email from the git hooks/post-receive script.
taffit pushed a commit to branch master
in repository adblock-plus-element-hiding-helper.
commit a687e65342b34e7acf2be8133697a69fa43fec0e
Author: Wladimir Palant <trev at adblockplus.org>
Date: Thu May 1 13:30:20 2014 +0200
Issue 227 - Element hiding selection by mouse wheel broken
---
lib/aardvark.js | 163 ++++++++++++++++++++++++++++----------------------------
1 file changed, 81 insertions(+), 82 deletions(-)
diff --git a/lib/aardvark.js b/lib/aardvark.js
index cc45532..173a49f 100644
--- a/lib/aardvark.js
+++ b/lib/aardvark.js
@@ -38,31 +38,31 @@ let Aardvark = exports.Aardvark =
{
if (!this.canSelect(wrapper.browser))
return;
-
+
if (this.browser)
this.quit();
-
+
this.window = wrapper.window;
this.browser = wrapper.browser;
E = function(id) wrapper.E(id);
-
+
this.browser.addEventListener("click", this.onMouseClick, true);
this.browser.addEventListener("DOMMouseScroll", this.onMouseScroll, true);
this.browser.addEventListener("keypress", this.onKeyPress, true);
this.browser.addEventListener("mousemove", this.onMouseMove, true);
this.browser.addEventListener("select", this.quit, false);
this.browser.contentWindow.addEventListener("pagehide", this.onPageHide, true);
-
+
this.browser.contentWindow.focus();
-
+
let doc = this.browser.contentDocument;
this.boxElem = doc.importNode(E("ehh-elementmarker").firstElementChild.cloneNode(true), true);
-
+
this.initHelpBox();
-
+
if (Prefs.showhelp)
this.showMenu();
-
+
// Make sure to select some element immeditely (whichever is in the center of the browser window)
let [wndWidth, wndHeight] = this.getWindowSize(doc.defaultView);
this.isUserSelected = false;
@@ -76,11 +76,11 @@ let Aardvark = exports.Aardvark =
{
return false;
}
-
+
let location = browser.contentWindow.location;
if (location.href == "about:blank")
return false;
-
+
if (!Prefs.acceptlocalfiles &&
location.hostname == "" &&
location.protocol != "mailbox:" &&
@@ -90,7 +90,7 @@ let Aardvark = exports.Aardvark =
{
return false;
}
-
+
return true;
},
@@ -110,14 +110,14 @@ let Aardvark = exports.Aardvark =
{
if (this.commandLabelTimer)
this.commandLabelTimer.cancel();
-
+
E("ehh-commandlabel-key").textContent = key.toUpperCase();
E("ehh-commandlabel-alternativeKey").textContent = alternativeKey.toUpperCase();
E("ehh-commandlabel-label").setAttribute("value", label);
-
+
var commandLabel = E("ehh-commandlabel");
commandLabel.showPopup(this.window.document.documentElement, this.mouseX, this.mouseY, "tooltip", "topleft", "topleft");
-
+
this.commandLabelTimer = Cc["@mozilla.org/timer;1"].createInstance(Ci.nsITimer);
this.commandLabelTimer.initWithCallback(function()
{
@@ -131,11 +131,11 @@ let Aardvark = exports.Aardvark =
var helpBoxRows = E("ehh-helpbox-rows");
if (helpBoxRows.firstElementChild)
return;
-
+
// Help box hasn't been filled yet, need to do it now
var stringService = Cc["@mozilla.org/intl/stringbundle;1"].getService(Ci.nsIStringBundleService);
var strings = stringService.createBundle("chrome://elemhidehelper/locale/global.properties");
-
+
for (var i = 0; i < this.commands.length; i++)
{
var command = this.commands[i];
@@ -145,20 +145,20 @@ let Aardvark = exports.Aardvark =
this.commands[command + "_key"] = key.toLowerCase();
this.commands[command + "_altkey"] = alternativeKey.toLowerCase();
this.commands[command + "_label"] = label;
-
+
var row = this.window.document.createElement("row");
helpBoxRows.appendChild(row);
-
+
var element = this.window.document.createElement("description");
element.textContent = key.toUpperCase();
element.className = "key";
row.appendChild(element);
-
+
var element = this.window.document.createElement("description");
element.textContent = alternativeKey.toUpperCase();
element.className = "key";
row.appendChild(element);
-
+
element = this.window.document.createElement("description");
element.setAttribute("value", label);
element.className = "label";
@@ -181,7 +181,7 @@ let Aardvark = exports.Aardvark =
{
if (event.button != 0 || event.shiftKey || event.altKey || event.ctrlKey || event.metaKey)
return;
-
+
this.doCommand("select", event);
},
@@ -189,19 +189,18 @@ let Aardvark = exports.Aardvark =
{
if (!event.shiftKey || event.altKey || event.ctrlKey || event.metaKey)
return;
-
+
if ("axis" in event && event.axis != event.VERTICAL_AXIS)
return;
-
- for (let i = 0; i < Math.abs(event.detail); i++)
- this.doCommand(event.detail > 0 ? "wider" : "narrower", event);
+
+ this.doCommand(event.detail > 0 ? "wider" : "narrower", event);
},
onKeyPress: function(event)
{
if (event.altKey || event.ctrlKey || event.metaKey)
return;
-
+
var command = null;
if (event.keyCode == event.DOM_VK_ESCAPE)
command = "quit";
@@ -215,7 +214,7 @@ let Aardvark = exports.Aardvark =
if (commands[commands[i] + "_key"] == key || commands[commands[i] + "_altkey"] == key)
command = commands[i];
}
-
+
if (command)
this.doCommand(command, event);
},
@@ -229,12 +228,12 @@ let Aardvark = exports.Aardvark =
{
this.mouseX = event.screenX;
this.mouseY = event.screenY;
-
+
this.hideSelection();
-
+
let x = event.clientX;
let y = event.clientY;
-
+
// We might have coordinates relative to a frame, recalculate relative to top window
let node = event.target;
while (node && node.ownerDocument && node.ownerDocument.defaultView && node.ownerDocument.defaultView.frameElement)
@@ -244,7 +243,7 @@ let Aardvark = exports.Aardvark =
x += rect.left;
y += rect.top;
}
-
+
let elem = this.browser.contentDocument.elementFromPoint(x, y);
while (elem && "contentDocument" in elem && this.canSelect(elem))
{
@@ -253,7 +252,7 @@ let Aardvark = exports.Aardvark =
y -= rect.top;
elem = elem.contentDocument.elementFromPoint(x, y);
}
-
+
if (elem)
{
if (!this.lockedAnchor)
@@ -283,7 +282,7 @@ let Aardvark = exports.Aardvark =
setAnchorElement: function(anchor)
{
this.anchorElem = anchor;
-
+
let newSelection = anchor;
if (this.isUserSelected)
{
@@ -292,13 +291,13 @@ let Aardvark = exports.Aardvark =
let e = newSelection;
while (e && e != this.selectedElem)
e = this.getParentElement(e);
-
+
if (e)
newSelection = this.selectedElem;
else
this.isUserSelected = false;
}
-
+
this.selectElement(newSelection);
},
@@ -325,7 +324,7 @@ let Aardvark = exports.Aardvark =
addition += ", class: " + elem.className;
if (elem.style.cssText != "")
addition += ", style: " + elem.style.cssText;
-
+
return [tagName, addition];
},
@@ -333,7 +332,7 @@ let Aardvark = exports.Aardvark =
{
this.selectedElem = elem;
this.prevSelectionUpdate = Date.now();
-
+
let border = this.boxElem.getElementsByClassName("ehh-border")[0];
let label = this.boxElem.getElementsByClassName("ehh-label")[0];
let labelTag = this.boxElem.getElementsByClassName("ehh-labelTag")[0];
@@ -341,7 +340,7 @@ let Aardvark = exports.Aardvark =
if (this.boxElem.parentNode)
this.boxElem.parentNode.removeChild(this.boxElem);
-
+
let doc = this.browser.contentDocument;
let [wndWidth, wndHeight] = this.getWindowSize(doc.defaultView);
@@ -350,15 +349,15 @@ let Aardvark = exports.Aardvark =
this.boxElem.style.top = Math.min(pos.top - 1, wndHeight - 2) + "px";
border.style.width = Math.max(pos.right - pos.left - 2, 0) + "px";
border.style.height = Math.max(pos.bottom - pos.top - 2, 0) + "px";
-
+
[labelTag.textContent, labelAddition.textContent] = this.getElementLabel(elem);
-
+
// If there is not enough space to show the label move it up a little
if (pos.bottom < wndHeight - 25)
label.className = "ehh-label";
else
label.className = "ehh-label onTop";
-
+
doc.documentElement.appendChild(this.boxElem);
this.paintNode = doc.defaultView;
@@ -396,34 +395,34 @@ let Aardvark = exports.Aardvark =
rect.right = Math.min(rect.right, wndWidth);
rect.bottom = Math.min(rect.bottom, wndHeight);
}
-
+
let rect = element.getBoundingClientRect();
let wnd = element.ownerDocument.defaultView;
-
+
rect = {left: rect.left, top: rect.top,
right: rect.right, bottom: rect.bottom};
while (true)
{
intersectRect.call(this, rect, wnd);
-
+
if (!wnd.frameElement)
break;
-
+
// Recalculate coordinates to be relative to frame's parent window
let frameElement = wnd.frameElement;
wnd = frameElement.ownerDocument.defaultView;
-
+
let frameRect = frameElement.getBoundingClientRect();
let frameStyle = wnd.getComputedStyle(frameElement, null);
let relLeft = frameRect.left + parseFloat(frameStyle.borderLeftWidth) + parseFloat(frameStyle.paddingLeft);
let relTop = frameRect.top + parseFloat(frameStyle.borderTopWidth) + parseFloat(frameStyle.paddingTop);
-
+
rect.left += relLeft;
rect.right += relLeft;
rect.top += relTop;
rect.bottom += relTop;
}
-
+
return rect;
},
@@ -432,10 +431,10 @@ let Aardvark = exports.Aardvark =
let result = elem.parentNode;
if (result && result.nodeType == Ci.nsIDOMElement.DOCUMENT_NODE && result.defaultView && result.defaultView.frameElement)
result = result.defaultView.frameElement;
-
+
if (result && result.nodeType != Ci.nsIDOMElement.ELEMENT_NODE)
return null;
-
+
return result;
},
@@ -459,11 +458,11 @@ let Aardvark = exports.Aardvark =
{
if (!elem)
return false;
-
+
let newElem = this.getParentElement(elem);
if (!newElem)
return false;
-
+
this.isUserSelected = true;
this.selectElement(newElem);
return true;
@@ -482,10 +481,10 @@ let Aardvark = exports.Aardvark =
newElem = e;
e = this.getParentElement(e);
}
-
+
if (!e || !newElem)
return false;
-
+
this.isUserSelected = true;
this.selectElement(newElem);
return true;
@@ -497,7 +496,7 @@ let Aardvark = exports.Aardvark =
{
if (!elem)
return false;
-
+
if (this.lockedAnchor)
{
this.setAnchorElement(this.lockedAnchor);
@@ -505,28 +504,28 @@ let Aardvark = exports.Aardvark =
}
else
this.lockedAnchor = this.anchorElem;
-
+
return true;
},
-
+
quit: function()
{
if (!this.browser)
return false;
-
+
if ("blinkTimer" in this)
this.stopBlinking();
-
+
if (this.commandLabelTimer)
this.commandLabelTimer.cancel();
if (this.viewSourceTimer)
this.viewSourceTimer.cancel();
this.commandLabelTimer = null;
this.viewSourceTimer = null;
-
+
this.hideSelection();
this.hideTooltips();
-
+
this.browser.removeEventListener("click", this.onMouseClick, true);
this.browser.removeEventListener("DOMMouseScroll", this.onMouseScroll, true);
this.browser.removeEventListener("keypress", this.onKeyPress, true);
@@ -549,7 +548,7 @@ let Aardvark = exports.Aardvark =
{
if (!elem)
return false;
-
+
this.window.openDialog("chrome://elemhidehelper/content/composer.xul", "_blank",
"chrome,centerscreen,resizable,dialog=no", elem);
this.quit();
@@ -560,10 +559,10 @@ let Aardvark = exports.Aardvark =
{
if (!elem)
return false;
-
+
if ("blinkTimer" in this)
this.stopBlinking();
-
+
let counter = 0;
this.blinkElem = elem;
this.blinkOrigValue = elem.style.visibility;
@@ -575,7 +574,7 @@ let Aardvark = exports.Aardvark =
if (counter == 6)
Aardvark.stopBlinking();
}, 250, Ci.nsITimer.TYPE_REPEATING_SLACK);
-
+
return true;
},
@@ -583,7 +582,7 @@ let Aardvark = exports.Aardvark =
{
this.blinkTimer.cancel();
this.blinkElem.style.visibility = this.blinkOrigValue;
-
+
delete this.blinkElem;
delete this.blinkOrigValue;
delete this.blinkTimer;
@@ -593,7 +592,7 @@ let Aardvark = exports.Aardvark =
{
if (!elem)
return false;
-
+
var sourceBox = E("ehh-viewsource");
if (sourceBox.state == "open" && this.commentElem == elem)
{
@@ -601,12 +600,12 @@ let Aardvark = exports.Aardvark =
return true;
}
sourceBox.hidePopup();
-
+
while (sourceBox.firstElementChild)
sourceBox.removeChild(sourceBox.firstElementChild);
this.getOuterHtmlFormatted(elem, sourceBox);
this.commentElem = elem;
-
+
let anchor = this.window.document.documentElement;
let x = this.mouseX;
let y = this.mouseY;
@@ -623,11 +622,11 @@ let Aardvark = exports.Aardvark =
{
if (!elem)
return false;
-
+
var range = elem.ownerDocument.createRange();
range.selectNodeContents(elem);
var selection = {rangeCount: 1, getRangeAt: function() {return range}};
-
+
this.window.openDialog("chrome://global/content/viewPartialSource.xul", "_blank", "scrollbars,resizable,chrome,dialog=no",
null, null, selection, "selection");
return true;
@@ -641,15 +640,15 @@ let Aardvark = exports.Aardvark =
case node.ELEMENT_NODE:
var box = this.window.document.createElement("vbox");
box.className = "elementBox";
-
+
var startTag = this.window.document.createElement("hbox");
startTag.className = "elementStartTag";
if (!node.firstElementChild)
startTag.className += " elementEndTag";
-
+
this.appendDescription(startTag, "<", null);
this.appendDescription(startTag, node.tagName, "tagName");
-
+
for (var i = 0; i < node.attributes.length; i++)
{
var attr = node.attributes[i];
@@ -660,15 +659,15 @@ let Aardvark = exports.Aardvark =
this.appendDescription(startTag, '"' + attr.value.replace(/"/, """) + '"', "attrValue");
}
}
-
+
this.appendDescription(startTag, node.firstElementChild ? ">" : " />", null);
box.appendChild(startTag);
-
+
if (node.firstElementChild)
{
for (var child = node.firstElementChild; child; child = child.nextElementSibling)
this.getOuterHtmlFormatted(child, box);
-
+
var endTag = this.window.document.createElement("hbox");
endTag.className = "elementEndTag";
this.appendDescription(endTag, "<", null);
@@ -678,7 +677,7 @@ let Aardvark = exports.Aardvark =
}
container.appendChild(box);
return;
-
+
case node.TEXT_NODE:
type = "text";
break;
@@ -691,11 +690,11 @@ let Aardvark = exports.Aardvark =
default:
return;
}
-
+
var text = node.nodeValue.replace(/\r/g, '').replace(/^\s+/, '').replace(/\s+$/, '');
if (text == "")
return;
-
+
if (type != "cdata")
{
text = text.replace(/&/g, "&")
@@ -707,7 +706,7 @@ let Aardvark = exports.Aardvark =
text = "<![CDATA[" + text + "]]>";
else if (type == "comment")
text = "<!--" + text + "-->";
-
+
var lines = text.split("\n");
for (var i = 0; i < lines.length; i++)
this.appendDescription(container, lines[i].replace(/^\s+/, '').replace(/\s+$/, ''), type);
@@ -721,7 +720,7 @@ let Aardvark = exports.Aardvark =
helpBox.hidePopup();
return true;
}
-
+
// Show help box
helpBox.showPopup(this.browser, -1, -1, "tooltip", "topleft", "topleft");
return true;
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-mozext/adblock-plus-element-hiding-helper.git
More information about the Pkg-mozext-commits
mailing list