Skip to content

Commit

Permalink
EditContext : Synchornize clipboard.ts and view.ts EditContext inform…
Browse files Browse the repository at this point in the history
…ation (#239341)

adding code to synchornize clipboard.ts and view.ts
  • Loading branch information
aiday-mar authored Jan 31, 2025
1 parent d04d2d3 commit 3bcb9a5
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 10 deletions.
20 changes: 13 additions & 7 deletions src/vs/editor/browser/view.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ import { ViewCursors } from './viewParts/viewCursors/viewCursors.js';
import { ViewZones } from './viewParts/viewZones/viewZones.js';
import { WhitespaceOverlay } from './viewParts/whitespace/whitespace.js';
import { IEditorConfiguration } from '../common/config/editorConfiguration.js';
import { EditorOption } from '../common/config/editorOptions.js';
import { EditorOption, IComputedEditorOptions } from '../common/config/editorOptions.js';
import { Position } from '../common/core/position.js';
import { Range } from '../common/core/range.js';
import { Selection } from '../common/core/selection.js';
Expand Down Expand Up @@ -148,7 +148,7 @@ export class View extends ViewEventHandler {
// Keyboard handler
this._experimentalEditContextEnabled = this._context.configuration.options.get(EditorOption.experimentalEditContextEnabled);
this._accessibilitySupport = this._context.configuration.options.get(EditorOption.accessibilitySupport);
this._editContext = this._instantiateEditContext(this._experimentalEditContextEnabled, this._accessibilitySupport);
this._editContext = this._instantiateEditContext();

this._viewParts.push(this._editContext);

Expand Down Expand Up @@ -277,10 +277,9 @@ export class View extends ViewEventHandler {
this._pointerHandler = this._register(new PointerHandler(this._context, this._viewController, this._createPointerHandlerHelper()));
}

private _instantiateEditContext(experimentalEditContextEnabled: boolean, accessibilitySupport: AccessibilitySupport): AbstractEditContext {
const domNode = dom.getWindow(this._overflowGuardContainer.domNode);
const isEditContextSupported = EditContext.supported(domNode);
if (experimentalEditContextEnabled && isEditContextSupported && accessibilitySupport !== AccessibilitySupport.Enabled) {
private _instantiateEditContext(): AbstractEditContext {
const usingExperimentalEditContext = useExperimentalEditContext(dom.getWindow(this._overflowGuardContainer.domNode), this._context.configuration.options);
if (usingExperimentalEditContext) {
return this._instantiationService.createInstance(NativeEditContext, this._ownerID, this._context, this._overflowGuardContainer, this._viewController, this._createTextAreaHandlerHelper());
} else {
return this._instantiationService.createInstance(TextAreaEditContext, this._context, this._overflowGuardContainer, this._viewController, this._createTextAreaHandlerHelper());
Expand All @@ -298,7 +297,7 @@ export class View extends ViewEventHandler {
const isEditContextFocused = this._editContext.isFocused();
const indexOfEditContext = this._viewParts.indexOf(this._editContext);
this._editContext.dispose();
this._editContext = this._instantiateEditContext(experimentalEditContextEnabled, accessibilitySupport);
this._editContext = this._instantiateEditContext();
if (isEditContextFocused) {
this._editContext.focus();
}
Expand Down Expand Up @@ -852,3 +851,10 @@ class EditorRenderingCoordinator {
}
}
}

export function useExperimentalEditContext(activeWindow: CodeWindow, options: IComputedEditorOptions): boolean {
const isEditContextSupported = EditContext.supported(activeWindow);
const experimentalEditContextEnabled = options.get(EditorOption.experimentalEditContextEnabled);
const accessibilitySupport = options.get(EditorOption.accessibilitySupport);
return experimentalEditContextEnabled && isEditContextSupported && accessibilitySupport !== AccessibilitySupport.Enabled;
}
7 changes: 4 additions & 3 deletions src/vs/editor/contrib/clipboard/browser/clipboard.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
*--------------------------------------------------------------------------------------------*/

import * as browser from '../../../../base/browser/browser.js';
import { getActiveDocument } from '../../../../base/browser/dom.js';
import { getActiveDocument, getWindow } from '../../../../base/browser/dom.js';
import { KeyCode, KeyMod } from '../../../../base/common/keyCodes.js';
import * as platform from '../../../../base/common/platform.js';
import * as nls from '../../../../nls.js';
Expand All @@ -18,6 +18,7 @@ import { NativeEditContextRegistry } from '../../../browser/controller/editConte
import { ICodeEditor } from '../../../browser/editorBrowser.js';
import { Command, EditorAction, MultiCommand, registerEditorAction } from '../../../browser/editorExtensions.js';
import { ICodeEditorService } from '../../../browser/services/codeEditorService.js';
import { useExperimentalEditContext } from '../../../browser/view.js';
import { EditorOption } from '../../../common/config/editorOptions.js';
import { Handler } from '../../../common/editorCommon.js';
import { EditorContextKeys } from '../../../common/editorContextKeys.js';
Expand Down Expand Up @@ -235,8 +236,8 @@ if (PasteAction) {
if (focusedEditor && focusedEditor.hasModel() && focusedEditor.hasTextFocus()) {
// execCommand(paste) does not work with edit context
let result: boolean;
const experimentalEditContextEnabled = focusedEditor.getOption(EditorOption.experimentalEditContextEnabled);
if (experimentalEditContextEnabled) {
const usingExperimentalEditContext = useExperimentalEditContext(getWindow(focusedEditor.getDomNode()), focusedEditor.getOptions());
if (usingExperimentalEditContext) {
// Since we can not call execCommand('paste') on a dom node with edit context set
// we added a hidden text area that receives the paste execution
// see nativeEditContext.ts for more details
Expand Down

0 comments on commit 3bcb9a5

Please sign in to comment.