| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- /*---------------------------------------------------------------------------------------------
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
- import { createFastDomNode } from '../../../../base/browser/fastDomNode.js';
- import { ViewPart } from '../../view/viewPart.js';
- export class Margin extends ViewPart {
- constructor(context) {
- super(context);
- const options = this._context.configuration.options;
- const layoutInfo = options.get(133 /* EditorOption.layoutInfo */);
- this._canUseLayerHinting = !options.get(28 /* EditorOption.disableLayerHinting */);
- this._contentLeft = layoutInfo.contentLeft;
- this._glyphMarginLeft = layoutInfo.glyphMarginLeft;
- this._glyphMarginWidth = layoutInfo.glyphMarginWidth;
- this._domNode = createFastDomNode(document.createElement('div'));
- this._domNode.setClassName(Margin.OUTER_CLASS_NAME);
- this._domNode.setPosition('absolute');
- this._domNode.setAttribute('role', 'presentation');
- this._domNode.setAttribute('aria-hidden', 'true');
- this._glyphMarginBackgroundDomNode = createFastDomNode(document.createElement('div'));
- this._glyphMarginBackgroundDomNode.setClassName(Margin.CLASS_NAME);
- this._domNode.appendChild(this._glyphMarginBackgroundDomNode);
- }
- dispose() {
- super.dispose();
- }
- getDomNode() {
- return this._domNode;
- }
- // --- begin event handlers
- onConfigurationChanged(e) {
- const options = this._context.configuration.options;
- const layoutInfo = options.get(133 /* EditorOption.layoutInfo */);
- this._canUseLayerHinting = !options.get(28 /* EditorOption.disableLayerHinting */);
- this._contentLeft = layoutInfo.contentLeft;
- this._glyphMarginLeft = layoutInfo.glyphMarginLeft;
- this._glyphMarginWidth = layoutInfo.glyphMarginWidth;
- return true;
- }
- onScrollChanged(e) {
- return super.onScrollChanged(e) || e.scrollTopChanged;
- }
- // --- end event handlers
- prepareRender(ctx) {
- // Nothing to read
- }
- render(ctx) {
- this._domNode.setLayerHinting(this._canUseLayerHinting);
- this._domNode.setContain('strict');
- const adjustedScrollTop = ctx.scrollTop - ctx.bigNumbersDelta;
- this._domNode.setTop(-adjustedScrollTop);
- const height = Math.min(ctx.scrollHeight, 1000000);
- this._domNode.setHeight(height);
- this._domNode.setWidth(this._contentLeft);
- this._glyphMarginBackgroundDomNode.setLeft(this._glyphMarginLeft);
- this._glyphMarginBackgroundDomNode.setWidth(this._glyphMarginWidth);
- this._glyphMarginBackgroundDomNode.setHeight(height);
- }
- }
- Margin.CLASS_NAME = 'glyph-margin';
- Margin.OUTER_CLASS_NAME = 'margin';
|