Skip to content

Commit a04ab4d

Browse files
committed
Fixes #2814 moves selection firing to base
1 parent d769f2b commit a04ab4d

4 files changed

Lines changed: 43 additions & 103 deletions

File tree

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/) and this p
99
### Fixed
1010

1111
- Fixes [#2952](https://github.com/gitkraken/vscode-gitlens/issues/2952) - Inline blame not working because of missing ignoreRevsFile
12+
- Fixes [#2814](https://github.com/gitkraken/vscode-gitlens/issues/2814) - GitLens Inspect: "Files Changed" not following when switching between commits in File History
1213

1314
## [14.4.0] - 2023-10-13
1415

src/views/commitsView.ts

Lines changed: 1 addition & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,4 @@
1-
import type {
2-
CancellationToken,
3-
ConfigurationChangeEvent,
4-
TreeViewSelectionChangeEvent,
5-
TreeViewVisibilityChangeEvent,
6-
} from 'vscode';
1+
import type { CancellationToken, ConfigurationChangeEvent } from 'vscode';
72
import { Disposable, ProgressLocation, ThemeIcon, TreeItem, TreeItemCollapsibleState, window } from 'vscode';
83
import type { CommitsViewConfig, ViewFilesLayout } from '../config';
94
import { Commands, GlyphChars } from '../constants';
@@ -24,10 +19,7 @@ import { disposableInterval } from '../system/function';
2419
import type { UsageChangeEvent } from '../telemetry/usageTracker';
2520
import { BranchNode } from './nodes/branchNode';
2621
import { BranchTrackingStatusNode } from './nodes/branchTrackingStatusNode';
27-
import { CommitFileNode } from './nodes/commitFileNode';
28-
import { CommitNode } from './nodes/commitNode';
2922
import { CommandMessageNode } from './nodes/common';
30-
import { FileRevisionAsCommitNode } from './nodes/fileRevisionAsCommitNode';
3123
import type { ViewNode } from './nodes/viewNode';
3224
import { RepositoriesSubscribeableNode, RepositoryFolderNode } from './nodes/viewNode';
3325
import { ViewBase } from './viewBase';
@@ -305,49 +297,6 @@ export class CommitsView extends ViewBase<'commits', CommitsViewNode, CommitsVie
305297
return true;
306298
}
307299

308-
protected override onSelectionChanged(e: TreeViewSelectionChangeEvent<ViewNode>) {
309-
super.onSelectionChanged(e);
310-
this.notifySelections();
311-
}
312-
313-
protected override onVisibilityChanged(e: TreeViewVisibilityChangeEvent) {
314-
super.onVisibilityChanged(e);
315-
316-
if (e.visible) {
317-
this.notifySelections();
318-
}
319-
}
320-
321-
private notifySelections() {
322-
const node = this.selection?.[0];
323-
if (node == null) return;
324-
325-
if (node instanceof CommitNode || node instanceof FileRevisionAsCommitNode || node instanceof CommitFileNode) {
326-
this.container.events.fire(
327-
'commit:selected',
328-
{
329-
commit: node.commit,
330-
interaction: 'passive',
331-
preserveFocus: true,
332-
preserveVisibility: true,
333-
},
334-
{ source: this.id },
335-
);
336-
}
337-
338-
if (node instanceof FileRevisionAsCommitNode || node instanceof CommitFileNode) {
339-
this.container.events.fire(
340-
'file:selected',
341-
{
342-
uri: node.uri,
343-
preserveFocus: true,
344-
preserveVisibility: true,
345-
},
346-
{ source: this.id },
347-
);
348-
}
349-
}
350-
351300
async findCommit(commit: GitCommit | { repoPath: string; ref: string }, token?: CancellationToken) {
352301
const { repoPath } = commit;
353302

src/views/stashesView.ts

Lines changed: 1 addition & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,4 @@
1-
import type {
2-
CancellationToken,
3-
ConfigurationChangeEvent,
4-
Disposable,
5-
TreeViewSelectionChangeEvent,
6-
TreeViewVisibilityChangeEvent,
7-
} from 'vscode';
1+
import type { CancellationToken, ConfigurationChangeEvent, Disposable } from 'vscode';
82
import { ProgressLocation, TreeItem, TreeItemCollapsibleState, window } from 'vscode';
93
import type { StashesViewConfig, ViewFilesLayout } from '../config';
104
import { Commands } from '../constants';
@@ -18,8 +12,6 @@ import { executeCommand } from '../system/command';
1812
import { configuration } from '../system/configuration';
1913
import { gate } from '../system/decorators/gate';
2014
import { StashesNode } from './nodes/stashesNode';
21-
import { StashFileNode } from './nodes/stashFileNode';
22-
import { StashNode } from './nodes/stashNode';
2315
import type { ViewNode } from './nodes/viewNode';
2416
import { RepositoriesSubscribeableNode, RepositoryFolderNode } from './nodes/viewNode';
2517
import { ViewBase } from './viewBase';
@@ -155,48 +147,6 @@ export class StashesView extends ViewBase<'stashes', StashesViewNode, StashesVie
155147
return true;
156148
}
157149

158-
protected override onSelectionChanged(e: TreeViewSelectionChangeEvent<ViewNode>) {
159-
super.onSelectionChanged(e);
160-
this.notifySelections();
161-
}
162-
163-
protected override onVisibilityChanged(e: TreeViewVisibilityChangeEvent) {
164-
super.onVisibilityChanged(e);
165-
if (e.visible) {
166-
this.notifySelections();
167-
}
168-
}
169-
170-
private notifySelections() {
171-
const node = this.selection?.[0];
172-
if (node == null) return;
173-
174-
if (node instanceof StashNode || node instanceof StashFileNode) {
175-
this.container.events.fire(
176-
'commit:selected',
177-
{
178-
commit: node.commit,
179-
interaction: 'passive',
180-
preserveFocus: true,
181-
preserveVisibility: true,
182-
},
183-
{ source: this.id },
184-
);
185-
}
186-
187-
if (node instanceof StashFileNode) {
188-
this.container.events.fire(
189-
'file:selected',
190-
{
191-
uri: node.uri,
192-
preserveFocus: true,
193-
preserveVisibility: true,
194-
},
195-
{ source: this.id },
196-
);
197-
}
198-
}
199-
200150
findStash(stash: GitStashReference, token?: CancellationToken) {
201151
const { repoPath } = stash;
202152

src/views/viewBase.ts

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -406,6 +406,7 @@ export abstract class ViewBase<
406406

407407
protected onSelectionChanged(e: TreeViewSelectionChangeEvent<ViewNode>) {
408408
this._onDidChangeSelection.fire(e);
409+
this.notifySelections();
409410
}
410411

411412
protected onVisibilityChanged(e: TreeViewVisibilityChangeEvent) {
@@ -414,6 +415,45 @@ export abstract class ViewBase<
414415
}
415416

416417
this._onDidChangeVisibility.fire(e);
418+
if (e.visible) {
419+
this.notifySelections();
420+
}
421+
}
422+
423+
private notifySelections() {
424+
const node = this.selection?.[0];
425+
if (node == null) return;
426+
427+
if (
428+
node.is('commit') ||
429+
node.is('stash') ||
430+
node.is('file-commit') ||
431+
node.is('commit-file') ||
432+
node.is('stash-file')
433+
) {
434+
this.container.events.fire(
435+
'commit:selected',
436+
{
437+
commit: node.commit,
438+
interaction: 'passive',
439+
preserveFocus: true,
440+
preserveVisibility: true,
441+
},
442+
{ source: this.id },
443+
);
444+
}
445+
446+
if (node.is('file-commit') || node.is('commit-file') || node.is('stash-file')) {
447+
this.container.events.fire(
448+
'file:selected',
449+
{
450+
uri: node.uri,
451+
preserveFocus: true,
452+
preserveVisibility: true,
453+
},
454+
{ source: this.id },
455+
);
456+
}
417457
}
418458

419459
get activeSelection(): ViewNode | undefined {

0 commit comments

Comments
 (0)