Merge pull request #14339 from atom/mb-dont-change-focus-when-hiding-unfocused-dock

Don't change focus when hiding an unfocused dock
This commit is contained in:
Max Brunsfeld
2017-05-11 16:28:27 -07:00
committed by GitHub
3 changed files with 21 additions and 4 deletions

View File

@@ -17,7 +17,7 @@ describe('Dock', () => {
})
describe('when a dock is hidden', () => {
it('transfers focus back to the active center pane', () => {
it('transfers focus back to the active center pane if the dock had focus', () => {
jasmine.attachToDOM(atom.workspace.getElement())
const dock = atom.workspace.getLeftDock()
dock.activate()
@@ -31,6 +31,19 @@ describe('Dock', () => {
dock.toggle()
expect(document.activeElement).toBe(atom.workspace.getCenter().getActivePane().getElement())
// Don't change focus if the dock was not focused in the first place
const modalElement = document.createElement('div')
modalElement.setAttribute('tabindex', -1)
atom.workspace.addModalPanel({item: modalElement})
modalElement.focus()
expect(document.activeElement).toBe(modalElement)
dock.show()
expect(document.activeElement).toBe(modalElement)
dock.hide()
expect(document.activeElement).toBe(modalElement)
})
})

View File

@@ -151,7 +151,7 @@ module.exports = class Dock {
this.state = nextState
this.render(this.state)
if (didHide) this.didHide()
if (didHide) this.didHide(this)
}
render (state) {

View File

@@ -470,8 +470,12 @@ module.exports = class Workspace extends Model {
}
}
didHideDock () {
this.getCenter().activate()
didHideDock (dock) {
const {activeElement} = document
const dockElement = dock.getElement()
if (dockElement === activeElement || dockElement.contains(activeElement)) {
this.getCenter().activate()
}
}
setDraggingItem (draggingItem) {