Skip to content

Commit 0e9c2fa

Browse files
authored
testing: use a real terminal in test Test Results view (microsoft#184963)
* wip * wip * it works * address pr comments * add cwd capability to test peek view * add padding and fix peek display issues * ignore scroll events with default prevented * fixup tests * comments * comments
1 parent 1eec409 commit 0e9c2fa

File tree

14 files changed

+606
-257
lines changed

14 files changed

+606
-257
lines changed

src/vs/base/browser/ui/scrollbar/scrollableElement.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -373,6 +373,9 @@ export abstract class AbstractScrollableElement extends Widget {
373373
}
374374

375375
private _onMouseWheel(e: StandardWheelEvent): void {
376+
if (e.browserEvent?.defaultPrevented) {
377+
return;
378+
}
376379

377380
const classifier = MouseWheelClassifier.INSTANCE;
378381
if (SCROLL_WHEEL_SMOOTH_SCROLL_ENABLED) {

src/vs/workbench/contrib/terminal/browser/media/scrollbar.css

Lines changed: 11 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -3,54 +3,43 @@
33
* Licensed under the MIT License. See License.txt in the project root for license information.
44
*--------------------------------------------------------------------------------------------*/
55

6-
.monaco-workbench .editor-instance .xterm-viewport,
7-
.monaco-workbench .pane-body.integrated-terminal .xterm-viewport {
6+
.monaco-workbench .xterm-viewport {
87
/* Use the hack presented in https://stackoverflow.com/a/38748186/1156119 to get opacity transitions working on the scrollbar */
98
-webkit-background-clip: text;
109
background-clip: text;
1110
-webkit-text-fill-color: transparent;
1211
transition: background-color 800ms linear;
1312
}
1413

15-
.monaco-workbench .editor-instance .xterm-viewport,
16-
.monaco-workbench .pane-body.integrated-terminal .xterm-viewport {
14+
.monaco-workbench .xterm-viewport {
1715
scrollbar-width: thin;
1816
}
1917

20-
.monaco-workbench .editor-instance .xterm-viewport::-webkit-scrollbar,
21-
.monaco-workbench .pane-body.integrated-terminal .xterm-viewport::-webkit-scrollbar {
18+
.monaco-workbench .xterm-viewport::-webkit-scrollbar {
2219
width: 10px;
2320
}
2421

25-
.monaco-workbench .editor-instance .xterm-viewport::-webkit-scrollbar-track,
26-
.monaco-workbench .pane-body.integrated-terminal .xterm-viewport::-webkit-scrollbar-track {
22+
.monaco-workbench .xterm-viewport::-webkit-scrollbar-track {
2723
opacity: 0;
2824
}
2925

30-
.monaco-workbench .editor-instance .xterm-viewport::-webkit-scrollbar-thumb,
31-
.monaco-workbench .pane-body.integrated-terminal .xterm-viewport::-webkit-scrollbar-thumb {
26+
.monaco-workbench .xterm-viewport::-webkit-scrollbar-thumb {
3227
min-height: 20px;
3328
background-color: inherit;
3429
}
3530

36-
.monaco-workbench .editor-instance .force-scrollbar .xterm .xterm-viewport,
37-
.monaco-workbench .pane-body.integrated-terminal .force-scrollbar .xterm .xterm-viewport,
38-
.monaco-workbench .editor-instance .xterm.focus .xterm-viewport,
39-
.monaco-workbench .pane-body.integrated-terminal .xterm.focus .xterm-viewport,
40-
.monaco-workbench .editor-instance .xterm:focus .xterm-viewport,
41-
.monaco-workbench .pane-body.integrated-terminal .xterm:focus .xterm-viewport,
42-
.monaco-workbench .editor-instance .xterm:hover .xterm-viewport,
43-
.monaco-workbench .pane-body.integrated-terminal .xterm:hover .xterm-viewport {
31+
.monaco-workbench .force-scrollbar .xterm .xterm-viewport,
32+
.monaco-workbench .xterm.focus .xterm-viewport,
33+
.monaco-workbench .xterm:focus .xterm-viewport,
34+
.monaco-workbench .xterm:hover .xterm-viewport {
4435
transition: opacity 100ms linear;
4536
cursor: default;
4637
}
4738

48-
.monaco-workbench .editor-instance .xterm .xterm-viewport::-webkit-scrollbar-thumb:hover,
49-
.monaco-workbench .pane-body.integrated-terminal .xterm .xterm-viewport::-webkit-scrollbar-thumb:hover {
39+
.monaco-workbench .xterm .xterm-viewport::-webkit-scrollbar-thumb:hover {
5040
transition: opacity 0ms linear;
5141
}
5242

53-
.monaco-workbench .editor-instance .xterm .xterm-viewport::-webkit-scrollbar-thumb:window-inactive,
54-
.monaco-workbench .pane-body.integrated-terminal .xterm .xterm-viewport::-webkit-scrollbar-thumb:window-inactive {
43+
.monaco-workbench .xterm .xterm-viewport::-webkit-scrollbar-thumb:window-inactive {
5544
background-color: inherit;
5645
}

src/vs/workbench/contrib/terminal/browser/media/terminal.css

Lines changed: 30 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@
2626
.monaco-workbench .pane-body.integrated-terminal .terminal-groups-container,
2727
.monaco-workbench .pane-body.integrated-terminal .terminal-group,
2828
.monaco-workbench .pane-body.integrated-terminal .terminal-split-pane,
29-
.monaco-workbench .editor-instance .terminal-split-pane,
30-
.monaco-workbench .editor-instance .terminal-outer-container {
29+
.monaco-workbench .terminal-editor .terminal-split-pane,
30+
.monaco-workbench .terminal-editor .terminal-outer-container {
3131
height: 100%;
3232
}
3333
.monaco-workbench .part.sidebar .pane-body.integrated-terminal .terminal-outer-container,
@@ -48,7 +48,7 @@
4848
background-color: var(--vscode-terminal-tab-activeBorder);
4949
}
5050
/* Override monaco's styles for terminal editors */
51-
.monaco-workbench .editor-instance .xterm textarea:focus {
51+
.monaco-workbench .terminal-editor .xterm textarea:focus {
5252
opacity: 0 !important;
5353
outline: 0 !important;
5454
}
@@ -62,20 +62,23 @@
6262
background-image: none !important;
6363
}
6464

65-
.monaco-workbench .editor-instance .terminal-wrapper {
65+
.monaco-workbench .terminal-editor .terminal-wrapper {
6666
background-color: var(--vscode-terminal-background, --vscode-editorPane-background);
6767
}
68-
.monaco-workbench .editor-instance .terminal-wrapper,
68+
.monaco-workbench .terminal-editor .terminal-wrapper,
6969
.monaco-workbench .pane-body.integrated-terminal .terminal-wrapper {
7070
display: block;
7171
height: 100%;
7272
box-sizing: border-box;
7373
}
7474

75-
.monaco-workbench .editor-instance .xterm,
76-
.monaco-workbench .pane-body.integrated-terminal .xterm {
75+
.monaco-workbench .xterm {
7776
/* All terminals have at least 10px left/right edge padding and 2 padding on the bottom (so underscores on last line are visible */
7877
padding: 0 10px 2px;
78+
}
79+
80+
.monaco-workbench .terminal-editor .xterm,
81+
.monaco-workbench .pane-body.integrated-terminal .xterm {
7982
/* Bottom align the terminal within the split pane */
8083
position: absolute;
8184
bottom: 0;
@@ -88,23 +91,23 @@
8891
top: 0;
8992
}
9093

91-
.monaco-workbench .editor-instance .terminal-wrapper.fixed-dims .xterm,
94+
.monaco-workbench .terminal-editor .terminal-wrapper.fixed-dims .xterm,
9295
.monaco-workbench .pane-body.integrated-terminal .terminal-wrapper.fixed-dims .xterm {
9396
position: static;
9497
}
9598

96-
.monaco-workbench .editor-instance .xterm-viewport,
99+
.monaco-workbench .terminal-editor .xterm-viewport,
97100
.monaco-workbench .pane-body.integrated-terminal .xterm-viewport {
98101
z-index: 30;
99102
}
100103

101-
.monaco-workbench .editor-instance .xterm-decoration-overview-ruler,
104+
.monaco-workbench .terminal-editor .xterm-decoration-overview-ruler,
102105
.monaco-workbench .pane-body.integrated-terminal .xterm-decoration-overview-ruler {
103106
z-index: 31; /* Must be higher than .xterm-viewport */
104107
pointer-events: none;
105108
}
106109

107-
.monaco-workbench .editor-instance .xterm-screen,
110+
.monaco-workbench .terminal-editor .xterm-screen,
108111
.monaco-workbench .pane-body.integrated-terminal .xterm-screen {
109112
z-index: 31;
110113
}
@@ -127,7 +130,7 @@
127130
.xterm.xterm-cursor-pointer .xterm-screen { cursor: pointer; }
128131
.xterm.column-select.focus .xterm-screen { cursor: crosshair; }
129132

130-
.monaco-workbench .editor-instance .xterm {
133+
.monaco-workbench .terminal-editor .xterm {
131134
padding-left: 20px !important;
132135
}
133136

@@ -136,34 +139,34 @@
136139
padding-left: 20px !important;
137140
}
138141

139-
.monaco-workbench .editor-instance .terminal-group .monaco-split-view2.horizontal .split-view-view:last-child .xterm,
142+
.monaco-workbench .terminal-editor .terminal-group .monaco-split-view2.horizontal .split-view-view:last-child .xterm,
140143
.monaco-workbench .pane-body.integrated-terminal .terminal-group .monaco-split-view2.horizontal .split-view-view:last-child .xterm {
141144
padding-right: 20px;
142145
}
143146

144-
.monaco-workbench .editor-instance .xterm a:not(.xterm-invalid-link),
147+
.monaco-workbench .terminal-editor .xterm a:not(.xterm-invalid-link),
145148
.monaco-workbench .pane-body.integrated-terminal .xterm a:not(.xterm-invalid-link) {
146149
/* To support message box sizing */
147150
position: relative;
148151
}
149152

150-
.monaco-workbench .editor-instance .terminal-wrapper > div,
153+
.monaco-workbench .terminal-editor .terminal-wrapper > div,
151154
.monaco-workbench .pane-body.integrated-terminal .terminal-wrapper > div {
152155
height: 100%;
153156
}
154157

155-
.monaco-workbench .editor-instance .xterm-viewport,
158+
.monaco-workbench .terminal-editor .xterm-viewport,
156159
.monaco-workbench .pane-body.integrated-terminal .xterm-viewport {
157160
box-sizing: border-box;
158161
}
159162

160-
.monaco-workbench .editor-instance .terminal-wrapper.fixed-dims,
163+
.monaco-workbench .terminal-editor .terminal-wrapper.fixed-dims,
161164
.monaco-workbench .pane-body.integrated-terminal .terminal-wrapper.fixed-dims {
162165
/* The viewport should be positioned against this so it does't conflict with a fixed dimensions terminal horizontal scroll bar*/
163166
position: relative;
164167
}
165168

166-
.monaco-workbench .editor-instance .terminal-wrapper:not(.fixed-dims) .xterm-viewport,
169+
.monaco-workbench .terminal-editor .terminal-wrapper:not(.fixed-dims) .xterm-viewport,
167170
.monaco-workbench .pane-body.integrated-terminal .terminal-wrapper:not(.fixed-dims) .xterm-viewport {
168171
/* Override xterm.js' width as we want to size the viewport to fill the panel so the scrollbar is on the right edge */
169172
width: auto !important;
@@ -245,7 +248,7 @@
245248
top: 0;
246249
}
247250

248-
.monaco-workbench .pane-body.integrated-terminal .xterm .xterm-helper-textarea:focus {
251+
.monaco-workbench .xterm .xterm-helper-textarea:focus {
249252
/* Override the general vscode style applies `opacity:1!important` to textareas */
250253
opacity: 0 !important;
251254
}
@@ -522,34 +525,26 @@
522525
background-color: var(--vscode-terminal-hoverHighlightBackground);
523526
}
524527

525-
.monaco-workbench .editor-instance .force-scrollbar .xterm .xterm-viewport,
526-
.monaco-workbench .pane-body.integrated-terminal .force-scrollbar .xterm .xterm-viewport,
527-
.monaco-workbench .editor-instance .xterm.focus .xterm-viewport,
528-
.monaco-workbench .pane-body.integrated-terminal .xterm.focus .xterm-viewport,
529-
.monaco-workbench .editor-instance .xterm:focus .xterm-viewport,
530-
.monaco-workbench .pane-body.integrated-terminal .xterm:focus .xterm-viewport,
531-
.monaco-workbench .editor-instance .xterm:hover .xterm-viewport,
532-
.monaco-workbench .pane-body.integrated-terminal .xterm:hover .xterm-viewport {
528+
.force-scrollbar .xterm .xterm-viewport,
529+
.monaco-workbench .xterm.focus .xterm-viewport,
530+
.monaco-workbench .xterm:focus .xterm-viewport,
531+
.monaco-workbench .xterm:hover .xterm-viewport {
533532
background-color: var(--vscode-scrollbarSlider-background) !important;
534533
}
535534

536-
.monaco-workbench .editor-instance .xterm-viewport,
537-
.monaco-workbench .pane-body.integrated-terminal .xterm-viewport {
535+
.monaco-workbench .xterm-viewport {
538536
scrollbar-color: var(--vscode-scrollbarSlider-background) transparent;
539537
}
540538

541-
.monaco-workbench .editor-instance .xterm .xterm-viewport::-webkit-scrollbar-thumb:hover,
542-
.monaco-workbench .pane-body.integrated-terminal .xterm .xterm-viewport::-webkit-scrollbar-thumb:hover {
539+
.monaco-workbench .xterm .xterm-viewport::-webkit-scrollbar-thumb:hover {
543540
background-color: var(--vscode-scrollbarSlider-hoverBackground);
544541
}
545542

546-
.monaco-workbench .editor-instance .xterm-viewport:hover,
547-
.monaco-workbench .pane-body.integrated-terminal .xterm-viewport:hover {
543+
.monaco-workbench .xterm-viewport:hover {
548544
scrollbar-color: var(--vscode-scrollbarSlider-hoverBackground) transparent;
549545
}
550546

551-
.monaco-workbench .editor-instance .xterm .xterm-viewport::-webkit-scrollbar-thumb:active,
552-
.monaco-workbench .pane-body.integrated-terminal .xterm .xterm-viewport::-webkit-scrollbar-thumb:active {
547+
.monaco-workbench .xterm .xterm-viewport::-webkit-scrollbar-thumb:active {
553548
background-color: var(--vscode-scrollbarSlider-activeBackground);
554549
}
555550

0 commit comments

Comments
 (0)