mirror of
https://github.com/Microsoft/vscode
synced 2024-10-12 22:37:41 +00:00
Fixes #84565: Mark all editor layers as strictly contained (have the layers always pass the opacity check)
This commit is contained in:
parent
5f32c01db2
commit
cd39e8e0a2
|
@ -26,6 +26,7 @@ export class FastDomNode<T extends HTMLElement> {
|
|||
private _position: string;
|
||||
private _visibility: string;
|
||||
private _layerHint: boolean;
|
||||
private _contain: 'none' | 'strict' | 'content' | 'size' | 'layout' | 'style' | 'paint';
|
||||
|
||||
constructor(domNode: T) {
|
||||
this.domNode = domNode;
|
||||
|
@ -47,6 +48,7 @@ export class FastDomNode<T extends HTMLElement> {
|
|||
this._position = '';
|
||||
this._visibility = '';
|
||||
this._layerHint = false;
|
||||
this._contain = 'none';
|
||||
}
|
||||
|
||||
public setMaxWidth(maxWidth: number): void {
|
||||
|
@ -206,6 +208,14 @@ export class FastDomNode<T extends HTMLElement> {
|
|||
(<any>this.domNode.style).willChange = this._layerHint ? 'transform' : 'auto';
|
||||
}
|
||||
|
||||
public setContain(contain: 'none' | 'strict' | 'content' | 'size' | 'layout' | 'style' | 'paint'): void {
|
||||
if (this._contain === contain) {
|
||||
return;
|
||||
}
|
||||
this._contain = contain;
|
||||
(<any>this.domNode.style).contain = this._contain;
|
||||
}
|
||||
|
||||
public setAttribute(name: string, value: string): void {
|
||||
this.domNode.setAttribute(name, value);
|
||||
}
|
||||
|
|
|
@ -99,6 +99,7 @@ export abstract class AbstractScrollbar extends Widget {
|
|||
this.slider.setHeight(height);
|
||||
}
|
||||
this.slider.setLayerHinting(true);
|
||||
this.slider.setContain('strict');
|
||||
|
||||
this.domNode.domNode.appendChild(this.slider.domNode);
|
||||
|
||||
|
|
|
@ -544,6 +544,7 @@ export class ViewLines extends ViewPart implements IVisibleLinesHost<ViewLine>,
|
|||
|
||||
// (3) handle scrolling
|
||||
this._linesContent.setLayerHinting(this._canUseLayerHinting);
|
||||
this._linesContent.setContain('strict');
|
||||
const adjustedScrollTop = this._context.viewLayout.getCurrentScrollTop() - viewportData.bigNumbersDelta;
|
||||
this._linesContent.setTop(-adjustedScrollTop);
|
||||
this._linesContent.setLeft(-this._context.viewLayout.getCurrentScrollLeft());
|
||||
|
|
|
@ -78,6 +78,7 @@ export class Margin extends ViewPart {
|
|||
|
||||
public render(ctx: RestrictedRenderingContext): void {
|
||||
this._domNode.setLayerHinting(this._canUseLayerHinting);
|
||||
this._domNode.setContain('strict');
|
||||
const adjustedScrollTop = ctx.scrollTop - ctx.bigNumbersDelta;
|
||||
this._domNode.setTop(-adjustedScrollTop);
|
||||
|
||||
|
|
|
@ -503,6 +503,7 @@ export class Minimap extends ViewPart {
|
|||
this._slider.setPosition('absolute');
|
||||
this._slider.setClassName('minimap-slider');
|
||||
this._slider.setLayerHinting(true);
|
||||
this._slider.setContain('strict');
|
||||
this._domNode.appendChild(this._slider);
|
||||
|
||||
this._sliderHorizontal = createFastDomNode(document.createElement('div'));
|
||||
|
|
|
@ -215,6 +215,7 @@ export class DecorationsOverviewRuler extends ViewPart {
|
|||
this._domNode.setClassName('decorationsOverviewRuler');
|
||||
this._domNode.setPosition('absolute');
|
||||
this._domNode.setLayerHinting(true);
|
||||
this._domNode.setContain('strict');
|
||||
this._domNode.setAttribute('aria-hidden', 'true');
|
||||
|
||||
this._updateSettings(false);
|
||||
|
|
|
@ -26,6 +26,7 @@ export class OverviewRuler extends ViewEventHandler implements IOverviewRuler {
|
|||
this._domNode.setClassName(cssClassName);
|
||||
this._domNode.setPosition('absolute');
|
||||
this._domNode.setLayerHinting(true);
|
||||
this._domNode.setContain('strict');
|
||||
|
||||
this._zoneManager = new OverviewZoneManager((lineNumber: number) => this._context.viewLayout.getVerticalOffsetForLineNumber(lineNumber));
|
||||
this._zoneManager.setDOMWidth(0);
|
||||
|
|
Loading…
Reference in a new issue