plugins(files): fix document event listener leak in context menu cleanup
This commit is contained in:
parent
2ff75c4dca
commit
b5d6694afa
|
|
@ -605,12 +605,14 @@
|
||||||
window.__filesClipboard = { action: 'copy', path: entry.relativePath, name: entry.name };
|
window.__filesClipboard = { action: 'copy', path: entry.relativePath, name: entry.name };
|
||||||
}
|
}
|
||||||
|
|
||||||
document.addEventListener('click', function (e) {
|
var onDocClick = function (e) {
|
||||||
if (!ctxMenu.contains(e.target)) hideCtxMenu();
|
if (!ctxMenu.contains(e.target)) hideCtxMenu();
|
||||||
});
|
};
|
||||||
document.addEventListener('keydown', function (e) {
|
var onDocKeydown = function (e) {
|
||||||
if (e.key === 'Escape') hideCtxMenu();
|
if (e.key === 'Escape') hideCtxMenu();
|
||||||
});
|
};
|
||||||
|
document.addEventListener('click', onDocClick);
|
||||||
|
document.addEventListener('keydown', onDocKeydown);
|
||||||
|
|
||||||
listContainer.addEventListener('contextmenu', function (e) {
|
listContainer.addEventListener('contextmenu', function (e) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
|
|
@ -634,6 +636,8 @@
|
||||||
|
|
||||||
containerEl.__filesCleanup = function () {
|
containerEl.__filesCleanup = function () {
|
||||||
disposed = true;
|
disposed = true;
|
||||||
|
document.removeEventListener('click', onDocClick);
|
||||||
|
document.removeEventListener('keydown', onDocKeydown);
|
||||||
if (ctxMenu && ctxMenu.parentNode) ctxMenu.parentNode.removeChild(ctxMenu);
|
if (ctxMenu && ctxMenu.parentNode) ctxMenu.parentNode.removeChild(ctxMenu);
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue