[webkit-changes] [WebKit/WebKit] d3dc96: Interaction: Drags from twitter.com (after scrolli...

Richard Robinson noreply at github.com
Fri Sep 8 18:03:56 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: d3dc96cb1d7baeefdcfa1201007f020b746fcdb7
      https://github.com/WebKit/WebKit/commit/d3dc96cb1d7baeefdcfa1201007f020b746fcdb7
  Author: Richard Robinson <richard_robinson2 at apple.com>
  Date:   2023-09-08 (Fri, 08 Sep 2023)

  Changed paths:
    M Source/WebKit/UIProcess/ios/DragDropInteractionState.h
    M Source/WebKit/UIProcess/ios/DragDropInteractionState.mm
    M Source/WebKit/UIProcess/ios/WKContentViewInteraction.h
    M Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm

  Log Message:
  -----------
  Interaction: Drags from twitter.com (after scrolling down the page) have the wrong origin
https://bugs.webkit.org/show_bug.cgi?id=261354
rdar://113867128

Reviewed by Tim Horton.

When performing a drag-and-drop interaction while a context menu is currently present, UIKit expects
that both the context menu preview and the drag preview have the same size and origin. However, this
is not currently the case.

This is because in some cases, the context menu preview is created from a snapshot, which has a y-position
corresponding to the position relative to the entire page. However, the drag preview uses the drag
source directly, and it's position is relative to the view.

To fix, adopt the same snapshotting mechanism in the drag preview that is currently used in the context
menu preview, when applicable.

* Source/WebKit/UIProcess/ios/DragDropInteractionState.h:
* Source/WebKit/UIProcess/ios/DragDropInteractionState.mm:
(WebKit::DragDropInteractionState::previewForLifting const):
(WebKit::DragDropInteractionState::previewForCancelling):
(WebKit::DragDropInteractionState::createDragPreviewInternal const):

* Source/WebKit/UIProcess/ios/WKContentViewInteraction.h:
* Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView _createTargetedContextMenuHintPreviewIfPossible]):
Detect when the snapshotting case happens, and save the indicator data for use later on by the drag preview.

(-[WKContentView dragInteraction:previewForLiftingItem:session:]):

Canonical link: https://commits.webkit.org/267819@main




More information about the webkit-changes mailing list