[Pkg-mozext-commits] [requestpolicy] 20/257: [ref] menu: use `addEventListener` for "click"
David Prévot
taffit at moszumanska.debian.org
Thu Jan 28 03:19:52 UTC 2016
This is an automated email from the git hooks/post-receive script.
taffit pushed a commit to branch master
in repository requestpolicy.
commit cd62e82ef995fa93d18f5f53275e19b5c783a62e
Author: Martin Kimmerle <dev at 256k.de>
Date: Fri Aug 7 21:08:58 2015 +0200
[ref] menu: use `addEventListener` for "click"
When using `addEventListener()`, the event listener also needs
to be removed. Therefore the `emptyLists()` function has been
added. It will be called when
* a list should be repopulated
* RequestPolicy shuts down -- `addShutdownFunction()`
---
src/content/ui/menu.js | 65 +++++++++++++++++++++++++++++++++++++++--------
src/content/ui/overlay.js | 3 ++-
2 files changed, 56 insertions(+), 12 deletions(-)
diff --git a/src/content/ui/menu.js b/src/content/ui/menu.js
index d9dbfc7..b16d5d8 100644
--- a/src/content/ui/menu.js
+++ b/src/content/ui/menu.js
@@ -36,6 +36,7 @@ rpcontinued.menu = (function() {
}());
// iMod: Alias for ScriptLoader.importModule
let iMod = ScriptLoader.importModule;
+ let {Environment} = iMod("lib/environment");
let {Logger} = iMod("lib/logger");
let {rpPrefBranch, Prefs} = iMod("lib/prefs");
let {RequestProcessor} = iMod("lib/request-processor");
@@ -95,10 +96,51 @@ rpcontinued.menu = (function() {
var conflictCount = RequestProcessor.getConflictingExtensions().length;
var hideConflictInfo = (conflictCount == 0);
+
+
+ rpcontinued.overlay.OverlayEnvironment.addShutdownFunction(
+ Environment.LEVELS.INTERFACE,
+ function() {
+ emptyLists([
+ self._otherOriginsList,
+ self._blockedDestinationsList,
+ self._mixedDestinationsList,
+ self._allowedDestinationsList,
+ self._addRulesList,
+ self._removeRulesList
+ ]);
+ });
}
};
+ /**
+ * Removes all children from a list and eventually removes
+ * all event listeners.
+ *
+ * @param {Array<Element>} aLists The lists that should be emptied.
+ */
+ function emptyLists(aLists) {
+ for (let list of aLists) {
+ if (!list) {
+ // skip `null` lists
+ continue;
+ }
+
+ // remove all event listeners
+ {
+ let elements = list.getElementsByClassName("listen-click");
+ for (let el of elements) {
+ el.removeEventListener("click", self.itemSelected, false);
+ }
+ }
+
+ // remove the children
+ DOMUtils.removeChildren(list);
+ }
+ }
+
+
self.prepareMenu = function() {
try {
var disabled = Prefs.isBlockingDisabled();
@@ -185,13 +227,14 @@ rpcontinued.menu = (function() {
self._originItem.removeAttribute("default-policy");
self._originItem.removeAttribute("requests-blocked");
- DOMUtils.removeChildren([
- self._otherOriginsList,
- self._blockedDestinationsList,
- self._mixedDestinationsList,
- self._allowedDestinationsList,
- self._removeRulesList,
- self._addRulesList]);
+ emptyLists([
+ self._otherOriginsList,
+ self._blockedDestinationsList,
+ self._mixedDestinationsList,
+ self._allowedDestinationsList,
+ self._removeRulesList,
+ self._addRulesList
+ ]);
$id('rpc-other-origins').hidden = true;
$id('rpc-blocked-destinations').hidden = true;
$id('rpc-mixed-destinations').hidden = true;
@@ -200,7 +243,7 @@ rpcontinued.menu = (function() {
};
self._populateList = function(list, values) {
- DOMUtils.removeChildren(list);
+ emptyLists([list]);
// check whether there are objects of GUILocation or just strings
var guiLocations = values[0] && (values[0] instanceof GUILocation);
@@ -338,7 +381,7 @@ rpcontinued.menu = (function() {
self._populateDetails = function() {
var origin = self._currentlySelectedOrigin;
var dest = self._currentlySelectedDest;
- DOMUtils.removeChildren([self._removeRulesList, self._addRulesList]);
+ emptyLists([self._removeRulesList, self._addRulesList]);
var ruleData = {
'o' : {
@@ -445,8 +488,8 @@ rpcontinued.menu = (function() {
self._addListItem = function(list, cssClass, value, numRequests) {
var hbox = document.createElement("hbox");
- hbox.setAttribute("class", cssClass);
- hbox.setAttribute("onclick", 'rpcontinued.menu.itemSelected(event);');
+ hbox.setAttribute("class", cssClass + " listen-click");
+ hbox.addEventListener("click", self.itemSelected, false);
list.insertBefore(hbox, null);
var destLabel = document.createElement("label");
diff --git a/src/content/ui/overlay.js b/src/content/ui/overlay.js
index 755bf6d..d5e1785 100644
--- a/src/content/ui/overlay.js
+++ b/src/content/ui/overlay.js
@@ -99,7 +99,8 @@ rpcontinued.overlay = (function() {
let self = {
// This is set by request-log.js when it is initialized. We don't need to worry
// about setting it here.
- requestLog: null
+ requestLog: null,
+ OverlayEnvironment: OverlayEnvironment
};
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-mozext/requestpolicy.git
More information about the Pkg-mozext-commits
mailing list