Skip to content

Commit d904014

Browse files
authored
Git - fix commitInProgress context key (microsoft#162562)
Fix microsoft#154628
1 parent 3551b7e commit d904014

File tree

2 files changed

+20
-5
lines changed

2 files changed

+20
-5
lines changed

extensions/git/src/model.ts

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
import { workspace, WorkspaceFoldersChangeEvent, Uri, window, Event, EventEmitter, QuickPickItem, Disposable, SourceControl, SourceControlResourceGroup, TextEditor, Memento, commands } from 'vscode';
77
import TelemetryReporter from '@vscode/extension-telemetry';
8-
import { Repository, RepositoryState } from './repository';
8+
import { Operation, Repository, RepositoryState } from './repository';
99
import { memoize, sequentialize, debounce } from './decorators';
1010
import { dispose, anyEvent, filterEvent, isDescendant, pathEquals, toDisposable, eventToPromise } from './util';
1111
import { Git } from './git';
@@ -467,11 +467,28 @@ export class Model implements IRemoteSourcePublisherRegistry, IPostCommitCommand
467467
});
468468
checkForSubmodules();
469469

470+
const updateCommitInProgressContext = () => {
471+
let commitInProgress = false;
472+
for (const { repository } of this.openRepositories.values()) {
473+
if (repository.operations.isRunning(Operation.Commit)) {
474+
commitInProgress = true;
475+
break;
476+
}
477+
}
478+
479+
commands.executeCommand('setContext', 'commitInProgress', commitInProgress);
480+
};
481+
482+
const operationEvent = anyEvent(repository.onDidRunOperation as Event<any>, repository.onRunOperation as Event<any>);
483+
const operationListener = operationEvent(() => updateCommitInProgressContext());
484+
updateCommitInProgressContext();
485+
470486
const dispose = () => {
471487
disappearListener.dispose();
472488
changeListener.dispose();
473489
originalResourceChangeListener.dispose();
474490
statusListener.dispose();
491+
operationListener.dispose();
475492
repository.dispose();
476493

477494
this.openRepositories = this.openRepositories.filter(e => e !== openRepository);

extensions/git/src/repository.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -460,10 +460,8 @@ class ProgressManager {
460460
this.updateEnablement();
461461

462462
this.repository.onDidChangeOperations(() => {
463-
const commitInProgress = this.repository.operations.isRunning(Operation.Commit);
464-
465-
this.repository.sourceControl.inputBox.enabled = !commitInProgress;
466-
commands.executeCommand('setContext', 'commitInProgress', commitInProgress);
463+
// Disable input box when the commit operation is running
464+
this.repository.sourceControl.inputBox.enabled = !this.repository.operations.isRunning(Operation.Commit);
467465
});
468466
}
469467

0 commit comments

Comments
 (0)