Skip to content

Commit bd262c9

Browse files
committed
Settings editor - don't blink the scrollbar when toc selection changes
And hide TOC correctly when the editor is narrow
1 parent 39edf26 commit bd262c9

3 files changed

Lines changed: 25 additions & 9 deletions

File tree

src/vs/base/parts/tree/browser/treeUtils.ts

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,28 @@
66

77
import * as _ from 'vs/base/parts/tree/browser/tree';
88

9-
export function collapseAll(tree: _.ITree): void {
9+
export function collapseAll(tree: _.ITree, except?: any): void {
1010
const nav = tree.getNavigator();
1111
let cur;
1212
while (cur = nav.next()) {
13-
tree.collapse(cur);
13+
if (!except || !isEqualOrParent(tree, except, cur)) {
14+
tree.collapse(cur);
15+
}
1416
}
1517
}
1618

19+
export function isEqualOrParent(tree: _.ITree, element: any, candidateParent: any): boolean {
20+
const nav = tree.getNavigator(element);
21+
22+
do {
23+
if (element === candidateParent) {
24+
return true;
25+
}
26+
} while (element = nav.parent());
27+
28+
return false;
29+
}
30+
1731
export function expandAll(tree: _.ITree): void {
1832
const nav = tree.getNavigator();
1933
let cur;

src/vs/workbench/parts/preferences/browser/media/settingsEditor2.css

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,6 @@
133133
display: flex;
134134
margin: auto;
135135
max-width: 1000px;
136-
justify-content: space-between;
137136
}
138137

139138
.settings-editor.search-mode > .settings-body .settings-tree-container .monaco-tree-wrapper,
@@ -142,14 +141,19 @@
142141
margin-left: 0px;
143142
}
144143

144+
.settings-editor.narrow > .settings-body .settings-tree-container .monaco-tree-wrapper,
145+
.settings-editor.narrow > .settings-body > .settings-tree-container .setting-measure-container {
146+
width: calc(100% - 11px);
147+
margin-left: 0px;
148+
}
149+
145150
.settings-editor > .settings-body .settings-tree-container .monaco-tree-wrapper,
146151
.settings-editor > .settings-body > .settings-tree-container .setting-measure-container {
147152
/** 11px for scrollbar + 208px for TOC margin */
148153
width: calc(100% - 219px);
149154
margin-left: 208px;
150155
}
151156

152-
153157
.settings-editor > .settings-body .settings-toc-container {
154158
position: absolute;
155159
width: 160px;

src/vs/workbench/parts/preferences/browser/settingsEditor2.ts

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -437,11 +437,9 @@ export class SettingsEditor2 extends BaseEditor {
437437
if (element && this.tocTree.getSelection()[0] !== element) {
438438
this.tocTree.reveal(element);
439439
const elementTop = this.tocTree.getRelativeTop(element);
440-
collapseAll(this.tocTree);
441-
if (elementTop < 0) {
442-
this.tocTree.reveal(element, 0);
443-
} else if (elementTop > 1) {
444-
this.tocTree.reveal(element, 1);
440+
collapseAll(this.tocTree, element);
441+
if (elementTop < 0 || elementTop > 1) {
442+
this.tocTree.reveal(element);
445443
} else {
446444
this.tocTree.reveal(element, elementTop);
447445
}

0 commit comments

Comments
 (0)