From 362506120145454f8405ec00a7e185d35402e066 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Moreno?= Date: Tue, 23 Jun 2020 19:57:46 +0200 Subject: [PATCH] styling, menus --- extensions/git/src/repository.ts | 8 +++--- .../contrib/scm/browser/media/scm.css | 18 ++++++++++--- .../contrib/scm/browser/scmViewPane.ts | 27 ++++++++++++------- 3 files changed, 36 insertions(+), 17 deletions(-) diff --git a/extensions/git/src/repository.ts b/extensions/git/src/repository.ts index 44a8858c63d..72afa29eeea 100644 --- a/extensions/git/src/repository.ts +++ b/extensions/git/src/repository.ts @@ -729,10 +729,10 @@ export class Repository implements Disposable { this.updateInputBoxPlaceholder(); this.disposables.push(this.onDidRunGitStatus(() => this.updateInputBoxPlaceholder())); - this._mergeGroup = this._sourceControl.createResourceGroup('merge', localize('merge changes', "MERGE CHANGES")); - this._indexGroup = this._sourceControl.createResourceGroup('index', localize('staged changes', "STAGED CHANGES")); - this._workingTreeGroup = this._sourceControl.createResourceGroup('workingTree', localize('changes', "CHANGES")); - this._untrackedGroup = this._sourceControl.createResourceGroup('untracked', localize('untracked changes', "UNTRACKED CHANGES")); + this._mergeGroup = this._sourceControl.createResourceGroup('merge', localize('merge changes', "Merge Changes")); + this._indexGroup = this._sourceControl.createResourceGroup('index', localize('staged changes', "Staged Changes")); + this._workingTreeGroup = this._sourceControl.createResourceGroup('workingTree', localize('changes', "Changes")); + this._untrackedGroup = this._sourceControl.createResourceGroup('untracked', localize('untracked changes', "Untracked Changes")); const updateIndexGroupVisibility = () => { const config = workspace.getConfiguration('git', root); diff --git a/src/vs/workbench/contrib/scm/browser/media/scm.css b/src/vs/workbench/contrib/scm/browser/media/scm.css index f579402fc54..52d4d23b1b9 100644 --- a/src/vs/workbench/contrib/scm/browser/media/scm.css +++ b/src/vs/workbench/contrib/scm/browser/media/scm.css @@ -61,11 +61,25 @@ .scm-viewlet .scm-provider > .status { flex: 1; display: flex; - padding-right: 10px; + padding: 0 10px; justify-content: flex-end; overflow: hidden; } +.scm-viewlet .scm-provider > .status > .monaco-action-bar { + display: flex; + align-items: center; +} + +.scm-viewlet .scm-provider > .status > .monaco-action-bar > .actions-container { + box-sizing: border-box; + border-width: 1px; + border-style: solid; + height: calc(100% - 4px); + border-radius: 10px; + padding: 0 4px; +} + .scm-viewlet .scm-provider > .status > .monaco-action-bar .action-item { margin-left: 4px; text-overflow: ellipsis; @@ -106,8 +120,6 @@ .scm-viewlet .monaco-list-row .resource-group > .name { flex: 1; - font-size: 11px; - font-weight: bold; overflow: hidden; text-overflow: ellipsis; } diff --git a/src/vs/workbench/contrib/scm/browser/scmViewPane.ts b/src/vs/workbench/contrib/scm/browser/scmViewPane.ts index c706d3ecc42..b4902da25b0 100644 --- a/src/vs/workbench/contrib/scm/browser/scmViewPane.ts +++ b/src/vs/workbench/contrib/scm/browser/scmViewPane.ts @@ -43,11 +43,11 @@ import { compareFileNames, comparePaths } from 'vs/base/common/comparers'; import { FuzzyScore, createMatches, IMatch } from 'vs/base/common/filters'; import { IViewDescriptorService } from 'vs/workbench/common/views'; import { localize } from 'vs/nls'; -import { flatten, find } from 'vs/base/common/arrays'; +import { flatten } from 'vs/base/common/arrays'; import { memoize } from 'vs/base/common/decorators'; import { IStorageService, StorageScope } from 'vs/platform/storage/common/storage'; import { toResource, SideBySideEditor } from 'vs/workbench/common/editor'; -import { SIDE_BAR_BACKGROUND } from 'vs/workbench/common/theme'; +import { SIDE_BAR_BACKGROUND, SIDE_BAR_BORDER } from 'vs/workbench/common/theme'; import { CodeEditorWidget, ICodeEditorWidgetOptions } from 'vs/editor/browser/widget/codeEditorWidget'; import { ITextModel } from 'vs/editor/common/model'; import { IEditorConstructionOptions } from 'vs/editor/common/config/editorOptions'; @@ -989,7 +989,7 @@ class ViewModel { const groupItem = item.groupItems[j]; const resource = this.mode === ViewModelMode.Tree ? groupItem.tree.getNode(uri)?.element - : find(groupItem.resources, r => isEqual(r.sourceUri, uri)); + : groupItem.resources.find(r => isEqual(r.sourceUri, uri)); if (resource) { this.tree.reveal(resource); @@ -1002,22 +1002,22 @@ class ViewModel { } getViewActions(): IAction[] { - if (this.items.length !== 1) { + if (this.repositories.elements.length !== 1) { return []; } - const menus = this.menus.getRepositoryMenus(this.items[0].element.provider); + const menus = this.menus.getRepositoryMenus(this.repositories.elements[0].provider); return menus.getTitleActions(); } getViewSecondaryActions(): IAction[] { const viewAction = new SCMViewSubMenuAction(this); - if (this.items.length !== 1) { - return [viewAction]; + if (this.repositories.elements.length !== 1) { + return viewAction.entries; } - const menus = this.menus.getRepositoryMenus(this.items[0].element.provider); + const menus = this.menus.getRepositoryMenus(this.repositories.elements[0].provider); const secondaryActions = menus.getTitleSecondaryActions(); if (secondaryActions.length === 0) { @@ -1028,11 +1028,11 @@ class ViewModel { } getViewActionsContext(): any { - if (this.items.length !== 1) { + if (this.repositories.elements.length !== 1) { return undefined; } - return this.items[0].element.provider; + return this.repositories.elements[0].provider; } dispose(): void { @@ -1452,6 +1452,8 @@ export class SCMViewPane extends ViewPane { this.menus = this.instantiationService.createInstance(SCMMenus, repositories); this._register(this.menus); + this._register(repositories.onDidSplice(() => this.updateActions())); + const delegate = new ProviderListDelegate(); const actionViewItemProvider = (action: IAction) => this.getActionViewItem(action); @@ -1759,4 +1761,9 @@ registerThemingParticipant((theme, collector) => { if (inputValidationErrorForegroundColor) { collector.addRule(`.scm-viewlet .scm-editor-validation.validation-error { color: ${inputValidationErrorForegroundColor}; }`); } + + const repositoryStatusActionsBorderColor = theme.getColor(SIDE_BAR_BORDER); + if (repositoryStatusActionsBorderColor) { + collector.addRule(`.scm-viewlet .scm-provider > .status > .monaco-action-bar > .actions-container { border-color: ${repositoryStatusActionsBorderColor}; }`); + } });