Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ import { ViewPart } from '../../view/viewPart.js';

export abstract class AbstractEditContext extends ViewPart {
abstract domNode: FastDomNode<HTMLElement>;
abstract appendTo(overflowGuardContainer: FastDomNode<HTMLElement>): void;
abstract focus(): void;
abstract isFocused(): boolean;
abstract refreshFocusState(): void;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ import { ViewContext } from '../../../../common/viewModel/viewContext.js';
import { RestrictedRenderingContext, RenderingContext } from '../../../view/renderingContext.js';
import { ViewController } from '../../../view/viewController.js';
import { ClipboardStoredMetadata, getDataToCopy, InMemoryClipboardMetadataManager } from '../clipboardUtils.js';
import { AbstractEditContext } from '../editContextUtils.js';
import { AbstractEditContext } from '../editContext.js';
import { editContextAddDisposableListener, FocusTracker, ITypeData } from './nativeEditContextUtils.js';
import { ScreenReaderSupport } from './screenReaderSupport.js';
import { Range } from '../../../../common/core/range.js';
Expand Down Expand Up @@ -51,6 +51,7 @@ export class NativeEditContext extends AbstractEditContext {

constructor(
context: ViewContext,
overflowGuardContainer: FastDomNode<HTMLElement>,
viewController: ViewController,
private readonly _visibleRangeProvider: IVisibleRangeProvider,
@IInstantiationService instantiationService: IInstantiationService,
Expand All @@ -62,6 +63,9 @@ export class NativeEditContext extends AbstractEditContext {
this.domNode.setClassName(`native-edit-context`);
this._updateDomAttributes();

overflowGuardContainer.appendChild(this.domNode);
this._parent = overflowGuardContainer.domNode;

this._focusTracker = this._register(new FocusTracker(this.domNode.domNode, (newFocusValue: boolean) => this._context.viewModel.setHasFocus(newFocusValue)));

this._editContext = new EditContext();
Expand Down Expand Up @@ -123,11 +127,6 @@ export class NativeEditContext extends AbstractEditContext {
super.dispose();
}

public appendTo(overflowGuardContainer: FastDomNode<HTMLElement>): void {
overflowGuardContainer.appendChild(this.domNode);
this._parent = overflowGuardContainer.domNode;
}

public setAriaOptions(): void {
this._screenReaderSupport.setAriaOptions();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ import { Color } from '../../../../../base/common/color.js';
import { IME } from '../../../../../base/common/ime.js';
import { IKeybindingService } from '../../../../../platform/keybinding/common/keybinding.js';
import { IInstantiationService } from '../../../../../platform/instantiation/common/instantiation.js';
import { AbstractEditContext } from '../editContextUtils.js';
import { AbstractEditContext } from '../editContext.js';
import { ICompositionData, IPasteData, ITextAreaInputHost, TextAreaInput, TextAreaWrapper } from './textAreaEditContextInput.js';
import { ariaLabelForScreenReaderContent, ISimpleModel, newlinecount, PagedScreenReaderStrategy } from '../screenReaderUtils.js';
import { ClipboardDataToCopy, getDataToCopy } from '../clipboardUtils.js';
Expand Down Expand Up @@ -148,6 +148,7 @@ export class TextAreaEditContext extends AbstractEditContext {

constructor(
context: ViewContext,
overflowGuardContainer: FastDomNode<HTMLElement>,
viewController: ViewController,
visibleRangeProvider: IVisibleRangeProvider,
@IKeybindingService private readonly _keybindingService: IKeybindingService,
Expand Down Expand Up @@ -201,6 +202,9 @@ export class TextAreaEditContext extends AbstractEditContext {
this.textAreaCover = createFastDomNode(document.createElement('div'));
this.textAreaCover.setPosition('absolute');

overflowGuardContainer.appendChild(this.textArea);
overflowGuardContainer.appendChild(this.textAreaCover);

const simpleModel: ISimpleModel = {
getLineCount: (): number => {
return this._context.viewModel.getLineCount();
Expand Down Expand Up @@ -466,11 +470,6 @@ export class TextAreaEditContext extends AbstractEditContext {
return this.textArea;
}

appendTo(overflowGuardContainer: FastDomNode<HTMLElement>): void {
overflowGuardContainer.appendChild(this.textArea);
overflowGuardContainer.appendChild(this.textAreaCover);
}

public writeScreenReaderContent(reason: string): void {
this._textAreaInput.writeNativeTextAreaContent(reason);
}
Expand Down
14 changes: 6 additions & 8 deletions src/vs/editor/browser/view.ts
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ import { IInstantiationService } from '../../platform/instantiation/common/insta
import { IColorTheme, getThemeTypeSelector } from '../../platform/theme/common/themeService.js';
import { ViewGpuContext } from './gpu/viewGpuContext.js';
import { ViewLinesGpu } from './viewParts/viewLinesGpu/viewLinesGpu.js';
import { AbstractEditContext } from './controller/editContext/editContextUtils.js';
import { AbstractEditContext } from './controller/editContext/editContext.js';
import { IVisibleRangeProvider, TextAreaEditContext } from './controller/editContext/textArea/textAreaEditContext.js';
import { NativeEditContext } from './controller/editContext/native/nativeEditContext.js';
import { RulersGpu } from './viewParts/rulersGpu/rulersGpu.js';
Expand Down Expand Up @@ -124,6 +124,10 @@ export class View extends ViewEventHandler {
this._selections = [new Selection(1, 1, 1, 1)];
this._renderAnimationFrame = null;

this._overflowGuardContainer = createFastDomNode(document.createElement('div'));
PartFingerprints.write(this._overflowGuardContainer, PartFingerprint.OverflowGuard);
this._overflowGuardContainer.setClassName('overflow-guard');

this._viewController = new ViewController(configuration, model, userInputEvents, commandDelegate);

// The view context is passed on to most classes (basically to reduce param. counts in ctors)
Expand Down Expand Up @@ -154,10 +158,6 @@ export class View extends ViewEventHandler {
this._viewGpuContext = this._instantiationService.createInstance(ViewGpuContext, this._context);
}

this._overflowGuardContainer = createFastDomNode(document.createElement('div'));
PartFingerprints.write(this._overflowGuardContainer, PartFingerprint.OverflowGuard);
this._overflowGuardContainer.setClassName('overflow-guard');

this._scrollbar = new EditorScrollbar(this._context, this._linesContent, this.domNode, this._overflowGuardContainer);
this._viewParts.push(this._scrollbar);

Expand Down Expand Up @@ -247,7 +247,6 @@ export class View extends ViewEventHandler {
this._overflowGuardContainer.appendChild(this._viewGpuContext.canvas);
}
this._overflowGuardContainer.appendChild(scrollDecoration.getDomNode());
this._editContext.appendTo(this._overflowGuardContainer);
this._overflowGuardContainer.appendChild(this._overlayWidgets.getDomNode());
this._overflowGuardContainer.appendChild(minimap.getDomNode());
this._overflowGuardContainer.appendChild(blockOutline.domNode);
Expand All @@ -268,7 +267,7 @@ export class View extends ViewEventHandler {
}

private _instantiateEditContext(experimentalEditContextEnabled: boolean): AbstractEditContext {
return this._instantiationService.createInstance(experimentalEditContextEnabled ? NativeEditContext : TextAreaEditContext, this._context, this._viewController, this._createTextAreaHandlerHelper());
return this._instantiationService.createInstance(experimentalEditContextEnabled ? NativeEditContext : TextAreaEditContext, this._context, this._overflowGuardContainer, this._viewController, this._createTextAreaHandlerHelper());
}

private _updateEditContext(): void {
Expand All @@ -279,7 +278,6 @@ export class View extends ViewEventHandler {
this._experimentalEditContextEnabled = experimentalEditContextEnabled;
this._editContext.dispose();
this._editContext = this._instantiateEditContext(experimentalEditContextEnabled);
this._editContext.appendTo(this._overflowGuardContainer);
// Replace the view parts with the new edit context
const indexOfEditContextHandler = this._viewParts.indexOf(this._editContext);
if (indexOfEditContextHandler !== -1) {
Expand Down