Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/src/vs/editor/common/viewEventHandler.ts
3292 views
1
/*---------------------------------------------------------------------------------------------
2
* Copyright (c) Microsoft Corporation. All rights reserved.
3
* Licensed under the MIT License. See License.txt in the project root for license information.
4
*--------------------------------------------------------------------------------------------*/
5
6
import { Disposable } from '../../base/common/lifecycle.js';
7
import * as viewEvents from './viewEvents.js';
8
9
export class ViewEventHandler extends Disposable {
10
11
private _shouldRender: boolean;
12
13
constructor() {
14
super();
15
this._shouldRender = true;
16
}
17
18
public shouldRender(): boolean {
19
return this._shouldRender;
20
}
21
22
public forceShouldRender(): void {
23
this._shouldRender = true;
24
}
25
26
protected setShouldRender(): void {
27
this._shouldRender = true;
28
}
29
30
public onDidRender(): void {
31
this._shouldRender = false;
32
}
33
34
// --- begin event handlers
35
36
public onCompositionStart(e: viewEvents.ViewCompositionStartEvent): boolean {
37
return false;
38
}
39
public onCompositionEnd(e: viewEvents.ViewCompositionEndEvent): boolean {
40
return false;
41
}
42
public onConfigurationChanged(e: viewEvents.ViewConfigurationChangedEvent): boolean {
43
return false;
44
}
45
public onCursorStateChanged(e: viewEvents.ViewCursorStateChangedEvent): boolean {
46
return false;
47
}
48
public onDecorationsChanged(e: viewEvents.ViewDecorationsChangedEvent): boolean {
49
return false;
50
}
51
public onFlushed(e: viewEvents.ViewFlushedEvent): boolean {
52
return false;
53
}
54
public onFocusChanged(e: viewEvents.ViewFocusChangedEvent): boolean {
55
return false;
56
}
57
public onLanguageConfigurationChanged(e: viewEvents.ViewLanguageConfigurationEvent): boolean {
58
return false;
59
}
60
public onLineMappingChanged(e: viewEvents.ViewLineMappingChangedEvent): boolean {
61
return false;
62
}
63
public onLinesChanged(e: viewEvents.ViewLinesChangedEvent): boolean {
64
return false;
65
}
66
public onLinesDeleted(e: viewEvents.ViewLinesDeletedEvent): boolean {
67
return false;
68
}
69
public onLinesInserted(e: viewEvents.ViewLinesInsertedEvent): boolean {
70
return false;
71
}
72
public onRevealRangeRequest(e: viewEvents.ViewRevealRangeRequestEvent): boolean {
73
return false;
74
}
75
public onScrollChanged(e: viewEvents.ViewScrollChangedEvent): boolean {
76
return false;
77
}
78
public onThemeChanged(e: viewEvents.ViewThemeChangedEvent): boolean {
79
return false;
80
}
81
public onTokensChanged(e: viewEvents.ViewTokensChangedEvent): boolean {
82
return false;
83
}
84
public onTokensColorsChanged(e: viewEvents.ViewTokensColorsChangedEvent): boolean {
85
return false;
86
}
87
public onZonesChanged(e: viewEvents.ViewZonesChangedEvent): boolean {
88
return false;
89
}
90
91
// --- end event handlers
92
93
public handleEvents(events: viewEvents.ViewEvent[]): void {
94
95
let shouldRender = false;
96
97
for (let i = 0, len = events.length; i < len; i++) {
98
const e = events[i];
99
100
switch (e.type) {
101
102
case viewEvents.ViewEventType.ViewCompositionStart:
103
if (this.onCompositionStart(e)) {
104
shouldRender = true;
105
}
106
break;
107
108
case viewEvents.ViewEventType.ViewCompositionEnd:
109
if (this.onCompositionEnd(e)) {
110
shouldRender = true;
111
}
112
break;
113
114
case viewEvents.ViewEventType.ViewConfigurationChanged:
115
if (this.onConfigurationChanged(e)) {
116
shouldRender = true;
117
}
118
break;
119
120
case viewEvents.ViewEventType.ViewCursorStateChanged:
121
if (this.onCursorStateChanged(e)) {
122
shouldRender = true;
123
}
124
break;
125
126
case viewEvents.ViewEventType.ViewDecorationsChanged:
127
if (this.onDecorationsChanged(e)) {
128
shouldRender = true;
129
}
130
break;
131
132
case viewEvents.ViewEventType.ViewFlushed:
133
if (this.onFlushed(e)) {
134
shouldRender = true;
135
}
136
break;
137
138
case viewEvents.ViewEventType.ViewFocusChanged:
139
if (this.onFocusChanged(e)) {
140
shouldRender = true;
141
}
142
break;
143
144
case viewEvents.ViewEventType.ViewLanguageConfigurationChanged:
145
if (this.onLanguageConfigurationChanged(e)) {
146
shouldRender = true;
147
}
148
break;
149
150
case viewEvents.ViewEventType.ViewLineMappingChanged:
151
if (this.onLineMappingChanged(e)) {
152
shouldRender = true;
153
}
154
break;
155
156
case viewEvents.ViewEventType.ViewLinesChanged:
157
if (this.onLinesChanged(e)) {
158
shouldRender = true;
159
}
160
break;
161
162
case viewEvents.ViewEventType.ViewLinesDeleted:
163
if (this.onLinesDeleted(e)) {
164
shouldRender = true;
165
}
166
break;
167
168
case viewEvents.ViewEventType.ViewLinesInserted:
169
if (this.onLinesInserted(e)) {
170
shouldRender = true;
171
}
172
break;
173
174
case viewEvents.ViewEventType.ViewRevealRangeRequest:
175
if (this.onRevealRangeRequest(e)) {
176
shouldRender = true;
177
}
178
break;
179
180
case viewEvents.ViewEventType.ViewScrollChanged:
181
if (this.onScrollChanged(e)) {
182
shouldRender = true;
183
}
184
break;
185
186
case viewEvents.ViewEventType.ViewTokensChanged:
187
if (this.onTokensChanged(e)) {
188
shouldRender = true;
189
}
190
break;
191
192
case viewEvents.ViewEventType.ViewThemeChanged:
193
if (this.onThemeChanged(e)) {
194
shouldRender = true;
195
}
196
break;
197
198
case viewEvents.ViewEventType.ViewTokensColorsChanged:
199
if (this.onTokensColorsChanged(e)) {
200
shouldRender = true;
201
}
202
break;
203
204
case viewEvents.ViewEventType.ViewZonesChanged:
205
if (this.onZonesChanged(e)) {
206
shouldRender = true;
207
}
208
break;
209
210
default:
211
console.info('View received unknown event: ');
212
console.info(e);
213
}
214
}
215
216
if (shouldRender) {
217
this._shouldRender = true;
218
}
219
}
220
}
221
222