Detach event listeners on destroy

if "on" receives "this", it attaches "eventListeners" array to "this" and stores "{ element, type, callback }" hash in there.
later, during the destruction process, all the entries from this array will be processed by "unbindListeners" helper to detach all the event listeners.
This commit is contained in:
nskazki 2019-07-19 16:12:16 +03:00
parent dfc09b8e04
commit b36b92b247

12
src/js/controls.js vendored
View File

@ -402,7 +402,8 @@ const controls = {
// https://bugzilla.mozilla.org/show_bug.cgi?id=1220143
bindMenuItemShortcuts(menuItem, type) {
// Navigate through menus via arrow keys and space
on(
on.call(
this,
menuItem,
'keydown keyup',
event => {
@ -452,7 +453,7 @@ const controls = {
// Enter will fire a `click` event but we still need to manage focus
// So we bind to keyup which fires after and set focus here
on(menuItem, 'keyup', event => {
on.call(this, menuItem, 'keyup', event => {
if (event.which !== 13) {
return;
}
@ -1463,7 +1464,7 @@ const controls = {
bindMenuItemShortcuts.call(this, menuItem, type);
// Show menu on click
on(menuItem, 'click', () => {
on.call(this, menuItem, 'click', () => {
showMenuPanel.call(this, type, false);
});
@ -1515,7 +1516,8 @@ const controls = {
);
// Go back via keyboard
on(
on.call(
this,
pane,
'keydown',
event => {
@ -1535,7 +1537,7 @@ const controls = {
);
// Go back via button click
on(backButton, 'click', () => {
on.call(this, backButton, 'click', () => {
showMenuPanel.call(this, 'home', false);
});