[Webkit-unassigned] [Bug 143749] Force mouse events should go through normal mouse event handling code paths
bugzilla-daemon at webkit.org
bugzilla-daemon at webkit.org
Wed Apr 15 12:05:20 PDT 2015
https://bugs.webkit.org/show_bug.cgi?id=143749
--- Comment #6 from Beth Dakin <bdakin at apple.com> ---
(In reply to comment #3)
> Comment on attachment 250777 [details]
> Patch
>
> View in context:
> https://bugs.webkit.org/attachment.cgi?id=250777&action=review
>
> I would love to see some testing added in this page. I worry that if we
> don't add testing now, we'll never add it.
>
We will definitely get to this! I'll start to investigate.
> > Source/WebCore/dom/Element.cpp:257
> > + if (platformEvent.type() == PlatformEvent::MouseForceChanged && !document().hasListenerType(Document::FORCECHANGED_LISTENER))
> > + return false;
> > + if (platformEvent.type() == PlatformEvent::MouseForceDown && !document().hasListenerType(Document::FORCEDOWN_LISTENER))
> > + return false;
> > + if (platformEvent.type() == PlatformEvent::MouseForceUp && !document().hasListenerType(Document::FORCEUP_LISTENER))
> > + return false;
>
> A little helper that maps Document::*_LISTENER to PlatformEvent::Mouse*
> types would make this cleaner.
>
I'm not sure I know what you mean. Are you just suggesting moving this to a helper function? A helper function that specifically maps LISTENER to PlatformEvent does not sound helpful to me, but lifting these three ifs into their own helper would be fine. I feel like I'm missing something here.
> > Source/WebCore/page/EventHandler.cpp:2116
> > + if (m_frameSetBeingResized)
> > + return !dispatchMouseEvent(eventNames().webkitmouseforcechangedEvent, m_frameSetBeingResized.get(), false, 0, event, false);
>
> Weird. What's this about?
>
> > Source/WebCore/page/EventHandler.cpp:2135
> > + if (m_frameSetBeingResized) {
> > + dispatchMouseEvent(eventNames().webkitmouseforcechangedEvent, m_frameSetBeingResized.get(), false, 0, event, false);
> > + return !dispatchMouseEvent(eventNames().webkitmouseforcedownEvent, m_frameSetBeingResized.get(), false, 0, event, false);
> > + }
>
> Same.
>
There are lines one code like this when handling mousemoved and mouseup, which is why I added the code here. Turns out that whatever this concept is of framesets being resized is super ancient, and pre-dates EventHandler even being its own file. I could not find a sufficient explanation for what it does. Given that, and given that it is not consulted for other mouse events, I decided to remove these lines of code from the new force event handling functions.
> > Source/WebCore/page/EventHandler.cpp:2164
> > +bool EventHandler::handleMouseForceUpEvent(const PlatformMouseEvent& event)
> > +{
> > + RefPtr<FrameView> protector(m_frame.view());
> > +
> > + setLastKnownMousePosition(event);
> > +
> > + if (m_frameSetBeingResized) {
> > + dispatchMouseEvent(eventNames().webkitmouseforcechangedEvent, m_frameSetBeingResized.get(), false, 0, event, false);
> > + return !dispatchMouseEvent(eventNames().webkitmouseforceupEvent, m_frameSetBeingResized.get(), false, 0, event, false);
> > + }
> > +
> > + HitTestRequest::HitTestRequestType hitType = HitTestRequest::DisallowShadowContent | HitTestRequest::Active;
> > +
> > + HitTestRequest request(hitType);
> > + MouseEventWithHitTestResults mouseEvent = prepareMouseEvent(request, event);
> > +
> > + dispatchMouseEvent(eventNames().webkitmouseforcechangedEvent, mouseEvent.targetNode(), false, 0, event, false);
> > + return !dispatchMouseEvent(eventNames().webkitmouseforceupEvent, mouseEvent.targetNode(), false, 0, event, false);
> > +}
>
> Lots of very similar-looking code here. Can it be shared?
>
Yes! Consolidated.
> > Source/WebCore/page/EventHandler.cpp:2178
> > +bool EventHandler::handleMouseForceChangedEvent(const PlatformMouseEvent& )
> > +{
> > +}
> > +
> > +bool EventHandler::handleMouseForceDownEvent(const PlatformMouseEvent&)
> > +{
> > +}
> > +
> > +bool EventHandler::handleMouseForceUpEvent(const PlatformMouseEvent&)
> > +{
> > +}
>
> These need to return false.
Good point!
New patch coming soon.
--
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.webkit.org/pipermail/webkit-unassigned/attachments/20150415/4098c42a/attachment.html>
More information about the webkit-unassigned
mailing list