diff options
author | deanm@chromium.org <deanm@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-11-13 21:58:49 +0000 |
---|---|---|
committer | deanm@chromium.org <deanm@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-11-13 21:58:49 +0000 |
commit | f11a676e8cb6503bf7ed3881d4d20a49612e3cbd (patch) | |
tree | 121a58e821b437f62be7a188776c83ef577b9653 /webkit/glue | |
parent | d6890fac98901cfd564bd87096870ed27285b5fc (diff) | |
download | chromium_src-f11a676e8cb6503bf7ed3881d4d20a49612e3cbd.zip chromium_src-f11a676e8cb6503bf7ed3881d4d20a49612e3cbd.tar.gz chromium_src-f11a676e8cb6503bf7ed3881d4d20a49612e3cbd.tar.bz2 |
Fix mouse and keyboard input a bit.
Review URL: http://codereview.chromium.org/10886
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@5386 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/glue')
-rw-r--r-- | webkit/glue/event_conversion.cc | 13 | ||||
-rw-r--r-- | webkit/glue/webinputevent_linux.cc | 26 |
2 files changed, 33 insertions, 6 deletions
diff --git a/webkit/glue/event_conversion.cc b/webkit/glue/event_conversion.cc index b780d05..b93da38 100644 --- a/webkit/glue/event_conversion.cc +++ b/webkit/glue/event_conversion.cc @@ -73,6 +73,18 @@ MakePlatformMouseEvent::MakePlatformMouseEvent(Widget* widget, m_eventType = MouseEventMoved; break; + // TODO(port): make these platform agnostic when we restructure this code. +#if defined(OS_LINUX) + case WebInputEvent::MOUSE_DOUBLE_CLICK: + ++m_clickCount; + // fall through + case WebInputEvent::MOUSE_DOWN: + ++m_clickCount; + last_click_time_ = current_time; + last_click_button = m_button; + m_eventType = MouseEventPressed; + break; +#else case WebInputEvent::MOUSE_DOWN: case WebInputEvent::MOUSE_DOUBLE_CLICK: if (!cancel_previous_click && (m_button == last_click_button)) { @@ -86,6 +98,7 @@ MakePlatformMouseEvent::MakePlatformMouseEvent(Widget* widget, m_clickCount = last_click_count_; m_eventType = MouseEventPressed; break; +#endif case WebInputEvent::MOUSE_UP: m_clickCount = last_click_count_; diff --git a/webkit/glue/webinputevent_linux.cc b/webkit/glue/webinputevent_linux.cc index 11e53ce..a88de6f 100644 --- a/webkit/glue/webinputevent_linux.cc +++ b/webkit/glue/webinputevent_linux.cc @@ -54,9 +54,11 @@ WebMouseEvent::WebMouseEvent(const GdkEventButton* event) { switch (event->type) { case GDK_BUTTON_PRESS: + type = MOUSE_DOWN; + break; case GDK_2BUTTON_PRESS: case GDK_3BUTTON_PRESS: - type = MOUSE_DOWN; + type = MOUSE_DOUBLE_CLICK; break; case GDK_BUTTON_RELEASE: type = MOUSE_UP; @@ -155,13 +157,25 @@ WebKeyboardEvent::WebKeyboardEvent(const GdkEventKey* event) { NOTREACHED(); break; } + + // The key code tells us which physical key was pressed (for example, the + // A key went down or up). It does not determine whether A should be lower + // or upper case. This is what text does, which should be the keyval. key_code = WebCore::windowsKeyCodeForKeyEvent(event->keyval); - // GDK keys within the ASCII range are just ASCII. - if (event->keyval >= 0x20 && event->keyval < 0x7F) - text = event->keyval; - else - text = 0; + switch (event->keyval) { + // We need to treat the enter key as a key press of character \r. This + // is apparently just how webkit handles it and what it expects. + case GDK_ISO_Enter: + case GDK_KP_Enter: + case GDK_Return: + text = '\r'; + break; + default: + // This should set text to 0 when it's not a real character. + text = gdk_keyval_to_unicode(event->keyval); + break; + } // TODO(tc): Do we need to set IS_AUTO_REPEAT or IS_KEYPAD? } |