Path: blob/main/src/vs/editor/common/viewEventHandler.ts
3292 views
/*---------------------------------------------------------------------------------------------1* Copyright (c) Microsoft Corporation. All rights reserved.2* Licensed under the MIT License. See License.txt in the project root for license information.3*--------------------------------------------------------------------------------------------*/45import { Disposable } from '../../base/common/lifecycle.js';6import * as viewEvents from './viewEvents.js';78export class ViewEventHandler extends Disposable {910private _shouldRender: boolean;1112constructor() {13super();14this._shouldRender = true;15}1617public shouldRender(): boolean {18return this._shouldRender;19}2021public forceShouldRender(): void {22this._shouldRender = true;23}2425protected setShouldRender(): void {26this._shouldRender = true;27}2829public onDidRender(): void {30this._shouldRender = false;31}3233// --- begin event handlers3435public onCompositionStart(e: viewEvents.ViewCompositionStartEvent): boolean {36return false;37}38public onCompositionEnd(e: viewEvents.ViewCompositionEndEvent): boolean {39return false;40}41public onConfigurationChanged(e: viewEvents.ViewConfigurationChangedEvent): boolean {42return false;43}44public onCursorStateChanged(e: viewEvents.ViewCursorStateChangedEvent): boolean {45return false;46}47public onDecorationsChanged(e: viewEvents.ViewDecorationsChangedEvent): boolean {48return false;49}50public onFlushed(e: viewEvents.ViewFlushedEvent): boolean {51return false;52}53public onFocusChanged(e: viewEvents.ViewFocusChangedEvent): boolean {54return false;55}56public onLanguageConfigurationChanged(e: viewEvents.ViewLanguageConfigurationEvent): boolean {57return false;58}59public onLineMappingChanged(e: viewEvents.ViewLineMappingChangedEvent): boolean {60return false;61}62public onLinesChanged(e: viewEvents.ViewLinesChangedEvent): boolean {63return false;64}65public onLinesDeleted(e: viewEvents.ViewLinesDeletedEvent): boolean {66return false;67}68public onLinesInserted(e: viewEvents.ViewLinesInsertedEvent): boolean {69return false;70}71public onRevealRangeRequest(e: viewEvents.ViewRevealRangeRequestEvent): boolean {72return false;73}74public onScrollChanged(e: viewEvents.ViewScrollChangedEvent): boolean {75return false;76}77public onThemeChanged(e: viewEvents.ViewThemeChangedEvent): boolean {78return false;79}80public onTokensChanged(e: viewEvents.ViewTokensChangedEvent): boolean {81return false;82}83public onTokensColorsChanged(e: viewEvents.ViewTokensColorsChangedEvent): boolean {84return false;85}86public onZonesChanged(e: viewEvents.ViewZonesChangedEvent): boolean {87return false;88}8990// --- end event handlers9192public handleEvents(events: viewEvents.ViewEvent[]): void {9394let shouldRender = false;9596for (let i = 0, len = events.length; i < len; i++) {97const e = events[i];9899switch (e.type) {100101case viewEvents.ViewEventType.ViewCompositionStart:102if (this.onCompositionStart(e)) {103shouldRender = true;104}105break;106107case viewEvents.ViewEventType.ViewCompositionEnd:108if (this.onCompositionEnd(e)) {109shouldRender = true;110}111break;112113case viewEvents.ViewEventType.ViewConfigurationChanged:114if (this.onConfigurationChanged(e)) {115shouldRender = true;116}117break;118119case viewEvents.ViewEventType.ViewCursorStateChanged:120if (this.onCursorStateChanged(e)) {121shouldRender = true;122}123break;124125case viewEvents.ViewEventType.ViewDecorationsChanged:126if (this.onDecorationsChanged(e)) {127shouldRender = true;128}129break;130131case viewEvents.ViewEventType.ViewFlushed:132if (this.onFlushed(e)) {133shouldRender = true;134}135break;136137case viewEvents.ViewEventType.ViewFocusChanged:138if (this.onFocusChanged(e)) {139shouldRender = true;140}141break;142143case viewEvents.ViewEventType.ViewLanguageConfigurationChanged:144if (this.onLanguageConfigurationChanged(e)) {145shouldRender = true;146}147break;148149case viewEvents.ViewEventType.ViewLineMappingChanged:150if (this.onLineMappingChanged(e)) {151shouldRender = true;152}153break;154155case viewEvents.ViewEventType.ViewLinesChanged:156if (this.onLinesChanged(e)) {157shouldRender = true;158}159break;160161case viewEvents.ViewEventType.ViewLinesDeleted:162if (this.onLinesDeleted(e)) {163shouldRender = true;164}165break;166167case viewEvents.ViewEventType.ViewLinesInserted:168if (this.onLinesInserted(e)) {169shouldRender = true;170}171break;172173case viewEvents.ViewEventType.ViewRevealRangeRequest:174if (this.onRevealRangeRequest(e)) {175shouldRender = true;176}177break;178179case viewEvents.ViewEventType.ViewScrollChanged:180if (this.onScrollChanged(e)) {181shouldRender = true;182}183break;184185case viewEvents.ViewEventType.ViewTokensChanged:186if (this.onTokensChanged(e)) {187shouldRender = true;188}189break;190191case viewEvents.ViewEventType.ViewThemeChanged:192if (this.onThemeChanged(e)) {193shouldRender = true;194}195break;196197case viewEvents.ViewEventType.ViewTokensColorsChanged:198if (this.onTokensColorsChanged(e)) {199shouldRender = true;200}201break;202203case viewEvents.ViewEventType.ViewZonesChanged:204if (this.onZonesChanged(e)) {205shouldRender = true;206}207break;208209default:210console.info('View received unknown event: ');211console.info(e);212}213}214215if (shouldRender) {216this._shouldRender = true;217}218}219}220221222