Skip to content
This repository was archived by the owner on Dec 15, 2022. It is now read-only.

Commit 4a97e1a

Browse files
committed
Adopt StubItems added to the workspace after PaneItem mount
1 parent 3d85fd0 commit 4a97e1a

File tree

2 files changed

+24
-2
lines changed

2 files changed

+24
-2
lines changed

lib/atom/pane-item.js

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,30 @@ export default class PaneItem extends React.Component {
7171
}
7272

7373
componentDidMount() {
74+
// Listen for and adopt StubItems that are added after this component has
75+
// already been mounted.
76+
this.subs.add(this.props.workspace.onDidAddPaneItem(({item}) => {
77+
if (item.getRealItem && item.getRealItem() === null) {
78+
const match = this.state.uriPattern.matches(item.getURI());
79+
if (!match.ok()) {
80+
return;
81+
}
82+
83+
const openItem = new OpenItem(match, item.getElement(), item);
84+
openItem.hydrateStub({
85+
copy: () => this.copyOpenItem(openItem),
86+
});
87+
if (this.props.className) {
88+
openItem.addClassName(this.props.className);
89+
}
90+
this.registerCloseListener(item, openItem);
91+
92+
this.setState(prevState => ({
93+
currentlyOpen: [...prevState.currentlyOpen, openItem],
94+
}));
95+
}
96+
}));
97+
7498
for (const openItem of this.state.currentlyOpen) {
7599
this.registerCloseListener(openItem.stubItem, openItem);
76100

test/atom/pane-item.test.js

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -319,11 +319,9 @@ describe('PaneItem', function() {
319319

320320
const stub = StubItem.create('some-component', {title: 'Component'}, 'atom-github://pattern/root/45');
321321
workspace.getActivePane().addItem(stub);
322-
323322
wrapper.update();
324323

325324
assert.isTrue(wrapper.exists('Component[text="45"]'));
326-
assert.strictEqual(stub.getText(), '45');
327325
});
328326
});
329327
});

0 commit comments

Comments
 (0)