@@ -18,6 +18,7 @@ import { Disposable } from 'vs/base/common/lifecycle';
1818import { URI } from 'vs/base/common/uri' ;
1919import { IWorkbenchEnvironmentService } from 'vs/workbench/services/environment/common/environmentService' ;
2020import { domEvent } from 'vs/base/browser/event' ;
21+ import { memoize } from 'vs/base/common/decorators' ;
2122
2223/**
2324 * A workspace to open in the workbench can either be:
@@ -78,18 +79,15 @@ export class BrowserHostService extends Disposable implements IHostService {
7879 }
7980 }
8081
81- private _onDidChangeFocus : Event < boolean > | undefined ;
82+ @ memoize
8283 get onDidChangeFocus ( ) : Event < boolean > {
83- if ( ! this . _onDidChangeFocus ) {
84- const focusTracker = this . _register ( trackFocus ( window ) ) ;
85- this . _onDidChangeFocus = Event . any (
86- Event . map ( focusTracker . onDidFocus , ( ) => this . hasFocus ) ,
87- Event . map ( focusTracker . onDidBlur , ( ) => this . hasFocus ) ,
88- Event . map ( domEvent ( window . document , 'visibilitychange' ) , ( ) => this . hasFocus )
89- ) ;
90- }
84+ const focusTracker = this . _register ( trackFocus ( window ) ) ;
9185
92- return this . _onDidChangeFocus ;
86+ return Event . latch ( Event . any (
87+ Event . map ( focusTracker . onDidFocus , ( ) => this . hasFocus ) ,
88+ Event . map ( focusTracker . onDidBlur , ( ) => this . hasFocus ) ,
89+ Event . map ( domEvent ( window . document , 'visibilitychange' ) , ( ) => this . hasFocus )
90+ ) ) ;
9391 }
9492
9593 get hasFocus ( ) : boolean {
0 commit comments