Skip to content

Commit 72c0c28

Browse files
authored
Pragmatic fix for diff decoration in split editors (microsoft#211356)
* Show git gutter indicators in both panes when using `Split Editor In Group` Fixes microsoft#211257 * Revert "Show git gutter indicators in both panes when using `Split Editor In Group`" This reverts commit e8b2166. * Pragmatic fix
1 parent e5faffe commit 72c0c28

File tree

1 file changed

+26
-2
lines changed

1 file changed

+26
-2
lines changed

src/vs/workbench/contrib/scm/browser/dirtydiffDecorator.ts

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,10 @@ import { AccessibilitySignal, IAccessibilitySignalService } from 'vs/platform/ac
5858
import { IAccessibilityService } from 'vs/platform/accessibility/common/accessibility';
5959
import { IQuickDiffService, QuickDiff } from 'vs/workbench/contrib/scm/common/quickDiff';
6060
import { IQuickDiffSelectItem, SwitchQuickDiffBaseAction, SwitchQuickDiffViewItem } from 'vs/workbench/contrib/scm/browser/dirtyDiffSwitcher';
61+
import { TextDiffEditor } from 'vs/workbench/browser/parts/editor/textDiffEditor';
62+
import { IEditorControl } from 'vs/workbench/common/editor';
63+
import { TextFileEditor } from 'vs/workbench/contrib/files/browser/editors/textFileEditor';
64+
import { SideBySideEditor } from 'vs/workbench/browser/parts/editor/sideBySideEditor';
6165

6266
class DiffActionRunner extends ActionRunner {
6367

@@ -1649,8 +1653,28 @@ export class DirtyDiffWorkbenchController extends Disposable implements ext.IWor
16491653
this.enabled = false;
16501654
}
16511655

1656+
private getVisibleEditorControls(): IEditorControl[] {
1657+
const controls: IEditorControl[] = [];
1658+
const addControl = (control: IEditorControl | undefined) => {
1659+
if (control) {
1660+
controls.push(control);
1661+
}
1662+
};
1663+
1664+
for (const editorPane of this.editorService.visibleEditorPanes) {
1665+
if (editorPane instanceof TextDiffEditor || editorPane instanceof TextFileEditor) {
1666+
addControl(editorPane.getControl());
1667+
} else if (editorPane instanceof SideBySideEditor) {
1668+
addControl(editorPane.getPrimaryEditorPane()?.getControl());
1669+
addControl(editorPane.getSecondaryEditorPane()?.getControl());
1670+
}
1671+
}
1672+
return controls;
1673+
}
1674+
16521675
private onEditorsChanged(): void {
1653-
for (const editor of this.editorService.visibleTextEditorControls) {
1676+
const visibleControls = this.getVisibleEditorControls();
1677+
for (const editor of visibleControls) {
16541678
if (isCodeEditor(editor)) {
16551679
const textModel = editor.getModel();
16561680
const controller = DirtyDiffController.get(editor);
@@ -1676,7 +1700,7 @@ export class DirtyDiffWorkbenchController extends Disposable implements ext.IWor
16761700

16771701
for (const [uri, item] of this.items) {
16781702
for (const editorId of item.keys()) {
1679-
if (!this.editorService.visibleTextEditorControls.find(editor => isCodeEditor(editor) && editor.getModel()?.uri.toString() === uri.toString() && editor.getId() === editorId)) {
1703+
if (!this.getVisibleEditorControls().find(editor => isCodeEditor(editor) && editor.getModel()?.uri.toString() === uri.toString() && editor.getId() === editorId)) {
16801704
if (item.has(editorId)) {
16811705
const dirtyDiffItem = item.get(editorId);
16821706
dirtyDiffItem?.dispose();

0 commit comments

Comments
 (0)