diff options
-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? } |