From a2079a772d6d67df40da3cc3b1b70b01196e34dc Mon Sep 17 00:00:00 2001 From: rebornix Date: Thu, 31 Aug 2017 16:14:22 -0700 Subject: [PATCH] Avoid saturation box repainting when unncessary. --- .../contrib/colorPicker/browser/colorPickerWidget.ts | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/vs/editor/contrib/colorPicker/browser/colorPickerWidget.ts b/src/vs/editor/contrib/colorPicker/browser/colorPickerWidget.ts index 91eb124b905..9e416c5cac3 100644 --- a/src/vs/editor/contrib/colorPicker/browser/colorPickerWidget.ts +++ b/src/vs/editor/contrib/colorPicker/browser/colorPickerWidget.ts @@ -129,6 +129,7 @@ class SaturationBox extends Disposable { private width: number; private height: number; + private monitor: GlobalMouseMoveMonitor; private _onDidChange = new Emitter<{ s: number, v: number }>(); readonly onDidChange: Event<{ s: number, v: number }> = this._onDidChange.event; @@ -154,22 +155,24 @@ class SaturationBox extends Disposable { this._register(dom.addDisposableListener(this.domNode, dom.EventType.MOUSE_DOWN, e => this.onMouseDown(e))); this._register(this.model.onDidChangeColor(this.onDidChangeColor, this)); + this.monitor = null; } private onMouseDown(e: MouseEvent): void { - const monitor = this._register(new GlobalMouseMoveMonitor()); + this.monitor = this._register(new GlobalMouseMoveMonitor()); const origin = dom.getDomNodePagePosition(this.domNode); if (e.target !== this.selection) { this.onDidChangePosition(e.offsetX, e.offsetY); } - monitor.startMonitoring(standardMouseMoveMerger, event => this.onDidChangePosition(event.posx - origin.left, event.posy - origin.top), () => null); + this.monitor.startMonitoring(standardMouseMoveMerger, event => this.onDidChangePosition(event.posx - origin.left, event.posy - origin.top), () => null); const mouseUpListener = dom.addDisposableListener(document, dom.EventType.MOUSE_UP, () => { this._onColorFlushed.fire(); mouseUpListener.dispose(); - monitor.stopMonitoring(true); + this.monitor.stopMonitoring(true); + this.monitor = null; }, true); } @@ -221,6 +224,9 @@ class SaturationBox extends Disposable { } private onDidChangeColor(): void { + if (this.monitor && this.monitor.isMonitoring()) { + return; + } this.paint(); } } -- GitLab