From 845d977c8403e6ef6b23d669cd3a476fee24f6c8 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Wed, 23 Jan 2019 16:16:46 +0100 Subject: [PATCH] fixes #66972 --- src/vs/base/browser/ui/list/listView.ts | 27 +++++++++++++------------ 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/src/vs/base/browser/ui/list/listView.ts b/src/vs/base/browser/ui/list/listView.ts index 153b169432a3f..701ab69ceb223 100644 --- a/src/vs/base/browser/ui/list/listView.ts +++ b/src/vs/base/browser/ui/list/listView.ts @@ -23,18 +23,6 @@ import { equals, distinct } from 'vs/base/common/arrays'; import { DataTransfers, StaticDND, IDragAndDropData } from 'vs/base/browser/dnd'; import { disposableTimeout } from 'vs/base/common/async'; -function canUseTranslate3d(): boolean { - if (browser.isFirefox) { - return false; - } - - if (browser.getZoomLevel() !== 0) { - return false; - } - - return true; -} - interface IItem { readonly id: string; readonly element: T; @@ -172,6 +160,7 @@ export class ListView implements ISpliceable, IDisposable { private dragOverMouseY: number; private setRowLineHeight: boolean; private supportDynamicHeights: boolean; + private canUseTranslate3d: boolean | undefined = undefined; private dnd: IListViewDragAndDrop; private canDrop: boolean = false; @@ -434,14 +423,26 @@ export class ListView implements ISpliceable, IDisposable { } } - if (canUseTranslate3d() && !isWindows /* Windows: translate3d breaks subpixel-antialias (ClearType) unless a background is defined */) { + const canUseTranslate3d = !isWindows && !browser.isFirefox && browser.getZoomLevel() === 0; + + if (canUseTranslate3d) { const transform = `translate3d(0px, -${renderTop}px, 0px)`; this.rowsContainer.style.transform = transform; this.rowsContainer.style.webkitTransform = transform; + + if (canUseTranslate3d !== this.canUseTranslate3d) { + this.rowsContainer.style.top = '0'; + } } else { this.rowsContainer.style.top = `-${renderTop}px`; + + if (canUseTranslate3d !== this.canUseTranslate3d) { + this.rowsContainer.style.transform = ''; + this.rowsContainer.style.webkitTransform = ''; + } } + this.canUseTranslate3d = canUseTranslate3d; this.lastRenderTop = renderTop; this.lastRenderHeight = renderHeight; }