From c2ac36d383c224be8909bad83545b6a0125a53d4 Mon Sep 17 00:00:00 2001 From: MartinBrathen Date: Fri, 1 Nov 2019 12:22:47 +0100 Subject: [PATCH 1/2] no zoom on fast click --- extensions/image-preview/media/main.js | 11 ++++++----- extensions/image-preview/src/preview.ts | 3 ++- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/extensions/image-preview/media/main.js b/extensions/image-preview/media/main.js index 94364c28503b7..91fda19018a6f 100644 --- a/extensions/image-preview/media/main.js +++ b/extensions/image-preview/media/main.js @@ -70,7 +70,8 @@ let ctrlPressed = false; let altPressed = false; let hasLoadedImage = false; - let consumeClick = false; + let consumeClick = true; + let isActive = false; // Elements const container = document.body; @@ -117,10 +118,10 @@ }); } - function changeActive(value) { + function setActive(value) { + isActive = value; if (value) { container.classList.add('zoom-in'); - consumeClick = true; } else { ctrlPressed = false; altPressed = false; @@ -202,7 +203,7 @@ return; } - consumeClick = false; + consumeClick = !isActive; }); container.addEventListener('click', (/** @type {MouseEvent} */ e) => { @@ -308,7 +309,7 @@ break; case 'setActive': - changeActive(e.data.value); + setActive(e.data.value); break; case 'zoomIn': diff --git a/extensions/image-preview/src/preview.ts b/extensions/image-preview/src/preview.ts index a5eb47e308f60..7326c0721bd5b 100644 --- a/extensions/image-preview/src/preview.ts +++ b/extensions/image-preview/src/preview.ts @@ -115,6 +115,7 @@ class Preview extends Disposable { this._register(webviewEditor.onDidChangeViewState(() => { this.update(); + this.webviewEditor.webview.postMessage({ type: 'setActive', value: this.webviewEditor.active }); })); this._register(webviewEditor.onDidDispose(() => { @@ -139,6 +140,7 @@ class Preview extends Disposable { this.render(); this.update(); + this.webviewEditor.webview.postMessage({ type: 'setActive', value: this.webviewEditor.active }); } public zoomIn() { @@ -175,7 +177,6 @@ class Preview extends Disposable { } this._previewState = PreviewState.Visible; } - this.webviewEditor.webview.postMessage({ type: 'setActive', value: this.webviewEditor.active }); } private getWebiewContents(): string { From 347b86efef28606331b394ec96c030957e75bc9b Mon Sep 17 00:00:00 2001 From: MartinBrathen Date: Fri, 1 Nov 2019 14:41:31 +0100 Subject: [PATCH 2/2] fixed a visual bug where the zoom-in icon would show briefly before zoom-out on first click when ctrl/alt is pressed --- extensions/image-preview/media/main.js | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/extensions/image-preview/media/main.js b/extensions/image-preview/media/main.js index 91fda19018a6f..a657ca04e4025 100644 --- a/extensions/image-preview/media/main.js +++ b/extensions/image-preview/media/main.js @@ -121,7 +121,13 @@ function setActive(value) { isActive = value; if (value) { - container.classList.add('zoom-in'); + if (isMac ? altPressed : ctrlPressed) { + container.classList.remove('zoom-in'); + container.classList.add('zoom-out'); + } else { + container.classList.remove('zoom-out'); + container.classList.add('zoom-in'); + } } else { ctrlPressed = false; altPressed = false; @@ -203,6 +209,9 @@ return; } + ctrlPressed = e.ctrlKey; + altPressed = e.altKey; + consumeClick = !isActive; }); @@ -215,14 +224,6 @@ return; } - ctrlPressed = e.ctrlKey; - altPressed = e.altKey; - - if (isMac ? altPressed : ctrlPressed) { - container.classList.remove('zoom-in'); - container.classList.add('zoom-out'); - } - if (consumeClick) { consumeClick = false; return;