mirror of
https://bitbucket.org/chromiumembedded/cef
synced 2025-06-05 21:39:12 +02:00
Fix OSR PDF mouse events after keyboard input (issue #2078)
This commit is contained in:
@@ -935,6 +935,12 @@ void CefRenderWidgetHostViewOSR::SetNeedsBeginFrames(bool enabled) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CefRenderWidgetHostViewOSR::ProcessKeyboardEvent(
|
||||||
|
const content::NativeWebKeyboardEvent& event,
|
||||||
|
const ui::LatencyInfo& latency) {
|
||||||
|
render_widget_host_->ForwardKeyboardEventWithLatencyInfo(event, latency);
|
||||||
|
}
|
||||||
|
|
||||||
void CefRenderWidgetHostViewOSR::ProcessMouseEvent(
|
void CefRenderWidgetHostViewOSR::ProcessMouseEvent(
|
||||||
const blink::WebMouseEvent& event,
|
const blink::WebMouseEvent& event,
|
||||||
const ui::LatencyInfo& latency) {
|
const ui::LatencyInfo& latency) {
|
||||||
@@ -1159,9 +1165,15 @@ void CefRenderWidgetHostViewOSR::Invalidate(
|
|||||||
void CefRenderWidgetHostViewOSR::SendKeyEvent(
|
void CefRenderWidgetHostViewOSR::SendKeyEvent(
|
||||||
const content::NativeWebKeyboardEvent& event) {
|
const content::NativeWebKeyboardEvent& event) {
|
||||||
TRACE_EVENT0("libcef", "CefRenderWidgetHostViewOSR::SendKeyEvent");
|
TRACE_EVENT0("libcef", "CefRenderWidgetHostViewOSR::SendKeyEvent");
|
||||||
if (!render_widget_host_)
|
if (render_widget_host_ && render_widget_host_->GetView()) {
|
||||||
return;
|
// Direct routing requires that events go directly to the View.
|
||||||
render_widget_host_->ForwardKeyboardEvent(event);
|
render_widget_host_->GetView()->ProcessKeyboardEvent(
|
||||||
|
event, ui::LatencyInfo(event.GetType() == blink::WebInputEvent::kChar ||
|
||||||
|
event.GetType() ==
|
||||||
|
blink::WebInputEvent::kRawKeyDown
|
||||||
|
? ui::SourceEventType::KEY_PRESS
|
||||||
|
: ui::SourceEventType::OTHER));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CefRenderWidgetHostViewOSR::SendMouseEvent(
|
void CefRenderWidgetHostViewOSR::SendMouseEvent(
|
||||||
@@ -1422,12 +1434,13 @@ void CefRenderWidgetHostViewOSR::SetDeviceScaleFactor() {
|
|||||||
|
|
||||||
// Notify the guest hosts if any.
|
// Notify the guest hosts if any.
|
||||||
for (auto guest_host_view : guest_host_views_) {
|
for (auto guest_host_view : guest_host_views_) {
|
||||||
if (guest_host_view->render_widget_host() &&
|
content::RenderWidgetHostImpl* rwhi = guest_host_view->render_widget_host();
|
||||||
guest_host_view->render_widget_host()->delegate()) {
|
if (!rwhi)
|
||||||
guest_host_view->render_widget_host()
|
continue;
|
||||||
->delegate()
|
if (rwhi->delegate())
|
||||||
->UpdateDeviceScaleFactor(new_scale_factor);
|
rwhi->delegate()->UpdateDeviceScaleFactor(new_scale_factor);
|
||||||
}
|
if (rwhi->GetView())
|
||||||
|
rwhi->GetView()->set_current_device_scale_factor(new_scale_factor);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1558,6 +1571,8 @@ void CefRenderWidgetHostViewOSR::RegisterGuestViewFrameSwappedCallback(
|
|||||||
base::MakeUnique<base::Closure>(base::Bind(
|
base::MakeUnique<base::Closure>(base::Bind(
|
||||||
&CefRenderWidgetHostViewOSR::OnGuestViewFrameSwapped,
|
&CefRenderWidgetHostViewOSR::OnGuestViewFrameSwapped,
|
||||||
weak_ptr_factory_.GetWeakPtr(), base::Unretained(guest_host_view))));
|
weak_ptr_factory_.GetWeakPtr(), base::Unretained(guest_host_view))));
|
||||||
|
guest_host_view->set_current_device_scale_factor(
|
||||||
|
current_device_scale_factor_);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CefRenderWidgetHostViewOSR::OnGuestViewFrameSwapped(
|
void CefRenderWidgetHostViewOSR::OnGuestViewFrameSwapped(
|
||||||
|
@@ -178,6 +178,8 @@ class CefRenderWidgetHostViewOSR : public content::RenderWidgetHostViewBase,
|
|||||||
|
|
||||||
void SetNeedsBeginFrames(bool enabled) override;
|
void SetNeedsBeginFrames(bool enabled) override;
|
||||||
|
|
||||||
|
void ProcessKeyboardEvent(const content::NativeWebKeyboardEvent& event,
|
||||||
|
const ui::LatencyInfo& latency) override;
|
||||||
void ProcessMouseEvent(const blink::WebMouseEvent& event,
|
void ProcessMouseEvent(const blink::WebMouseEvent& event,
|
||||||
const ui::LatencyInfo& latency) override;
|
const ui::LatencyInfo& latency) override;
|
||||||
void ProcessMouseWheelEvent(const blink::WebMouseWheelEvent& event,
|
void ProcessMouseWheelEvent(const blink::WebMouseWheelEvent& event,
|
||||||
|
@@ -69,6 +69,9 @@ patches = [
|
|||||||
#
|
#
|
||||||
# Support creation of captionless windows with resizable borders.
|
# Support creation of captionless windows with resizable borders.
|
||||||
# https://bitbucket.org/chromiumembedded/cef/issues/1749
|
# https://bitbucket.org/chromiumembedded/cef/issues/1749
|
||||||
|
#
|
||||||
|
# Support configuration of RWHVGuest device scale factor.
|
||||||
|
# https://bitbucket.org/chromiumembedded/cef/issues/2078
|
||||||
'name': 'views_widget_180_1481_1565_1677_1749',
|
'name': 'views_widget_180_1481_1565_1677_1749',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@@ -18,7 +18,7 @@ index 98460d7..ffbfa04f 100644
|
|||||||
return renderer_frame_number_;
|
return renderer_frame_number_;
|
||||||
}
|
}
|
||||||
diff --git content/browser/renderer_host/render_widget_host_view_base.h content/browser/renderer_host/render_widget_host_view_base.h
|
diff --git content/browser/renderer_host/render_widget_host_view_base.h content/browser/renderer_host/render_widget_host_view_base.h
|
||||||
index fd1e999..c4dad6d 100644
|
index fd1e999..0e794a9 100644
|
||||||
--- content/browser/renderer_host/render_widget_host_view_base.h
|
--- content/browser/renderer_host/render_widget_host_view_base.h
|
||||||
+++ content/browser/renderer_host/render_widget_host_view_base.h
|
+++ content/browser/renderer_host/render_widget_host_view_base.h
|
||||||
@@ -72,6 +72,7 @@ class BrowserAccessibilityDelegate;
|
@@ -72,6 +72,7 @@ class BrowserAccessibilityDelegate;
|
||||||
@@ -29,7 +29,17 @@ index fd1e999..c4dad6d 100644
|
|||||||
class SyntheticGestureTarget;
|
class SyntheticGestureTarget;
|
||||||
class TextInputManager;
|
class TextInputManager;
|
||||||
class TouchSelectionControllerClientManager;
|
class TouchSelectionControllerClientManager;
|
||||||
@@ -119,6 +120,8 @@ class CONTENT_EXPORT RenderWidgetHostViewBase : public RenderWidgetHostView,
|
@@ -88,6 +89,9 @@ class CONTENT_EXPORT RenderWidgetHostViewBase : public RenderWidgetHostView,
|
||||||
|
float current_device_scale_factor() const {
|
||||||
|
return current_device_scale_factor_;
|
||||||
|
}
|
||||||
|
+ void set_current_device_scale_factor(float scale_factor) {
|
||||||
|
+ current_device_scale_factor_ = scale_factor;
|
||||||
|
+ }
|
||||||
|
|
||||||
|
// Returns the focused RenderWidgetHost inside this |view|'s RWH.
|
||||||
|
RenderWidgetHostImpl* GetFocusedWidget() const;
|
||||||
|
@@ -119,6 +123,8 @@ class CONTENT_EXPORT RenderWidgetHostViewBase : public RenderWidgetHostView,
|
||||||
void EndFrameSubscription() override;
|
void EndFrameSubscription() override;
|
||||||
void FocusedNodeTouched(const gfx::Point& location_dips_screen,
|
void FocusedNodeTouched(const gfx::Point& location_dips_screen,
|
||||||
bool editable) override;
|
bool editable) override;
|
||||||
@@ -38,7 +48,7 @@ index fd1e999..c4dad6d 100644
|
|||||||
|
|
||||||
// This only needs to be overridden by RenderWidgetHostViewBase subclasses
|
// This only needs to be overridden by RenderWidgetHostViewBase subclasses
|
||||||
// that handle content embedded within other RenderWidgetHostViews.
|
// that handle content embedded within other RenderWidgetHostViews.
|
||||||
@@ -359,6 +362,12 @@ class CONTENT_EXPORT RenderWidgetHostViewBase : public RenderWidgetHostView,
|
@@ -359,6 +365,12 @@ class CONTENT_EXPORT RenderWidgetHostViewBase : public RenderWidgetHostView,
|
||||||
// helps to position the full screen widget on the correct monitor.
|
// helps to position the full screen widget on the correct monitor.
|
||||||
virtual void InitAsFullscreen(RenderWidgetHostView* reference_host_view) = 0;
|
virtual void InitAsFullscreen(RenderWidgetHostView* reference_host_view) = 0;
|
||||||
|
|
||||||
@@ -51,7 +61,7 @@ index fd1e999..c4dad6d 100644
|
|||||||
// Sets the cursor to the one associated with the specified cursor_type
|
// Sets the cursor to the one associated with the specified cursor_type
|
||||||
virtual void UpdateCursor(const WebCursor& cursor) = 0;
|
virtual void UpdateCursor(const WebCursor& cursor) = 0;
|
||||||
|
|
||||||
@@ -473,6 +482,10 @@ class CONTENT_EXPORT RenderWidgetHostViewBase : public RenderWidgetHostView,
|
@@ -473,6 +485,10 @@ class CONTENT_EXPORT RenderWidgetHostViewBase : public RenderWidgetHostView,
|
||||||
|
|
||||||
const bool wheel_scroll_latching_enabled_;
|
const bool wheel_scroll_latching_enabled_;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user