Changeset 86381 in webkit
- Timestamp:
- May 12, 2011 2:43:13 PM (13 years ago)
- Location:
- trunk
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r86378 r86381 1 2011-05-12 Daniel Bates <dbates@rim.com> 2 3 Reviewed by Kenneth Rohde Christiansen. 4 5 [Qt] fast/events/fire-mousedown-while-pressing-mouse-button.html failing 6 https://bugs.webkit.org/show_bug.cgi?id=58863 7 8 Remove test case fast/events/fire-mousedown-while-pressing-mouse-button.html 9 from the Skipped list since it now passes. 10 11 * platform/qt/Skipped: 12 1 13 2011-05-12 Chang Shu <cshu@webkit.org> 2 14 -
trunk/LayoutTests/platform/qt/Skipped
r86376 r86381 1241 1241 # failing fast tests 1242 1242 # ============================================================================= # 1243 1244 # [Qt] fast/events/fire-mousedown-while-pressing-mouse-button.html failing1245 # https://bugs.webkit.org/show_bug.cgi?id=588631246 fast/events/fire-mousedown-while-pressing-mouse-button.html1247 1243 1248 1244 # [Qt] fast/ruby/overhang* tests fail -
trunk/Source/WebCore/ChangeLog
r86377 r86381 1 2011-05-12 Daniel Bates <dbates@rim.com> 2 3 Reviewed by Kenneth Rohde Christiansen. 4 5 [Qt] fast/events/fire-mousedown-while-pressing-mouse-button.html failing 6 https://bugs.webkit.org/show_bug.cgi?id=58863 7 8 Fixes an issue where a platform mouse event corresponding to mouse button A 9 may be associated with the wrong WebCore mouse button when the event occurs 10 while pressing and holding a mouse button B, where A != B. 11 12 For example, a person clicks the middle mouse button while pressing and holding 13 the left mouse button. Then we dispatch the following DOM events: mouse down for 14 left button, mouse down for left button, mouse up for left button. But, we should 15 have dispatched: mouse down for left button, mouse down for middle button, mouse up 16 for middle button. 17 18 * platform/qt/PlatformMouseEventQt.cpp: 19 (WebCore::mouseEventTypeAndMouseButtonFromQEvent): Added. 20 (WebCore::PlatformMouseEvent::PlatformMouseEvent): Modified to call mouseEventTypeAndMouseButtonFromQEvent() 21 to determine the WebCore mouse event type and button from the platform-specific event. 22 1 23 2011-05-12 Levi Weintraub <leviw@chromium.org> 2 24 -
trunk/Source/WebCore/platform/qt/PlatformMouseEventQt.cpp
r86273 r86381 1 1 /* 2 2 * Copyright (C) 2006 Zack Rusin <zack@kde.org> 3 * Copyright (C) 2011 Research In Motion Limited. 3 4 * 4 5 * All rights reserved. … … 43 44 } 44 45 46 static void mouseEventTypeAndMouseButtonFromQEvent(const QEvent* event, MouseEventType& mouseEventType, MouseButton& mouseButton) 47 { 48 enum { MouseEvent, GraphicsSceneMouseEvent } frameworkMouseEventType; 49 switch (event->type()) { 50 case QEvent::MouseButtonDblClick: 51 case QEvent::MouseButtonPress: 52 frameworkMouseEventType = MouseEvent; 53 mouseEventType = MouseEventPressed; 54 break; 55 case QEvent::MouseButtonRelease: 56 frameworkMouseEventType = MouseEvent; 57 mouseEventType = MouseEventReleased; 58 break; 59 case QEvent::MouseMove: 60 frameworkMouseEventType = MouseEvent; 61 mouseEventType = MouseEventMoved; 62 break; 63 #if !defined(QT_NO_GRAPHICSVIEW) 64 case QEvent::GraphicsSceneMouseDoubleClick: 65 case QEvent::GraphicsSceneMousePress: 66 frameworkMouseEventType = GraphicsSceneMouseEvent; 67 mouseEventType = MouseEventPressed; 68 break; 69 case QEvent::GraphicsSceneMouseRelease: 70 frameworkMouseEventType = GraphicsSceneMouseEvent; 71 mouseEventType = MouseEventReleased; 72 break; 73 case QEvent::GraphicsSceneMouseMove: 74 frameworkMouseEventType = GraphicsSceneMouseEvent; 75 mouseEventType = MouseEventMoved; 76 break; 77 #endif 78 default: 79 ASSERT_NOT_REACHED(); 80 frameworkMouseEventType = MouseEvent; 81 mouseEventType = MouseEventMoved; 82 break; 83 } 84 85 Qt::MouseButtons mouseButtons; 86 switch (frameworkMouseEventType) { 87 case MouseEvent: { 88 const QMouseEvent* mouseEvent = static_cast<const QMouseEvent*>(event); 89 mouseButtons = mouseEventType == MouseEventMoved ? mouseEvent->buttons() : mouseEvent->button(); 90 break; 91 } 92 case GraphicsSceneMouseEvent: { 93 const QGraphicsSceneMouseEvent* mouseEvent = static_cast<const QGraphicsSceneMouseEvent*>(event); 94 mouseButtons = mouseEventType == MouseEventMoved ? mouseEvent->buttons() : mouseEvent->button(); 95 break; 96 } 97 } 98 99 if (mouseButtons & Qt::LeftButton) 100 mouseButton = LeftButton; 101 else if (mouseButtons & Qt::RightButton) 102 mouseButton = RightButton; 103 else if (mouseButtons & Qt::MidButton) 104 mouseButton = MiddleButton; 105 else 106 mouseButton = NoButton; 107 } 108 45 109 #if !defined(QT_NO_GRAPHICSVIEW) 46 110 PlatformMouseEvent::PlatformMouseEvent(QGraphicsSceneMouseEvent* event, int clickCount) … … 48 112 m_timestamp = WTF::currentTime(); 49 113 50 switch (event->type()) { 51 case QEvent::GraphicsSceneMouseDoubleClick: 52 case QEvent::GraphicsSceneMousePress: 53 m_eventType = MouseEventPressed; 54 break; 55 case QEvent::GraphicsSceneMouseRelease: 56 m_eventType = MouseEventReleased; 57 break; 58 case QEvent::GraphicsSceneMouseMove: 59 default: 60 m_eventType = MouseEventMoved; 61 } 62 114 // FIXME: Why don't we handle a context menu event here as we do in PlatformMouseEvent(QInputEvent*, int)? 115 // See <https://bugs.webkit.org/show_bug.cgi?id=60728>. 116 mouseEventTypeAndMouseButtonFromQEvent(event, m_eventType, m_button); 63 117 m_position = IntPoint(event->pos().toPoint()); 64 118 m_globalPosition = IntPoint(event->screenPos()); 65 66 if (event->button() == Qt::LeftButton || (event->buttons() & Qt::LeftButton))67 m_button = LeftButton;68 else if (event->button() == Qt::RightButton || (event->buttons() & Qt::RightButton))69 m_button = RightButton;70 else if (event->button() == Qt::MidButton || (event->buttons() & Qt::MidButton))71 m_button = MiddleButton;72 else73 m_button = NoButton;74 119 75 120 m_clickCount = clickCount; … … 82 127 m_timestamp = WTF::currentTime(); 83 128 84 QMouseEvent* me = 0; 85 86 switch (event->type()) { 87 case QEvent::MouseMove: 88 m_eventType = MouseEventMoved; 89 me = static_cast<QMouseEvent *>(event); 90 break; 91 case QEvent::MouseButtonDblClick: 92 case QEvent::MouseButtonPress: 93 m_eventType = MouseEventPressed; 94 me = static_cast<QMouseEvent *>(event); 95 break; 96 case QEvent::MouseButtonRelease: 97 m_eventType = MouseEventReleased; 98 me = static_cast<QMouseEvent *>(event); 99 break; 129 bool isContextMenuEvent = false; 100 130 #ifndef QT_NO_CONTEXTMENU 101 case QEvent::ContextMenu: { 131 if (event->type() == QEvent::ContextMenu) { 132 isContextMenuEvent = true; 102 133 m_eventType = MouseEventPressed; 103 134 QContextMenuEvent* ce = static_cast<QContextMenuEvent*>(event); … … 105 136 m_globalPosition = IntPoint(ce->globalPos()); 106 137 m_button = RightButton; 107 break;108 138 } 109 #endif // QT_NO_CONTEXTMENU 110 default: 111 m_eventType = MouseEventMoved; 112 } 113 114 if (me) { 115 m_position = IntPoint(me->pos()); 116 m_globalPosition = IntPoint(me->globalPos()); 117 118 if (me->button() == Qt::LeftButton || (me->buttons() & Qt::LeftButton)) 119 m_button = LeftButton; 120 else if (me->button() == Qt::RightButton || (me->buttons() & Qt::RightButton)) 121 m_button = RightButton; 122 else if (me->button() == Qt::MidButton || (me->buttons() & Qt::MidButton)) 123 m_button = MiddleButton; 124 else 125 m_button = NoButton; 139 #endif 140 if (!isContextMenuEvent) { 141 mouseEventTypeAndMouseButtonFromQEvent(event, m_eventType, m_button); 142 QMouseEvent* mouseEvent = static_cast<QMouseEvent*>(event); 143 m_position = IntPoint(mouseEvent->pos()); 144 m_globalPosition = IntPoint(mouseEvent->globalPos()); 126 145 } 127 146
Note: See TracChangeset
for help on using the changeset viewer.