@@ -42,7 +42,6 @@ import { Range } from 'vs/editor/common/core/range';
4242import { IConfiguration , ScrollType } from 'vs/editor/common/editorCommon' ;
4343import { RenderingContext } from 'vs/editor/common/view/renderingContext' ;
4444import { ViewContext } from 'vs/editor/common/view/viewContext' ;
45- import { ViewEventDispatcher } from 'vs/editor/common/view/viewEventDispatcher' ;
4645import * as viewEvents from 'vs/editor/common/view/viewEvents' ;
4746import { ViewportData } from 'vs/editor/common/viewLayout/viewLinesViewportData' ;
4847import { ViewEventHandler } from 'vs/editor/common/viewModel/viewEventHandler' ;
@@ -64,8 +63,6 @@ export interface IOverlayWidgetData {
6463
6564export class View extends ViewEventHandler {
6665
67- private readonly eventDispatcher : ViewEventDispatcher ;
68-
6966 private _scrollbar : EditorScrollbar ;
7067 private readonly _context : ViewContext ;
7168 private _selections : Selection [ ] ;
@@ -107,18 +104,15 @@ export class View extends ViewEventHandler {
107104
108105 const viewController = new ViewController ( configuration , model , this . outgoingEvents , commandDelegate ) ;
109106
110- // The event dispatcher will always go through _renderOnce before dispatching any events
111- this . eventDispatcher = new ViewEventDispatcher ( ( callback : ( ) => void ) => this . _renderOnce ( callback ) ) ;
107+ // The view context is passed on to most classes (basically to reduce param. counts in ctors)
108+ this . _context = new ViewContext ( configuration , themeService . getColorTheme ( ) , model ) ;
112109
113110 // Ensure the view is the first event handler in order to update the layout
114- this . eventDispatcher . addEventHandler ( this ) ;
115-
116- // The view context is passed on to most classes (basically to reduce param. counts in ctors)
117- this . _context = new ViewContext ( configuration , themeService . getColorTheme ( ) , model , this . eventDispatcher ) ;
111+ this . _context . addEventHandler ( this ) ;
118112
119113 this . _register ( themeService . onDidColorThemeChange ( theme => {
120114 this . _context . theme . update ( theme ) ;
121- this . eventDispatcher . emit ( new viewEvents . ViewThemeChangedEvent ( ) ) ;
115+ this . _context . model . onDidColorThemeChange ( ) ;
122116 this . render ( true , false ) ;
123117 } ) ) ;
124118
@@ -224,10 +218,6 @@ export class View extends ViewEventHandler {
224218
225219 // Pointer handler
226220 this . pointerHandler = this . _register ( new PointerHandler ( this . _context , viewController , this . createPointerHandlerHelper ( ) ) ) ;
227-
228- this . _register ( model . addViewEventListener ( ( events : viewEvents . ViewEvent [ ] ) => {
229- this . eventDispatcher . emitMany ( events ) ;
230- } ) ) ;
231221 }
232222
233223 private _flushAccumulatedAndRenderNow ( ) : void {
@@ -300,7 +290,10 @@ export class View extends ViewEventHandler {
300290 }
301291
302292 // --- begin event handlers
303-
293+ public handleEvents ( events : viewEvents . ViewEvent [ ] ) : void {
294+ super . handleEvents ( events ) ;
295+ this . _scheduleRender ( ) ;
296+ }
304297 public onConfigurationChanged ( e : viewEvents . ViewConfigurationChangedEvent ) : boolean {
305298 this . domNode . setClassName ( this . getEditorClassName ( ) ) ;
306299 this . _applyLayout ( ) ;
@@ -340,7 +333,7 @@ export class View extends ViewEventHandler {
340333 this . _renderAnimationFrame = null ;
341334 }
342335
343- this . eventDispatcher . removeEventHandler ( this ) ;
336+ this . _context . removeEventHandler ( this ) ;
344337 this . outgoingEvents . dispose ( ) ;
345338
346339 this . viewLines . dispose ( ) ;
@@ -354,12 +347,6 @@ export class View extends ViewEventHandler {
354347 super . dispose ( ) ;
355348 }
356349
357- private _renderOnce < T > ( callback : ( ) => T ) : T {
358- const r = safeInvokeNoArg ( callback ) ;
359- this . _scheduleRender ( ) ;
360- return r ;
361- }
362-
363350 private _scheduleRender ( ) : void {
364351 if ( this . _renderAnimationFrame === null ) {
365352 this . _renderAnimationFrame = dom . runAtThisOrScheduleAtNextAnimationFrame ( this . _onRenderScheduled . bind ( this ) , 100 ) ;
@@ -477,13 +464,9 @@ export class View extends ViewEventHandler {
477464 }
478465
479466 public change ( callback : ( changeAccessor : IViewZoneChangeAccessor ) => any ) : boolean {
480- return this . _renderOnce ( ( ) => {
481- const zonesHaveChanged = this . viewZones . changeViewZones ( callback ) ;
482- if ( zonesHaveChanged ) {
483- this . _context . privateViewEventBus . emit ( new viewEvents . ViewZonesChangedEvent ( ) ) ;
484- }
485- return zonesHaveChanged ;
486- } ) ;
467+ const hadAChange = this . viewZones . changeViewZones ( callback ) ;
468+ this . _scheduleRender ( ) ;
469+ return hadAChange ;
487470 }
488471
489472 public render ( now : boolean , everything : boolean ) : void {
0 commit comments