electron/patches/common/chromium/browser_plugin_wheel.patch
Jeremy Apthorp 76c5f5cc8a
build: move libcc patches to electron repo (#14104)
In the GN build, libchromiumcontent is no longer a distinct library, but
merely a container for a set of scripts and patches. Maintaining those
patches in a separate repository is tedious and error-prone, so merge
them into the main repo.

Once this is merged and GN is the default way to build Electron, the
libchromiumcontent repository can be archived.
2018-09-13 22:02:16 -07:00

25 lines
1.4 KiB
Diff

diff --git a/content/renderer/browser_plugin/browser_plugin.cc b/content/renderer/browser_plugin/browser_plugin.cc
index 06762fb..e89b1f0 100644
--- a/content/renderer/browser_plugin/browser_plugin.cc
+++ b/content/renderer/browser_plugin/browser_plugin.cc
@@ -448,15 +448,11 @@ blink::WebInputEventResult BrowserPlugin::handleInputEvent(
DCHECK(!blink::WebInputEvent::IsTouchEventType(event.GetType()));
- // With direct event routing turned on, BrowserPlugin should almost never
- // see wheel events any more. The two exceptions are (1) scroll bubbling, and
- // (2) synthetic mouse wheels generated by touchpad GesturePinch events on
- // Mac, which always go to the mainframe and thus may hit BrowserPlugin if
- // it's in a top-level embedder. In both cases we should indicate the event
- // as not handled (for GesturePinch on Mac, indicating the event has been
- // handled leads to touchpad pinch not working).
- if (event.GetType() == blink::WebInputEvent::kMouseWheel)
- return blink::WebInputEventResult::kNotHandled;
+ if (event.GetType() == blink::WebInputEvent::kMouseWheel) {
+ auto wheel_event = static_cast<const blink::WebMouseWheelEvent&>(event);
+ if (wheel_event.resending_plugin_id == browser_plugin_instance_id_)
+ return blink::WebInputEventResult::kNotHandled;
+ }
if (blink::WebInputEvent::IsGestureEventType(event.GetType())) {
auto gesture_event = static_cast<const blink::WebGestureEvent&>(event);