提交 2d448885 编写于 作者: B Benjamin Pasero

broadcast should support target window

上级 9dd095c2
......@@ -234,9 +234,16 @@ export class WindowsManager {
storage.setItem(WindowsManager.themeStorageKey, theme);
});
ipc.on('vscode:broadcast', (event: Event, windowId: number, broadcast: { channel: string; payload: any; }) => {
ipc.on('vscode:broadcast', (event: Event, windowId: number, target: string, broadcast: { channel: string; payload: any; }) => {
if (broadcast.channel && broadcast.payload) {
this.sendToAll('vscode:broadcast', broadcast, [windowId]);
if (target) {
let targetWindow = this.findWindow(target);
if (targetWindow && targetWindow.win.id !== windowId) {
targetWindow.send('vscode:broadcast', broadcast);
}
} else {
this.sendToAll('vscode:broadcast', broadcast, [windowId]);
}
}
});
......
......@@ -142,7 +142,7 @@ class PluginHostProcessManager {
payload: {
port: port
}
});
}, config.env.pluginDevelopmentPath /* target */);
}
// Messages from Plugin host
......@@ -211,7 +211,7 @@ class PluginHostProcessManager {
this.windowService.broadcast({
channel: PLUGIN_LOG_BROADCAST_CHANNEL,
payload: logEntry
});
}, config.env.pluginDevelopmentPath /* target */);
}
}
......
......@@ -33,7 +33,7 @@ export interface IWindowService {
registerWindow(win: ElectronWindow): void;
broadcast(b: IBroadcast): void;
broadcast(b: IBroadcast, target?: string): void;
onBroadcast: EventProvider<(b: IBroadcast) => void>;
}
......@@ -72,8 +72,8 @@ export class WindowService implements IWindowService {
this.win = win;
}
public broadcast(b: IBroadcast): void {
ipc.send('vscode:broadcast', this.getWindowId(), {
public broadcast(b: IBroadcast, target?: string): void {
ipc.send('vscode:broadcast', this.getWindowId(), target, {
channel: b.channel,
payload: b.payload
});
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册