Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1150)

Side by Side Diff: third_party/WebKit/Source/core/events/PointerEventFactory.cpp

Issue 1968653005: Set width=height=1 of mouse like pointer events (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebased Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "core/events/PointerEventFactory.h" 5 #include "core/events/PointerEventFactory.h"
6 6
7 #include "core/frame/FrameView.h" 7 #include "core/frame/FrameView.h"
8 #include "platform/geometry/FloatSize.h" 8 #include "platform/geometry/FloatSize.h"
9 9
10 namespace blink { 10 namespace blink {
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
85 && type != EventTypeNames::pointerleave); 85 && type != EventTypeNames::pointerleave);
86 pointerEventInit.setCancelable(type != EventTypeNames::pointerenter 86 pointerEventInit.setCancelable(type != EventTypeNames::pointerenter
87 && type != EventTypeNames::pointerleave && type != EventTypeNames::point ercancel); 87 && type != EventTypeNames::pointerleave && type != EventTypeNames::point ercancel);
88 } 88 }
89 89
90 PointerEvent* PointerEventFactory::create( 90 PointerEvent* PointerEventFactory::create(
91 const AtomicString& mouseEventName, const PlatformMouseEvent& mouseEvent, 91 const AtomicString& mouseEventName, const PlatformMouseEvent& mouseEvent,
92 EventTarget* relatedTarget, 92 EventTarget* relatedTarget,
93 LocalDOMWindow* view) 93 LocalDOMWindow* view)
94 { 94 {
95 DCHECK(mouseEventName == EventTypeNames::mousemove
96 || mouseEventName == EventTypeNames::mousedown
97 || mouseEventName == EventTypeNames::mouseup);
98
95 AtomicString pointerEventName = pointerEventNameForMouseEventName(mouseEvent Name); 99 AtomicString pointerEventName = pointerEventNameForMouseEventName(mouseEvent Name);
96 unsigned buttons = MouseEvent::platformModifiersToButtons(mouseEvent.getModi fiers()); 100 unsigned buttons = MouseEvent::platformModifiersToButtons(mouseEvent.getModi fiers());
97 PointerEventInit pointerEventInit; 101 PointerEventInit pointerEventInit;
98 102
99 setIdTypeButtons(pointerEventInit, mouseEvent.pointerProperties(), buttons); 103 setIdTypeButtons(pointerEventInit, mouseEvent.pointerProperties(), buttons);
100 setBubblesAndCancelable(pointerEventInit, pointerEventName); 104 setBubblesAndCancelable(pointerEventInit, pointerEventName);
101 105
102 pointerEventInit.setScreenX(mouseEvent.globalPosition().x()); 106 pointerEventInit.setScreenX(mouseEvent.globalPosition().x());
103 pointerEventInit.setScreenY(mouseEvent.globalPosition().y()); 107 pointerEventInit.setScreenY(mouseEvent.globalPosition().y());
104 108
105 IntPoint locationInFrameZoomed; 109 IntPoint locationInFrameZoomed;
106 if (view && view->frame() && view->frame()->view()) { 110 if (view && view->frame() && view->frame()->view()) {
107 LocalFrame* frame = view->frame(); 111 LocalFrame* frame = view->frame();
108 FrameView* frameView = frame->view(); 112 FrameView* frameView = frame->view();
109 IntPoint locationInContents = frameView->rootFrameToContents(mouseEvent. position()); 113 IntPoint locationInContents = frameView->rootFrameToContents(mouseEvent. position());
110 locationInFrameZoomed = frameView->contentsToFrame(locationInContents); 114 locationInFrameZoomed = frameView->contentsToFrame(locationInContents);
111 float scaleFactor = 1 / frame->pageZoomFactor(); 115 float scaleFactor = 1 / frame->pageZoomFactor();
112 locationInFrameZoomed.scale(scaleFactor, scaleFactor); 116 locationInFrameZoomed.scale(scaleFactor, scaleFactor);
113 } 117 }
114 118
115 // Set up initial values for coordinates. 119 // Set up initial values for coordinates.
116 pointerEventInit.setClientX(locationInFrameZoomed.x()); 120 pointerEventInit.setClientX(locationInFrameZoomed.x());
117 pointerEventInit.setClientY(locationInFrameZoomed.y()); 121 pointerEventInit.setClientY(locationInFrameZoomed.y());
118 122
119 if (pointerEventName == EventTypeNames::pointerdown 123 if (pointerEventName == EventTypeNames::pointerdown
120 || pointerEventName == EventTypeNames::pointerup) { 124 || pointerEventName == EventTypeNames::pointerup) {
121 pointerEventInit.setButton(mouseEvent.button()); 125 pointerEventInit.setButton(mouseEvent.button());
122 } else { 126 } else { // Only when pointerEventName == EventTypeNames::pointermove
123 // TODO(crbug.com/587955): We are setting NoButton for transition
124 // pointerevents should be resolved as part of this bug
125 pointerEventInit.setButton(NoButton); 127 pointerEventInit.setButton(NoButton);
126 } 128 }
127 pointerEventInit.setPressure(getPointerEventPressure( 129 pointerEventInit.setPressure(getPointerEventPressure(
128 mouseEvent.pointerProperties().force, pointerEventInit.buttons())); 130 mouseEvent.pointerProperties().force, pointerEventInit.buttons()));
129 131
132 // Set width/height to 1 because it matches Edge (and supported by the spec) .
133 pointerEventInit.setWidth(1);
134 pointerEventInit.setHeight(1);
135
130 UIEventWithKeyState::setFromPlatformModifiers(pointerEventInit, mouseEvent.g etModifiers()); 136 UIEventWithKeyState::setFromPlatformModifiers(pointerEventInit, mouseEvent.g etModifiers());
131 137
132 // Make sure chorded buttons fire pointermove instead of pointerup/down. 138 // Make sure chorded buttons fire pointermove instead of pointerup/down.
133 if ((pointerEventName == EventTypeNames::pointerdown 139 if ((pointerEventName == EventTypeNames::pointerdown
134 && (buttons & ~MouseEvent::buttonToButtons(mouseEvent.button())) != 0) 140 && (buttons & ~MouseEvent::buttonToButtons(mouseEvent.button())) != 0)
135 || (pointerEventName == EventTypeNames::pointerup && buttons != 0)) 141 || (pointerEventName == EventTypeNames::pointerup && buttons != 0))
136 pointerEventName = EventTypeNames::pointermove; 142 pointerEventName = EventTypeNames::pointermove;
137 143
138 144
139 pointerEventInit.setView(view); 145 pointerEventInit.setView(view);
(...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after
376 if (properties.pointerType 382 if (properties.pointerType
377 == WebPointerProperties::PointerType::Mouse) 383 == WebPointerProperties::PointerType::Mouse)
378 return PointerEventFactory::s_mouseId; 384 return PointerEventFactory::s_mouseId;
379 IncomingId id(properties.pointerType, properties.id); 385 IncomingId id(properties.pointerType, properties.id);
380 if (m_pointerIncomingIdMapping.contains(id)) 386 if (m_pointerIncomingIdMapping.contains(id))
381 return m_pointerIncomingIdMapping.get(id); 387 return m_pointerIncomingIdMapping.get(id);
382 return PointerEventFactory::s_invalidId; 388 return PointerEventFactory::s_invalidId;
383 } 389 }
384 390
385 } // namespace blink 391 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698