Chromium Code Reviews| Index: views/events/event_gtk.cc |
| =================================================================== |
| --- views/events/event_gtk.cc (revision 74437) |
| +++ views/events/event_gtk.cc (working copy) |
| @@ -1,4 +1,4 @@ |
| -// Copyright (c) 2009 The Chromium Authors. All rights reserved. |
| +// Copyright (c) 2011 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. |
| @@ -6,24 +6,37 @@ |
| #include <gdk/gdk.h> |
| +#include "base/logging.h" |
| #include "ui/base/keycodes/keyboard_code_conversion_gtk.h" |
| namespace views { |
| -KeyEvent::KeyEvent(const GdkEventKey* event) |
| - : Event(event->type == GDK_KEY_PRESS ? |
| - ui::ET_KEY_PRESSED : ui::ET_KEY_RELEASED, |
| - GetFlagsFromGdkState(event->state)), |
| - // TODO(erg): All these values are iffy. |
| - key_code_(ui::WindowsKeyCodeForGdkKeyCode(event->keyval)), |
| - repeat_count_(0), |
| - message_flags_(0) |
| -#if !defined(TOUCH_UI) |
| - , native_event_(event) |
| -#endif |
| -{ |
| +namespace { |
| + |
| +ui::EventType EventTypeFromNative(NativeEvent native_event) { |
| + switch (native_event->type) { |
| + case GDK_KEY_PRESS: |
| + return ui::ET_KEY_PRESSED; |
| + case GDK_KEY_RELEASE: |
| + return ui::ET_KEY_RELEASED; |
| + default: |
| + NOTREACHED(); |
| + break; |
| + } |
| + return ui::ET_UNKNOWN; |
| } |
| +GdkEventKey* GetGdkEventKeyFromNative(NativeEvent native_event) { |
| + DCHECK(native_event->type == GDK_KEY_PRESS || |
| + native_event->type == GDK_KEY_RELEASE); |
| + return &native_event->key; |
| +} |
| + |
| +} // namespace |
| + |
| +//////////////////////////////////////////////////////////////////////////////// |
| +// Event, public: |
| + |
| // static |
| int Event::GetFlagsFromGdkState(int state) { |
| int flags = 0; |
| @@ -44,4 +57,47 @@ |
| return flags; |
| } |
| +//////////////////////////////////////////////////////////////////////////////// |
| +// Event, private: |
| + |
| +void Event::Init() { |
| + native_event_ = NULL; |
| + native_event_2 = NULL; |
|
sadrul
2011/02/10 21:52:01
native_event_2_
|
| +} |
| + |
| +void Event::InitWithNativeEvent(NativeEvent native_event) { |
| + native_event_ = native_event; |
| + // TODO(beng): remove once we rid views of Gtk/Gdk. |
| + native_event_2_ = NULL; |
| +} |
| + |
| +#if !defined(TOUCH_UI) |
| +void Event::InitWithNativeEvent2(NativeEvent2 native_event_2) { |
| + // No one should ever call this on non-Touch Linux. |
| + // TODO(beng): remove once we rid views of Gtk/Gdk. |
| + NOTREACHED(); |
| + native_event_2_ = NULL; |
| +} |
| +#endif |
| + |
| +//////////////////////////////////////////////////////////////////////////////// |
| +// KeyEvent, public: |
| + |
| +KeyEvent::KeyEvent(NativeEvent native_event) |
| + : Event(native_event, EventTypeFromNative(native_event), |
| + GetFlagsFromGdkState( |
| + GetGdkEventKeyFromNative(native_event)->state)), |
| + key_code_(ui::WindowsKeyCodeForGdkKeyCode( |
| + GetGdkEventKeyFromNative(native_event)->keyval)) { |
| +} |
| + |
| +#if !defined(TOUCH_UI) |
| +KeyEvent::KeyEvent(NativeEvent2 native_event_2) |
| + : Event(native_event_2, ui::ET_UNKNOWN, 0) { |
| + // No one should ever call this on Gtk-views. |
| + // TODO(beng): remove once we rid views of Gtk/Gdk. |
| + NOTREACHED(); |
| +} |
| +#endif |
| + |
| } // namespace views |