diff --git a/addons/web/static/src/core/utils/draggable_hook_builder.js b/addons/web/static/src/core/utils/draggable_hook_builder.js index aec03668919..06d5ea0f828 100644 --- a/addons/web/static/src/core/utils/draggable_hook_builder.js +++ b/addons/web/static/src/core/utils/draggable_hook_builder.js @@ -977,13 +977,18 @@ export function makeDraggableHook(hookParams) { }, () => computeParams(params) ); + // Firefox currently (119.0.1) does not handle our pointer events + // nicely when they happen from within the iframe. To work around + // this, we use mouse events instead of pointer events. + const useMouseEvents = isBrowserFirefox() && !hasTouch() && params.iframeWindow; // Effect depending on the `ref.el` to add triggering pointer events listener. setupHooks.setup( (el) => { if (el) { const { add, cleanup } = makeCleanupManager(); const { addListener } = makeDOMHelpers({ add }); - addListener(el, "pointerdown", onPointerDown, { noAddedStyle: true }); + const event = useMouseEvents ? "mousedown" : "pointerdown"; + addListener(el, event, onPointerDown, { noAddedStyle: true }); if (hasTouch()) { addListener(el, "contextmenu", safePrevent); // Adds a non-passive listener on touchstart: this allows @@ -1010,10 +1015,10 @@ export function makeDraggableHook(hookParams) { }; // Other global event listeners. const throttledOnPointerMove = setupHooks.throttle(onPointerMove); - addWindowListener("pointermove", throttledOnPointerMove, { + addWindowListener(useMouseEvents ? "mousemove" : "pointermove", throttledOnPointerMove, { passive: false, }); - addWindowListener("pointerup", onPointerUp); + addWindowListener(useMouseEvents ? "mouseup" : "pointerup", onPointerUp); addWindowListener("pointercancel", onPointerCancel); addWindowListener("keydown", onKeyDown, { capture: true }); setupHooks.teardown(() => dragEnd(null)); diff --git a/addons/web_editor/static/src/js/editor/snippets.editor.js b/addons/web_editor/static/src/js/editor/snippets.editor.js index 4b12800a6f3..baaa43c119b 100644 --- a/addons/web_editor/static/src/js/editor/snippets.editor.js +++ b/addons/web_editor/static/src/js/editor/snippets.editor.js @@ -1007,14 +1007,6 @@ var SnippetEditor = Widget.extend({ * @private */ _onDragAndDropStart({ helper, addStyle }) { - // If the helper is inside the iframe, we want pointer events on the - // frame element so that they reach the window and properly apply - // the cursor. - const frameElement = helper.ownerDocument.defaultView.frameElement; - if (frameElement) { - addStyle(frameElement, { pointerEvents: "auto" }); - } - this.options.wysiwyg.odooEditor.observerUnactive('dragAndDropMoveSnippet'); this.trigger_up('drag_and_drop_start'); this.options.wysiwyg.odooEditor.automaticStepUnactive();