Make sure there's a single source of truth for dock hover state

Previously, the workspace's idea of the hovered dock and the docks'
themselves could be out of sync.
This commit is contained in:
Matthew Dapena-Tretter
2018-03-01 10:49:58 -08:00
parent c69c82d05a
commit 6f194c7811
2 changed files with 23 additions and 5 deletions

View File

@@ -153,7 +153,10 @@ module.exports = class Dock {
this.state = nextState
this.render(this.state)
const {visible} = this.state
const {hovered, visible} = this.state
if (hovered !== prevState.hovered) {
this.emitter.emit('did-change-hovered', hovered)
}
if (visible !== prevState.visible) {
this.emitter.emit('did-change-visible', visible)
}
@@ -609,6 +612,16 @@ module.exports = class Dock {
return this.paneContainer.onDidDestroyPaneItem(callback)
}
// Extended: Invoke the given callback when the hovered state of the dock changes.
//
// * `callback` {Function} to be called when the hovered state changes.
// * `hovered` {Boolean} Is the dock now hovered?
//
// Returns a {Disposable} on which `.dispose()` can be called to unsubscribe.
onDidChangeHovered (callback) {
return this.emitter.on('did-change-hovered', callback)
}
/*
Section: Pane Items
*/