diff options
Diffstat (limited to 'webkit/glue/webinputevent.h')
-rw-r--r-- | webkit/glue/webinputevent.h | 206 |
1 files changed, 0 insertions, 206 deletions
diff --git a/webkit/glue/webinputevent.h b/webkit/glue/webinputevent.h deleted file mode 100644 index 351da4b..0000000 --- a/webkit/glue/webinputevent.h +++ /dev/null @@ -1,206 +0,0 @@ -// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef WEBKIT_GLUE_WEBINPUTEVENT_H_ -#define WEBKIT_GLUE_WEBINPUTEVENT_H_ - -#include "base/basictypes.h" -#include "base/string16.h" - -#if defined(OS_WIN) -#include <windows.h> -#elif defined(OS_MACOSX) -#ifdef __OBJC__ -@class NSEvent; -@class NSView; -#else -class NSEvent; -class NSView; -#endif // __OBJC__ -#elif defined(OS_LINUX) -#include <glib.h> -typedef struct _GdkEventButton GdkEventButton; -typedef struct _GdkEventMotion GdkEventMotion; -typedef struct _GdkEventScroll GdkEventScroll; -typedef struct _GdkEventKey GdkEventKey; -#endif - -// The classes defined in this file are intended to be used with WebView's -// HandleInputEvent method. These event types are cross-platform; however, -// there are platform-specific constructors that accept native UI events. -// -// The fields of these event classes roughly correspond to the fields required -// by WebCore's platform event classes. -// -// WARNING! These classes must remain PODs (plain old data). They will be -// "serialized" by shipping their raw bytes across the wire, so they must not -// contain any non-bit-copyable member variables! - -// WebInputEvent -------------------------------------------------------------- - -class WebInputEvent { - public: - WebInputEvent() : modifiers(0) { } - - // There are two schemes used for keyboard input. On Windows (and, - // interestingly enough, on Mac Carbon) there are two events for a keypress. - // One is a raw keydown, which provides the keycode only. If the app doesn't - // handle that, then the system runs key translation to create an event - // containing the generated character and pumps that event. In such a scheme, - // those two events are translated to RAW_KEY_DOWN and CHAR events - // respectively. In Cocoa and Gtk, key events contain both the keycode and any - // translation into actual text. In such a case, WebCore will eventually need - // to split the events (see disambiguateKeyDownEvent and its callers) but we - // don't worry about that here. We just use a different type (KEY_DOWN) to - // indicate this. - enum Type { - // WebMouseEvent - MOUSE_DOWN, - MOUSE_UP, - MOUSE_MOVE, - MOUSE_LEAVE, - MOUSE_DOUBLE_CLICK, - - // WebMouseWheelEvent - MOUSE_WHEEL, - - // WebKeyboardEvent - RAW_KEY_DOWN, - KEY_DOWN, - KEY_UP, - CHAR - }; - - enum Modifiers { - // modifiers for all events: - SHIFT_KEY = 1 << 0, - CTRL_KEY = 1 << 1, - ALT_KEY = 1 << 2, - META_KEY = 1 << 3, - - // modifiers for keyboard events: - IS_KEYPAD = 1 << 4, - IS_AUTO_REPEAT = 1 << 5 - }; - - Type type; - int modifiers; - - // Returns true if the WebInputEvent |type| is a keyboard event. - static bool IsKeyboardEventType(int type) { - return type == RAW_KEY_DOWN || - type == KEY_DOWN || - type == KEY_UP || - type == CHAR; - } -}; - -// WebMouseEvent -------------------------------------------------------------- - -class WebMouseEvent : public WebInputEvent { - public: - // These values defined for WebCore::MouseButton - enum Button { - BUTTON_NONE = -1, - BUTTON_LEFT, - BUTTON_MIDDLE, - BUTTON_RIGHT - }; - - Button button; - int x; - int y; - int global_x; - int global_y; - double timestamp_sec; // Seconds since epoch. - int layout_test_click_count; // Only used during layout tests. - - WebMouseEvent() {} -#if defined(OS_WIN) - WebMouseEvent(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam); -#elif defined(OS_MACOSX) - WebMouseEvent(NSEvent *event, NSView* view); -#elif defined(OS_LINUX) - explicit WebMouseEvent(const GdkEventButton* event); - explicit WebMouseEvent(const GdkEventMotion* event); -#endif -}; - -// WebMouseWheelEvent --------------------------------------------------------- - -class WebMouseWheelEvent : public WebMouseEvent { - public: - float delta_x; - float delta_y; - float wheel_ticks_x; - float wheel_ticks_y; - bool scroll_by_page; - - WebMouseWheelEvent() {} -#if defined(OS_WIN) - WebMouseWheelEvent(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam); -#elif defined(OS_MACOSX) - WebMouseWheelEvent(NSEvent *event, NSView* view); -#elif defined(OS_LINUX) - explicit WebMouseWheelEvent(const GdkEventScroll* event); -#endif -}; - -// WebKeyboardEvent ----------------------------------------------------------- - -// Caps on string lengths so we can make them static arrays and keep them PODs. -const size_t kTextLengthCap = 4; -// http://www.w3.org/TR/DOM-Level-3-Events/keyset.html lists the identifiers. -// The longest is 18 characters, so we'll round up to the next multiple of 4. -const size_t kIdentifierLengthCap = 20; - -class WebKeyboardEvent : public WebInputEvent { - public: - // |windows_key_code| is the Windows key code associated with this key event. - // Sometimes it's direct from the event (i.e. on Windows), sometimes it's via - // a mapping function. If you want a list, see - // webkit/port/platform/chromium/KeyboardCodes* . - int windows_key_code; - - // The actual key code genenerated by the platform. The DOM spec runs on - // Windows-equivalent codes (thus |windows_key_code| above) but it doesn't - // hurt to have this one around. - int native_key_code; - - // |text| is the text generated by this keystroke. |unmodified_text| is - // |text|, but unmodified by an concurrently-held modifiers (except shift). - // This is useful for working out shortcut keys. Linux and Windows guarantee - // one character per event. The Mac does not, but in reality that's all it - // ever gives. We're generous, and cap it a bit longer. - char16 text[kTextLengthCap]; - char16 unmodified_text[kTextLengthCap]; - - // This is a string identifying the key pressed. - char key_identifier[kIdentifierLengthCap]; - - // This identifies whether this event was tagged by the system as being a - // "system key" event (see - // http://msdn.microsoft.com/en-us/library/ms646286(VS.85).aspx for details). - // Other platforms don't have this concept, but it's just easier to leave it - // always false than ifdef. - bool system_key; - - WebKeyboardEvent() : windows_key_code(0), - native_key_code(0), - system_key(false) { - memset(&text, 0, sizeof(text)); - memset(&unmodified_text, 0, sizeof(unmodified_text)); - memset(&key_identifier, 0, sizeof(key_identifier)); - } - -#if defined(OS_WIN) - WebKeyboardEvent(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam); -#elif defined(OS_MACOSX) - explicit WebKeyboardEvent(NSEvent *event); -#elif defined(OS_LINUX) - explicit WebKeyboardEvent(const GdkEventKey* event); -#endif -}; - -#endif // WEBKIT_GLUE_WEBINPUTEVENT_H_ |