Fix routing of OSR input events inside iframes (fixes issue #2789)
Mouse events need to be routed to the correct view and CefRenderWidgetHostViewOSR::TransformPointToCoordSpaceForView needs to be properly implemented for RenderWidgetHostInputEventRouter::DispatchTouchscreenGestureEvent to transform event position in the target widget.
This commit is contained in:
parent
7653e9e04c
commit
0f944cdc55
|
@ -851,7 +851,8 @@ bool CefRenderWidgetHostViewOSR::TransformPointToCoordSpaceForView(
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return target_view->TransformPointToLocalCoordSpace(
|
||||||
|
point, GetCurrentSurfaceId(), transformed_point);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CefRenderWidgetHostViewOSR::DidNavigate() {
|
void CefRenderWidgetHostViewOSR::DidNavigate() {
|
||||||
|
@ -1021,9 +1022,17 @@ void CefRenderWidgetHostViewOSR::SendMouseEvent(
|
||||||
}
|
}
|
||||||
|
|
||||||
if (render_widget_host_ && render_widget_host_->GetView()) {
|
if (render_widget_host_ && render_widget_host_->GetView()) {
|
||||||
// Direct routing requires that mouse events go directly to the View.
|
if (ShouldRouteEvents()) {
|
||||||
render_widget_host_->GetView()->ProcessMouseEvent(
|
// RouteMouseEvent wants non-const pointer to WebMouseEvent, but it only
|
||||||
event, ui::LatencyInfo(ui::SourceEventType::OTHER));
|
// forwards it to RenderWidgetTargeter::FindTargetAndDispatch as a const
|
||||||
|
// reference, so const_cast here is safe.
|
||||||
|
render_widget_host_->delegate()->GetInputEventRouter()->RouteMouseEvent(
|
||||||
|
this, const_cast<blink::WebMouseEvent*>(&event),
|
||||||
|
ui::LatencyInfo(ui::SourceEventType::OTHER));
|
||||||
|
} else {
|
||||||
|
render_widget_host_->GetView()->ProcessMouseEvent(
|
||||||
|
event, ui::LatencyInfo(ui::SourceEventType::OTHER));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1092,9 +1101,16 @@ void CefRenderWidgetHostViewOSR::SendMouseWheelEvent(
|
||||||
}
|
}
|
||||||
|
|
||||||
if (render_widget_host_ && render_widget_host_->GetView()) {
|
if (render_widget_host_ && render_widget_host_->GetView()) {
|
||||||
// Direct routing requires that mouse events go directly to the View.
|
if (ShouldRouteEvents()) {
|
||||||
render_widget_host_->GetView()->ProcessMouseWheelEvent(
|
render_widget_host_->delegate()
|
||||||
mouse_wheel_event, ui::LatencyInfo(ui::SourceEventType::WHEEL));
|
->GetInputEventRouter()
|
||||||
|
->RouteMouseWheelEvent(
|
||||||
|
this, const_cast<blink::WebMouseWheelEvent*>(&mouse_wheel_event),
|
||||||
|
ui::LatencyInfo(ui::SourceEventType::WHEEL));
|
||||||
|
} else {
|
||||||
|
render_widget_host_->GetView()->ProcessMouseWheelEvent(
|
||||||
|
mouse_wheel_event, ui::LatencyInfo(ui::SourceEventType::WHEEL));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue