Backport (2-0-x) - Fix event leak on reuse of touchbar item (#12624)

* 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:26:56 -05:00
committed by Charles Kerr
parent d432038aab
commit 652f83fc88

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