提交 a5a166a5 编写于 作者: A Alex Dima

Fixes #4393: Ensure clipboard gets the content from the latest selection (flush pending events)

上级 cc88aa58
......@@ -207,7 +207,7 @@ export class KeyboardHandler extends ViewEventHandler implements IDisposable {
this.contentWidth = 0;
this.scrollLeft = 0;
this.textAreaHandler = new TextAreaHandler(browser, this._getStrategy(), this.textArea, this.context.model);
this.textAreaHandler = new TextAreaHandler(browser, this._getStrategy(), this.textArea, this.context.model, () => this.viewHelper.flushAnyAccumulatedEvents());
this._toDispose = [];
this._toDispose.push(this.textAreaHandler.onKeyDown((e) => this.viewController.emitKeyDown(<IKeyboardEvent>e._actual)));
......
......@@ -42,6 +42,7 @@ export interface IKeyboardHandlerHelper {
viewDomNode:HTMLElement;
textArea:HTMLTextAreaElement;
visibleRangeForPositionRelativeToEditor(lineNumber:number, column:number): editorCommon.VisibleRange;
flushAnyAccumulatedEvents(): void;
}
export interface IPointerHandlerHelper {
......
......@@ -399,6 +399,9 @@ export class View extends ViewEventHandler implements editorBrowser.IView, IDisp
return null;
}
return visibleRanges[0];
},
flushAnyAccumulatedEvents: () => {
this._flushAnyAccumulatedEvents();
}
};
}
......
......@@ -62,6 +62,7 @@ export class TextAreaHandler extends Disposable {
private Browser:IBrowser;
private textArea:ITextAreaWrapper;
private model:ISimpleModel;
private flushAnyAccumulatedEvents:()=>void;
private selection:IEditorRange;
private selections:IEditorRange[];
......@@ -80,11 +81,12 @@ export class TextAreaHandler extends Disposable {
private _nextCommand: ReadFromTextArea;
constructor(Browser:IBrowser, strategy:TextAreaStrategy, textArea:ITextAreaWrapper, model:ISimpleModel) {
constructor(Browser:IBrowser, strategy:TextAreaStrategy, textArea:ITextAreaWrapper, model:ISimpleModel, flushAnyAccumulatedEvents:()=>void) {
super();
this.Browser = Browser;
this.textArea = textArea;
this.model = model;
this.flushAnyAccumulatedEvents = flushAnyAccumulatedEvents;
this.selection = new Range(1, 1, 1, 1);
this.selections = [new Range(1, 1, 1, 1)];
this.cursorPosition = new Position(1, 1);
......@@ -181,11 +183,15 @@ export class TextAreaHandler extends Disposable {
// --- Clipboard operations
this._register(this.textArea.onCut((e) => {
// Ensure we have the latest selection => ask all pending events to be sent
this.flushAnyAccumulatedEvents();
this._ensureClipboardGetsEditorSelection(e);
this.asyncTriggerCut.schedule();
}));
this._register(this.textArea.onCopy((e) => {
// Ensure we have the latest selection => ask all pending events to be sent
this.flushAnyAccumulatedEvents();
this._ensureClipboardGetsEditorSelection(e);
}));
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册