提交 37cb23d3 编写于 作者: R Rachel Macfarlane

Unregister comment controller when it is disposed

上级 4eb16c20
...@@ -451,6 +451,13 @@ export class MainThreadComments extends Disposable implements MainThreadComments ...@@ -451,6 +451,13 @@ export class MainThreadComments extends Disposable implements MainThreadComments
this._commentService.setWorkspaceComments(String(handle), []); this._commentService.setWorkspaceComments(String(handle), []);
} }
$unregisterCommentController(handle: number): void {
const providerId = this._handlers.get(handle);
this._commentService.unregisterCommentController(providerId);
this._handlers.delete(handle);
this._commentControllers.delete(handle);
}
$updateCommentControllerFeatures(handle: number, features: CommentProviderFeatures): void { $updateCommentControllerFeatures(handle: number, features: CommentProviderFeatures): void {
let provider = this._commentControllers.get(handle); let provider = this._commentControllers.get(handle);
......
...@@ -121,6 +121,7 @@ export interface CommentProviderFeatures { ...@@ -121,6 +121,7 @@ export interface CommentProviderFeatures {
export interface MainThreadCommentsShape extends IDisposable { export interface MainThreadCommentsShape extends IDisposable {
$registerCommentController(handle: number, id: string, label: string): void; $registerCommentController(handle: number, id: string, label: string): void;
$unregisterCommentController(handle: number): void;
$updateCommentControllerFeatures(handle: number, features: CommentProviderFeatures): void; $updateCommentControllerFeatures(handle: number, features: CommentProviderFeatures): void;
$createCommentThread(handle: number, commentThreadHandle: number, threadId: string, resource: UriComponents, range: IRange, comments: modes.Comment[], acceptInputCommand: modes.Command | undefined, additionalCommands: modes.Command[], collapseState: modes.CommentThreadCollapsibleState): modes.CommentThread2 | undefined; $createCommentThread(handle: number, commentThreadHandle: number, threadId: string, resource: UriComponents, range: IRange, comments: modes.Comment[], acceptInputCommand: modes.Command | undefined, additionalCommands: modes.Command[], collapseState: modes.CommentThreadCollapsibleState): modes.CommentThread2 | undefined;
$deleteCommentThread(handle: number, commentThreadHandle: number): void; $deleteCommentThread(handle: number, commentThreadHandle: number): void;
......
...@@ -564,6 +564,8 @@ class ExtHostCommentController implements vscode.CommentController { ...@@ -564,6 +564,8 @@ class ExtHostCommentController implements vscode.CommentController {
this._threads.forEach(value => { this._threads.forEach(value => {
value.dispose(); value.dispose();
}); });
this._proxy.$unregisterCommentController(this.handle);
} }
} }
......
...@@ -45,6 +45,7 @@ export interface ICommentService { ...@@ -45,6 +45,7 @@ export interface ICommentService {
setWorkspaceComments(owner: string, commentsByResource: CommentThread[]): void; setWorkspaceComments(owner: string, commentsByResource: CommentThread[]): void;
removeWorkspaceComments(owner: string): void; removeWorkspaceComments(owner: string): void;
registerCommentController(owner: string, commentControl: MainThreadCommentController): void; registerCommentController(owner: string, commentControl: MainThreadCommentController): void;
unregisterCommentController(owner: string): void;
registerDataProvider(owner: string, commentProvider: DocumentCommentProvider): void; registerDataProvider(owner: string, commentProvider: DocumentCommentProvider): void;
unregisterDataProvider(owner: string): void; unregisterDataProvider(owner: string): void;
updateComments(ownerId: string, event: CommentThreadChangedEvent): void; updateComments(ownerId: string, event: CommentThreadChangedEvent): void;
...@@ -133,6 +134,11 @@ export class CommentService extends Disposable implements ICommentService { ...@@ -133,6 +134,11 @@ export class CommentService extends Disposable implements ICommentService {
this._onDidSetDataProvider.fire(); this._onDidSetDataProvider.fire();
} }
unregisterCommentController(owner: string): void {
this._commentControls.delete(owner);
this._onDidDeleteDataProvider.fire(owner);
}
registerDataProvider(owner: string, commentProvider: DocumentCommentProvider): void { registerDataProvider(owner: string, commentProvider: DocumentCommentProvider): void {
this._commentProviders.set(owner, commentProvider); this._commentProviders.set(owner, commentProvider);
this._onDidSetDataProvider.fire(); this._onDidSetDataProvider.fire();
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册