Merge pull request #14136 from atom/mb-ns-dont-auto-open-dock-when-adding-item

Open docks when activating their panes, but not when adding items
This commit is contained in:
Max Brunsfeld 2017-04-05 12:44:21 -07:00 committed by GitHub
commit c810ac4f5b
5 changed files with 36 additions and 12 deletions

15
spec/dock-spec.js Normal file
View File

@ -0,0 +1,15 @@
describe('Dock', () => {
describe('when a pane in a dock is activated', () => {
it('opens the dock', () => {
const item = {
getDefaultLocation() { return 'left' }
}
atom.workspace.open(item, {activatePane: false})
expect(atom.workspace.getLeftDock().isOpen()).toBe(false)
atom.workspace.getLeftDock().getPanes()[0].activate()
expect(atom.workspace.getLeftDock().isOpen()).toBe(true)
})
})
})

View File

@ -150,6 +150,22 @@ describe "PaneContainer", ->
pane2.activate()
expect(observed).toEqual [pane1.itemAtIndex(0), pane2.itemAtIndex(0)]
describe "::onDidActivatePane", ->
it "invokes observers when a pane is activated (even if it was already active)", ->
container = new PaneContainer(params)
container.initialize()
container.getRoot().splitRight()
[pane1, pane2] = container.getPanes()
activatedPanes = []
container.onDidActivatePane (pane) -> activatedPanes.push(pane)
pane1.activate()
pane1.activate()
pane2.activate()
pane2.activate()
expect(activatedPanes).toEqual([pane1, pane1, pane2, pane2])
describe "::onDidStopChangingActivePaneItem()", ->
[container, pane1, pane2, observed] = []

View File

@ -48,9 +48,7 @@ module.exports = class Dock {
}
this.subscriptions = new CompositeDisposable(
this.paneContainer.observePanes(pane => {
pane.onDidAddItem(this.handleDidAddPaneItem.bind(this))
}),
this.paneContainer.onDidActivatePane(() => this.activate()),
this.paneContainer.observePanes(pane => {
pane.onDidRemoveItem(this.handleDidRemovePaneItem.bind(this))
})
@ -201,11 +199,6 @@ module.exports = class Dock {
})
}
handleDidAddPaneItem () {
// Show the dock if you drop an item into it.
this.setState({open: true})
}
handleDidRemovePaneItem () {
// Hide the dock if you remove the last item.
if (this.paneContainer.getPaneItems().length === 0) {

View File

@ -68,6 +68,9 @@ class PaneContainer extends Model
onDidChangeActivePane: (fn) ->
@emitter.on 'did-change-active-pane', fn
onDidActivatePane: (fn) ->
@emitter.on 'did-activate-pane', fn
observeActivePane: (fn) ->
fn(@getActivePane())
@onDidChangeActivePane(fn)
@ -127,6 +130,7 @@ class PaneContainer extends Model
@activePane = activePane
@emitter.emit 'did-change-active-pane', @activePane
@emitter.emit 'did-activate-pane', @activePane
@activePane
getActivePaneItem: ->

View File

@ -752,10 +752,6 @@ module.exports = class Workspace extends Model {
if (options.activatePane !== false) {
pane.activate()
if (!container) {
container = this.getPaneContainers().find(container => container.getPanes().includes(pane))
}
container.activate()
}
let initialColumn = 0