Index: webkit/api/src/gtk/WebInputEventFactory.cpp |
=================================================================== |
--- webkit/api/src/gtk/WebInputEventFactory.cpp (revision 30714) |
+++ webkit/api/src/gtk/WebInputEventFactory.cpp (working copy) |
@@ -381,6 +381,42 @@ |
return result; |
} |
+WebMouseEvent WebInputEventFactory::mouseEvent(const GdkEventCrossing* event) |
+{ |
+ WebMouseEvent result; |
+ |
+ result.timeStampSeconds = gdkEventTimeToWebEventTime(event->time); |
+ result.modifiers = gdkStateToWebEventModifiers(event->state); |
+ result.x = static_cast<int>(event->x); |
+ result.y = static_cast<int>(event->y); |
+ result.windowX = result.x; |
+ result.windowY = result.y; |
+ result.globalX = static_cast<int>(event->x_root); |
+ result.globalY = static_cast<int>(event->y_root); |
+ |
+ switch (event->type) { |
+ case GDK_ENTER_NOTIFY: |
+ case GDK_LEAVE_NOTIFY: |
+ // Note that if we sent MouseEnter or MouseLeave to WebKit, it |
+ // wouldn't work - they don't result in the proper JavaScript events. |
+ // MouseMove does the right thing. |
+ result.type = WebInputEvent::MouseMove; |
+ break; |
+ default: |
+ ASSERT_NOT_REACHED(); |
+ } |
+ |
+ result.button = WebMouseEvent::ButtonNone; |
+ if (event->state & GDK_BUTTON1_MASK) |
+ result.button = WebMouseEvent::ButtonLeft; |
+ else if (event->state & GDK_BUTTON2_MASK) |
+ result.button = WebMouseEvent::ButtonMiddle; |
+ else if (event->state & GDK_BUTTON3_MASK) |
+ result.button = WebMouseEvent::ButtonRight; |
+ |
+ return result; |
+} |
+ |
// WebMouseWheelEvent --------------------------------------------------------- |
WebMouseWheelEvent WebInputEventFactory::mouseWheelEvent(const GdkEventScroll* event) |