summaryrefslogtreecommitdiffstats
path: root/webkit/glue
diff options
context:
space:
mode:
authordeanm@chromium.org <deanm@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2008-11-13 21:58:49 +0000
committerdeanm@chromium.org <deanm@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2008-11-13 21:58:49 +0000
commitf11a676e8cb6503bf7ed3881d4d20a49612e3cbd (patch)
tree121a58e821b437f62be7a188776c83ef577b9653 /webkit/glue
parentd6890fac98901cfd564bd87096870ed27285b5fc (diff)
downloadchromium_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.cc13
-rw-r--r--webkit/glue/webinputevent_linux.cc26
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?
}