Skip to content

Commit 17fe772

Browse files
authored
Reverts the recent drop changes as these introduced regressions (microsoft#219896)
Safest fix for the recovery build
1 parent 8fa1eb8 commit 17fe772

File tree

4 files changed

+6
-62
lines changed

4 files changed

+6
-62
lines changed

src/vs/workbench/contrib/webview/browser/pre/index.html

+3-17
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
<meta http-equiv="Content-Security-Policy"
88

9-
content="default-src 'none'; script-src 'sha256-ikaxwm2UFoiIKkEZTEU4mnSxpYf3lmsrhy5KqqJZfek=' 'self'; frame-src 'self'; style-src 'unsafe-inline';">
9+
content="default-src 'none'; script-src 'sha256-dvxt5dlghGbz8hrqqochfoKEaHIMZ+yJVRvjJnGopzs=' 'self'; frame-src 'self'; style-src 'unsafe-inline';">
1010

1111

1212
<!-- Disable pinch zooming -->
@@ -797,17 +797,6 @@
797797
}
798798
}
799799

800-
801-
function handleInnerDragEvent(/** @type {DragEvent} */ e) {
802-
if (!e.dataTransfer) {
803-
return;
804-
}
805-
806-
hostMessaging.postMessage('drag', {
807-
shiftKey: e.shiftKey
808-
});
809-
}
810-
811800
/**
812801
* @param {() => void} callback
813802
*/
@@ -898,9 +887,7 @@
898887
window.addEventListener('keydown', handleInnerKeydown);
899888
window.addEventListener('keyup', handleInnerKeyup);
900889
window.addEventListener('dragenter', handleInnerDragStartEvent);
901-
window.addEventListener('dragover', handleInnerDragEvent);
902-
window.addEventListener('drag', handleInnerDragEvent);
903-
890+
window.addEventListener('dragover', handleInnerDragStartEvent);
904891

905892
onDomReady(() => {
906893
if (!document.body) {
@@ -1182,8 +1169,7 @@
11821169
});
11831170

11841171
contentWindow.addEventListener('dragenter', handleInnerDragStartEvent);
1185-
contentWindow.addEventListener('dragover', handleInnerDragEvent);
1186-
contentWindow.addEventListener('drag', handleInnerDragEvent);
1172+
contentWindow.addEventListener('dragover', handleInnerDragStartEvent);
11871173

11881174
unloadMonitor.onIframeLoaded(newFrame);
11891175
}

src/vs/workbench/contrib/webview/browser/webviewElement.ts

+1-16
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ import { loadLocalResource, WebviewResourceResponse } from 'vs/workbench/contrib
3434
import { WebviewThemeDataProvider } from 'vs/workbench/contrib/webview/browser/themeing';
3535
import { areWebviewContentOptionsEqual, IWebview, WebviewContentOptions, WebviewExtensionDescription, WebviewInitInfo, WebviewMessageReceivedEvent, WebviewOptions } from 'vs/workbench/contrib/webview/browser/webview';
3636
import { WebviewFindDelegate, WebviewFindWidget } from 'vs/workbench/contrib/webview/browser/webviewFindWidget';
37-
import { FromWebviewMessage, KeyEvent, ToWebviewMessage, WebViewDragEvent } from 'vs/workbench/contrib/webview/browser/webviewMessages';
37+
import { FromWebviewMessage, KeyEvent, ToWebviewMessage } from 'vs/workbench/contrib/webview/browser/webviewMessages';
3838
import { decodeAuthority, webviewGenericCspSource, webviewRootResourceAuthority } from 'vs/workbench/contrib/webview/common/webview';
3939
import { IWorkbenchEnvironmentService } from 'vs/workbench/services/environment/common/environmentService';
4040
import { CodeWindow } from 'vs/base/browser/window';
@@ -310,10 +310,6 @@ export class WebviewElement extends Disposable implements IWebview, WebviewFindD
310310
this._startBlockingIframeDragEvents();
311311
}));
312312

313-
this._register(this.on('drag', (event) => {
314-
this.handleDragEvent('drag', event);
315-
}));
316-
317313
if (initInfo.options.enableFindWidget) {
318314
this._webviewFindWidget = this._register(instantiationService.createInstance(WebviewFindWidget, this));
319315
}
@@ -701,17 +697,6 @@ export class WebviewElement extends Disposable implements IWebview, WebviewFindD
701697
this.window?.dispatchEvent(emulatedKeyboardEvent);
702698
}
703699

704-
private handleDragEvent(type: 'drag', event: WebViewDragEvent) {
705-
// Create a fake DragEvent from the data provided
706-
const emulatedDragEvent = new DragEvent(type, event);
707-
// Force override the target
708-
Object.defineProperty(emulatedDragEvent, 'target', {
709-
get: () => this.element,
710-
});
711-
// And re-dispatch
712-
this.window?.dispatchEvent(emulatedDragEvent);
713-
}
714-
715700
windowDidDragStart(): void {
716701
// Webview break drag and dropping around the main window (no events are generated when you are over them)
717702
// Work around this by disabling pointer events during the drag.

src/vs/workbench/contrib/webview/browser/webviewMessages.d.ts

-5
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,6 @@ type KeyEvent = {
1717
repeat: boolean;
1818
}
1919

20-
type WebViewDragEvent = {
21-
shiftKey: boolean;
22-
}
23-
2420
export type FromWebviewMessage = {
2521
'onmessage': { message: any; transfer?: ArrayBuffer[] };
2622
'did-click-link': { uri: string };
@@ -40,7 +36,6 @@ export type FromWebviewMessage = {
4036
'did-keyup': KeyEvent;
4137
'did-context-menu': { clientX: number; clientY: number; context: { [key: string]: unknown } };
4238
'drag-start': void;
43-
'drag': WebViewDragEvent
4439
};
4540

4641
interface UpdateContentEvent {

src/vs/workbench/contrib/webview/browser/webviewWindowDragMonitor.ts

+2-24
Original file line numberDiff line numberDiff line change
@@ -18,41 +18,19 @@ export class WebviewWindowDragMonitor extends Disposable {
1818
constructor(targetWindow: CodeWindow, getWebview: () => IWebview | undefined) {
1919
super();
2020

21-
const onDragStart = () => {
21+
this._register(DOM.addDisposableListener(targetWindow, DOM.EventType.DRAG_START, () => {
2222
getWebview()?.windowDidDragStart();
23-
};
23+
}));
2424

2525
const onDragEnd = () => {
2626
getWebview()?.windowDidDragEnd();
2727
};
2828

29-
this._register(DOM.addDisposableListener(targetWindow, DOM.EventType.DRAG_START, () => {
30-
onDragStart();
31-
}));
32-
3329
this._register(DOM.addDisposableListener(targetWindow, DOM.EventType.DRAG_END, onDragEnd));
34-
3530
this._register(DOM.addDisposableListener(targetWindow, DOM.EventType.MOUSE_MOVE, currentEvent => {
3631
if (currentEvent.buttons === 0) {
3732
onDragEnd();
3833
}
3934
}));
40-
41-
this._register(DOM.addDisposableListener(targetWindow, DOM.EventType.DRAG, (event) => {
42-
if (event.shiftKey) {
43-
onDragEnd();
44-
} else {
45-
onDragStart();
46-
}
47-
}));
48-
49-
this._register(DOM.addDisposableListener(targetWindow, DOM.EventType.DRAG_OVER, (event) => {
50-
if (event.shiftKey) {
51-
onDragEnd();
52-
} else {
53-
onDragStart();
54-
}
55-
}));
56-
5735
}
5836
}

0 commit comments

Comments
 (0)