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

Fix #51234

上级 a979c738
...@@ -306,10 +306,10 @@ export class ActivitybarPart extends Part { ...@@ -306,10 +306,10 @@ export class ActivitybarPart extends Part {
private enableCompositeActions(viewlet: ViewletDescriptor): void { private enableCompositeActions(viewlet: ViewletDescriptor): void {
const { activityAction, pinnedAction } = this.getCompositeActions(viewlet.id); const { activityAction, pinnedAction } = this.getCompositeActions(viewlet.id);
if (activityAction instanceof PlaceHolderViewletActivityAction) { if (activityAction instanceof PlaceHolderViewletActivityAction) {
activityAction.enable(viewlet); activityAction.setActivity(viewlet);
} }
if (pinnedAction instanceof PlaceHolderToggleCompositePinnedAction) { if (pinnedAction instanceof PlaceHolderToggleCompositePinnedAction) {
pinnedAction.enable(viewlet); pinnedAction.setActivity(viewlet);
} }
} }
...@@ -376,9 +376,8 @@ class PlaceHolderViewletActivityAction extends ViewletActivityAction { ...@@ -376,9 +376,8 @@ class PlaceHolderViewletActivityAction extends ViewletActivityAction {
this.enabled = false; this.enabled = false;
} }
enable(activity: IActivity): void { setActivity(activity: IActivity): void {
this.label = activity.name; this.activity = activity;
this.class = activity.cssClass;
this.enabled = true; this.enabled = true;
} }
...@@ -393,7 +392,7 @@ class PlaceHolderToggleCompositePinnedAction extends ToggleCompositePinnedAction ...@@ -393,7 +392,7 @@ class PlaceHolderToggleCompositePinnedAction extends ToggleCompositePinnedAction
this.enabled = false; this.enabled = false;
} }
enable(activity: IActivity): void { setActivity(activity: IActivity): void {
this.label = activity.name; this.label = activity.name;
this.enabled = true; this.enabled = true;
} }
......
...@@ -54,6 +54,7 @@ export interface ICompositeBar { ...@@ -54,6 +54,7 @@ export interface ICompositeBar {
export class ActivityAction extends Action { export class ActivityAction extends Action {
private badge: IBadge; private badge: IBadge;
private clazz: string | undefined; private clazz: string | undefined;
private _onDidChangeActivity = new Emitter<this>();
private _onDidChangeBadge = new Emitter<this>(); private _onDidChangeBadge = new Emitter<this>();
constructor(private _activity: IActivity) { constructor(private _activity: IActivity) {
...@@ -66,6 +67,15 @@ export class ActivityAction extends Action { ...@@ -66,6 +67,15 @@ export class ActivityAction extends Action {
return this._activity; return this._activity;
} }
public set activity(activity: IActivity) {
this._activity = activity;
this._onDidChangeActivity.fire(this);
}
public get onDidChangeActivity(): Event<this> {
return this._onDidChangeActivity.event;
}
public get onDidChangeBadge(): Event<this> { public get onDidChangeBadge(): Event<this> {
return this._onDidChangeBadge.event; return this._onDidChangeBadge.event;
} }
...@@ -127,6 +137,7 @@ export class ActivityActionItem extends BaseActionItem { ...@@ -127,6 +137,7 @@ export class ActivityActionItem extends BaseActionItem {
super(null, action, options); super(null, action, options);
this.themeService.onThemeChange(this.onThemeChange, this, this._callOnDispose); this.themeService.onThemeChange(this.onThemeChange, this, this._callOnDispose);
action.onDidChangeActivity(this.updateActivity, this, this._callOnDispose);
action.onDidChangeBadge(this.updateBadge, this, this._callOnDispose); action.onDidChangeBadge(this.updateBadge, this, this._callOnDispose);
} }
...@@ -165,8 +176,7 @@ export class ActivityActionItem extends BaseActionItem { ...@@ -165,8 +176,7 @@ export class ActivityActionItem extends BaseActionItem {
// Make the container tab-able for keyboard navigation // Make the container tab-able for keyboard navigation
this.$container = $(container).attr({ this.$container = $(container).attr({
tabIndex: '0', tabIndex: '0',
role: 'button', role: 'button'
title: this.activity.name
}); });
// Try hard to prevent keyboard only focus feedback when using mouse // Try hard to prevent keyboard only focus feedback when using mouse
...@@ -186,27 +196,26 @@ export class ActivityActionItem extends BaseActionItem { ...@@ -186,27 +196,26 @@ export class ActivityActionItem extends BaseActionItem {
// Label // Label
this.$label = $('a.action-label').appendTo(this.builder); this.$label = $('a.action-label').appendTo(this.builder);
if (this.activity.cssClass) {
this.$label.addClass(this.activity.cssClass);
}
if (!this.options.icon) {
this.$label.text(this.getAction().label);
}
this.$badge = this.builder.clone().div({ 'class': 'badge' }, badge => { this.$badge = this.builder.clone().div({ 'class': 'badge' }, badge => {
this.$badgeContent = badge.div({ 'class': 'badge-content' }); this.$badgeContent = badge.div({ 'class': 'badge-content' });
}); });
this.$badge.hide(); this.$badge.hide();
this.updateActivity();
this.updateStyles(); this.updateStyles();
this.updateBadge();
} }
private onThemeChange(theme: ITheme): void { private onThemeChange(theme: ITheme): void {
this.updateStyles(); this.updateStyles();
} }
protected updateActivity(): void {
this.updateLabel();
this.updateTitle(this.activity.name);
this.updateBadge();
}
protected updateBadge(): void { protected updateBadge(): void {
const action = this.getAction(); const action = this.getAction();
if (!this.$badge || !this.$badgeContent || !(action instanceof ActivityAction)) { if (!this.$badge || !this.$badgeContent || !(action instanceof ActivityAction)) {
...@@ -271,7 +280,19 @@ export class ActivityActionItem extends BaseActionItem { ...@@ -271,7 +280,19 @@ export class ActivityActionItem extends BaseActionItem {
} else { } else {
title = this.activity.name; title = this.activity.name;
} }
this.updateTitle(title);
}
private updateLabel(): void {
if (this.activity.cssClass) {
this.$label.addClass(this.activity.cssClass);
}
if (!this.options.icon) {
this.$label.text(this.getAction().label);
}
}
private updateTitle(title: string): void {
[this.$label, this.$badge, this.$container].forEach(b => { [this.$label, this.$badge, this.$container].forEach(b => {
if (b) { if (b) {
b.attr('aria-label', title); b.attr('aria-label', title);
...@@ -409,6 +430,8 @@ export class CompositeActionItem extends ActivityActionItem { ...@@ -409,6 +430,8 @@ export class CompositeActionItem extends ActivityActionItem {
if (!CompositeActionItem.manageExtensionAction) { if (!CompositeActionItem.manageExtensionAction) {
CompositeActionItem.manageExtensionAction = instantiationService.createInstance(ManageExtensionAction); CompositeActionItem.manageExtensionAction = instantiationService.createInstance(ManageExtensionAction);
} }
compositeActivityAction.onDidChangeActivity(() => { this.compositeActivity = null; this.updateActivity(); }, this, this._callOnDispose);
} }
protected get activity(): IActivity { protected get activity(): IActivity {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册