提交 c6453d86 编写于 作者: S Sandeep Somavarapu

Fix #33485

上级 dbffd8ac
......@@ -228,7 +228,7 @@ export class PreferencesEditor extends BaseEditor {
private updateInput(oldInput: PreferencesEditorInput, newInput: PreferencesEditorInput, options?: EditorOptions): TPromise<void> {
const resource = toResource(newInput.master);
this.settingsTargetsWidget.setTarget(this.getSettingsConfigurationTargetUri(resource), this.getSettingsConfigurationTarget(resource));
this.settingsTargetsWidget.updateTargets(this.getSettingsConfigurationTargetUri(resource), this.getSettingsConfigurationTarget(resource));
return this.sideBySidePreferencesWidget.setInput(<DefaultPreferencesEditorInput>newInput.details, <EditorInput>newInput.master, options).then(({ defaultPreferencesRenderer, editablePreferencesRenderer }) => {
this.preferencesRenderers.defaultPreferencesRenderer = defaultPreferencesRenderer;
......@@ -278,9 +278,14 @@ export class PreferencesEditor extends BaseEditor {
private onWorkbenchStateChanged(): void {
if (this.input) {
const settingsResource = toResource((<PreferencesEditorInput>this.input).master);
const target = this.getSettingsConfigurationTarget(settingsResource);
if (target !== ConfigurationTarget.USER) {
const editableSettingsResource = toResource((<PreferencesEditorInput>this.input).master);
const newConfigurationTarget = this.getSettingsConfigurationTarget(editableSettingsResource);
if (newConfigurationTarget) {
if (newConfigurationTarget !== this.settingsTargetsWidget.configurationTarget) {
// Update the editor if the configuration target of the settings resource changed
this.switchSettings(editableSettingsResource);
}
} else {
this.switchSettings(this.preferencesService.userSettingsResource);
}
}
......@@ -798,7 +803,7 @@ abstract class AbstractSettingsEditorContribution extends Disposable {
return TPromise.as(null);
}
private _onModelChanged(): void {
protected _onModelChanged(): void {
const model = this.editor.getModel();
this.disposePreferencesRenderer();
if (model) {
......@@ -875,6 +880,15 @@ class SettingsEditorContribution extends AbstractSettingsEditorContribution impl
static ID: string = 'editor.contrib.settings';
constructor(editor: ICodeEditor,
@IInstantiationService instantiationService: IInstantiationService,
@IPreferencesService preferencesService: IPreferencesService,
@IWorkspaceContextService workspaceContextService: IWorkspaceContextService
) {
super(editor, instantiationService, preferencesService, workspaceContextService);
this._register(this.workspaceContextService.onDidChangeWorkbenchState(() => this._onModelChanged()));
}
getId(): string {
return SettingsEditorContribution.ID;
}
......
......@@ -271,7 +271,7 @@ export class SettingsTargetsWidget extends Widget {
private borderColor: Color;
constructor(parent: HTMLElement, private uri: URI, private target: ConfigurationTarget,
constructor(parent: HTMLElement, private _uri: URI, private _configuartionTarget: ConfigurationTarget,
@IWorkspaceContextService private workspaceContextService: IWorkspaceContextService,
@IPreferencesService private preferencesService: IPreferencesService,
@IContextMenuService private contextMenuService: IContextMenuService,
......@@ -285,9 +285,13 @@ export class SettingsTargetsWidget extends Widget {
}));
}
public setTarget(uri: URI, target: ConfigurationTarget): void {
this.uri = uri;
this.target = target;
get configurationTarget(): ConfigurationTarget {
return this._configuartionTarget;
}
public updateTargets(uri: URI, configuartionTarget: ConfigurationTarget): void {
this._uri = uri;
this._configuartionTarget = configuartionTarget;
this.updateLabel();
}
......@@ -308,8 +312,8 @@ export class SettingsTargetsWidget extends Widget {
}
private updateLabel(): void {
this.targetLabel.textContent = getSettingsTargetName(this.target, this.uri, this.workspaceContextService);
const details = ConfigurationTarget.FOLDER === this.target ? localize('folderSettingsDetails', "Folder Settings") : '';
this.targetLabel.textContent = getSettingsTargetName(this._configuartionTarget, this._uri, this.workspaceContextService);
const details = ConfigurationTarget.FOLDER === this._configuartionTarget ? localize('folderSettingsDetails', "Folder Settings") : '';
this.targetDetails.textContent = details;
DOM.toggleClass(this.targetDetails, 'empty', !details);
}
......@@ -332,7 +336,7 @@ export class SettingsTargetsWidget extends Widget {
actions.push(<IAction>{
id: 'userSettingsTarget',
label: getSettingsTargetName(ConfigurationTarget.USER, userSettingsResource, this.workspaceContextService),
checked: this.uri.toString() === userSettingsResource.toString(),
checked: this._uri.toString() === userSettingsResource.toString(),
enabled: true,
run: () => this.onTargetClicked(userSettingsResource)
});
......@@ -342,7 +346,7 @@ export class SettingsTargetsWidget extends Widget {
actions.push(<IAction>{
id: 'workspaceSettingsTarget',
label: getSettingsTargetName(ConfigurationTarget.WORKSPACE, workspaceSettingsResource, this.workspaceContextService),
checked: this.uri.toString() === workspaceSettingsResource.toString(),
checked: this._uri.toString() === workspaceSettingsResource.toString(),
enabled: true,
run: () => this.onTargetClicked(workspaceSettingsResource)
});
......@@ -355,7 +359,7 @@ export class SettingsTargetsWidget extends Widget {
return <IAction>{
id: 'folderSettingsTarget' + index,
label: getSettingsTargetName(ConfigurationTarget.FOLDER, folder.uri, this.workspaceContextService),
checked: this.uri.toString() === folder.uri.toString(),
checked: this._uri.toString() === folder.uri.toString(),
enabled: true,
run: () => this.onTargetClicked(folder.uri)
};
......@@ -366,7 +370,7 @@ export class SettingsTargetsWidget extends Widget {
}
private onTargetClicked(target: URI): void {
if (this.uri.toString() === target.toString()) {
if (this._uri.toString() === target.toString()) {
return;
}
this._onDidTargetChange.fire(target);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册