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

Unified Diff: webkit/glue/event_conversion.cc

Issue 115330: linux: Adding events to windowless plugins on Linux (Closed) Base URL: http://src.chromium.org/svn/trunk/src/
Patch Set: '' Created 11 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « webkit/glue/event_conversion.h ('k') | webkit/glue/plugins/plugin_host.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webkit/glue/event_conversion.cc
===================================================================
--- webkit/glue/event_conversion.cc (revision 16673)
+++ webkit/glue/event_conversion.cc (working copy)
@@ -5,7 +5,11 @@
#include "config.h"
#include "webkit/glue/event_conversion.h"
+#include "EventNames.h"
+#include "FrameView.h"
#include "KeyboardCodes.h"
+#include "KeyboardEvent.h"
+#include "MouseEvent.h"
#include "StringImpl.h" // This is so that the KJS build works
#include "PlatformKeyboardEvent.h"
#include "PlatformMouseEvent.h"
@@ -149,3 +153,88 @@
}
return true;
}
+
+static int GetWebInputModifiers(const WebCore::UIEventWithKeyState& event) {
+ int modifiers = 0;
+ if (event.ctrlKey())
+ modifiers |= WebInputEvent::ControlKey;
+ if (event.shiftKey())
+ modifiers |= WebInputEvent::ShiftKey;
+ if (event.altKey())
+ modifiers |= WebInputEvent::AltKey;
+ if (event.metaKey())
+ modifiers |= WebInputEvent::MetaKey;
+ return modifiers;
+}
+
+
+bool ToWebMouseEvent(const WebCore::FrameView& view,
+ const WebCore::MouseEvent& event,
+ WebKit::WebMouseEvent* web_event) {
+ if (event.type() == WebCore::eventNames().mousemoveEvent) {
+ web_event->type = WebInputEvent::MouseMove;
+ } else if (event.type() == WebCore::eventNames().mouseoutEvent) {
+ web_event->type = WebInputEvent::MouseLeave;
+ } else if (event.type() == WebCore::eventNames().mouseoverEvent) {
+ web_event->type = WebInputEvent::MouseEnter;
+ } else if (event.type() == WebCore::eventNames().mousedownEvent) {
+ web_event->type = WebInputEvent::MouseDown;
+ } else if (event.type() == WebCore::eventNames().mouseupEvent) {
+ web_event->type = WebInputEvent::MouseUp;
+ } else {
+ // Skip all other mouse events.
+ return false;
+ }
+ web_event->timeStampSeconds = event.timeStamp() * 1.0e-3;
+ switch (event.button()) {
+ case WebCore::LeftButton:
+ web_event->button = WebMouseEvent::ButtonLeft;
+ break;
+ case WebCore::MiddleButton:
+ web_event->button = WebMouseEvent::ButtonMiddle;
+ break;
+ case WebCore::RightButton:
+ web_event->button = WebMouseEvent::ButtonRight;
+ break;
+ }
+ web_event->modifiers = GetWebInputModifiers(event);
+ if (event.buttonDown()) {
+ switch (event.button()) {
+ case WebCore::LeftButton:
+ web_event->modifiers |= WebInputEvent::LeftButtonDown;
+ break;
+ case WebCore::MiddleButton:
+ web_event->modifiers |= WebInputEvent::MiddleButtonDown;
+ break;
+ case WebCore::RightButton:
+ web_event->modifiers |= WebInputEvent::RightButtonDown;
+ break;
+ }
+ }
+ WebCore::IntPoint p = view.contentsToWindow(WebCore::IntPoint(event.pageX(),
+ event.pageY()));
+ web_event->globalX = event.screenX();
+ web_event->globalY = event.screenY();
+ web_event->windowX = p.x();
+ web_event->windowY = p.y();
+ web_event->x = event.offsetX();
+ web_event->y = event.offsetY();
+ return true;
+}
+
+bool ToWebKeyboardEvent(const WebCore::KeyboardEvent& event,
+ WebKeyboardEvent* web_event) {
+ if (event.type() == WebCore::eventNames().keydownEvent) {
+ web_event->type = WebInputEvent::KeyDown;
+ } else if (event.type() == WebCore::eventNames().keyupEvent) {
+ web_event->type = WebInputEvent::KeyUp;
+ } else {
+ // Skip all other keyboard events.
+ return false;
+ }
+ web_event->modifiers = GetWebInputModifiers(event);
+ web_event->timeStampSeconds = event.timeStamp() * 1.0e-3;
+ web_event->windowsKeyCode = event.keyCode();
+ web_event->nativeKeyCode = event.keyEvent()->nativeVirtualKeyCode();
+ return true;
+}
« no previous file with comments | « webkit/glue/event_conversion.h ('k') | webkit/glue/plugins/plugin_host.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698