Backport (1-8-x) - Fix event leak on reuse of touchbar item (#12623)

* fix event leak on reuse of touchbar item

* Clean up child touch bar item event listeners and escape item listeners
This commit is contained in:
trop[bot]
2018-04-15 11:27:29 -05:00
committed by Charles Kerr
parent 44d9720629
commit 7189fb5bd8

View File

@@ -118,6 +118,18 @@ class TouchBar extends EventEmitter {
window.removeListener('closed', removeListeners)
window._touchBar = null
delete this.windowListeners[id]
const unregisterItems = (items) => {
for (const item of items) {
item.removeListener('change', this.changeListener)
if (item.child instanceof TouchBar) {
unregisterItems(item.child.ordereredItems)
}
}
}
unregisterItems(this.ordereredItems)
if (this.escapeItem) {
this.escapeItem.removeListener('change', this.changeListener)
}
}
window.once('closed', removeListeners)
this.windowListeners[id] = removeListeners