Index: views/events/event_gtk.cc |
diff --git a/views/events/event_gtk.cc b/views/events/event_gtk.cc |
index 13c8a8d67c2f0b1669102d3402756159a0109422..1cb914757baa28e419fa7949bb669f2097ecde6a 100644 |
--- a/views/events/event_gtk.cc |
+++ b/views/events/event_gtk.cc |
@@ -8,85 +8,27 @@ |
#include "base/logging.h" |
#include "ui/base/keycodes/keyboard_code_conversion_gtk.h" |
- |
-namespace views { |
+#include "ui/gfx/point.h" |
namespace { |
-ui::EventType EventTypeFromNative(NativeEvent native_event) { |
- // Add new event types as necessary. |
- switch (native_event->type) { |
- case GDK_2BUTTON_PRESS: |
- case GDK_3BUTTON_PRESS: |
- case GDK_BUTTON_PRESS: |
- return ui::ET_MOUSE_PRESSED; |
- case GDK_BUTTON_RELEASE: |
- return ui::ET_MOUSE_RELEASED; |
- case GDK_DRAG_MOTION: |
- return ui::ET_MOUSE_DRAGGED; |
- case GDK_ENTER_NOTIFY: |
- return ui::ET_MOUSE_ENTERED; |
+unsigned int GetGdkStateFromNative(GdkEvent* gdk_event) { |
+ switch (gdk_event->type) { |
case GDK_KEY_PRESS: |
- return ui::ET_KEY_PRESSED; |
case GDK_KEY_RELEASE: |
- return ui::ET_KEY_RELEASED; |
- case GDK_LEAVE_NOTIFY: |
- return ui::ET_MOUSE_EXITED; |
- case GDK_MOTION_NOTIFY: |
- if (native_event->motion.state & GDK_BUTTON1_MASK || |
- native_event->motion.state & GDK_BUTTON2_MASK || |
- native_event->motion.state & GDK_BUTTON3_MASK || |
- native_event->motion.state & GDK_BUTTON4_MASK || |
- native_event->motion.state & GDK_BUTTON5_MASK) { |
- return ui::ET_MOUSE_DRAGGED; |
- } |
- return ui::ET_MOUSE_MOVED; |
- case GDK_SCROLL: |
- return ui::ET_MOUSEWHEEL; |
- 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; |
-} |
- |
-gfx::Point GetMouseEventLocation(NativeEvent native_event) { |
- double x = 0, y = 0; |
- if (gdk_event_get_coords(native_event, &x, &y)) |
- return gfx::Point(static_cast<int>(x), static_cast<int>(y)); |
- return gfx::Point(); |
-} |
- |
-int GetMouseWheelOffset(NativeEvent native_event) { |
- DCHECK(native_event->type == GDK_SCROLL); |
- int offset = (native_event->scroll.direction == GDK_SCROLL_UP || |
- native_event->scroll.direction == GDK_SCROLL_LEFT) ? 1 : -1; |
- return MouseWheelEvent::kWheelDelta * offset; |
-} |
- |
-unsigned int GetGdkStateFromNative(NativeEvent native_event) { |
- switch (native_event->type) { |
- case GDK_KEY_PRESS: |
- case GDK_KEY_RELEASE: |
- return native_event->key.state; |
+ return gdk_event->key.state; |
case GDK_BUTTON_PRESS: |
case GDK_2BUTTON_PRESS: |
case GDK_3BUTTON_PRESS: |
case GDK_BUTTON_RELEASE: |
- return native_event->button.state; |
+ return gdk_event->button.state; |
case GDK_SCROLL: |
- return native_event->scroll.state; |
+ return gdk_event->scroll.state; |
case GDK_MOTION_NOTIFY: |
- return native_event->motion.state; |
+ return gdk_event->motion.state; |
case GDK_ENTER_NOTIFY: |
case GDK_LEAVE_NOTIFY: |
- return native_event->crossing.state; |
+ return gdk_event->crossing.state; |
default: |
NOTREACHED(); |
break; |
@@ -106,21 +48,55 @@ int GetFlagsFromGdkState(unsigned int state) { |
return flags; |
} |
-} // namespace |
- |
//////////////////////////////////////////////////////////////////////////////// |
-// Event, public: |
+// These functions mirror ui/base/events.h, but GTK is in the midst of removal. |
+ |
+ui::EventType EventTypeFromNative(GdkEvent* gdk_event) { |
+ // Add new event types as necessary. |
+ switch (gdk_event->type) { |
+ case GDK_2BUTTON_PRESS: |
+ case GDK_3BUTTON_PRESS: |
+ case GDK_BUTTON_PRESS: |
+ return ui::ET_MOUSE_PRESSED; |
+ case GDK_BUTTON_RELEASE: |
+ return ui::ET_MOUSE_RELEASED; |
+ case GDK_DRAG_MOTION: |
+ return ui::ET_MOUSE_DRAGGED; |
+ case GDK_ENTER_NOTIFY: |
+ return ui::ET_MOUSE_ENTERED; |
+ case GDK_KEY_PRESS: |
+ return ui::ET_KEY_PRESSED; |
+ case GDK_KEY_RELEASE: |
+ return ui::ET_KEY_RELEASED; |
+ case GDK_LEAVE_NOTIFY: |
+ return ui::ET_MOUSE_EXITED; |
+ case GDK_MOTION_NOTIFY: |
+ if (gdk_event->motion.state & GDK_BUTTON1_MASK || |
+ gdk_event->motion.state & GDK_BUTTON2_MASK || |
+ gdk_event->motion.state & GDK_BUTTON3_MASK || |
+ gdk_event->motion.state & GDK_BUTTON4_MASK || |
+ gdk_event->motion.state & GDK_BUTTON5_MASK) { |
+ return ui::ET_MOUSE_DRAGGED; |
+ } |
+ return ui::ET_MOUSE_MOVED; |
+ case GDK_SCROLL: |
+ return ui::ET_MOUSEWHEEL; |
+ default: |
+ NOTREACHED(); |
+ break; |
+ } |
+ return ui::ET_UNKNOWN; |
+} |
-// static |
-int Event::GetFlagsFromGdkEvent(NativeEvent native_event) { |
- int flags = GetFlagsFromGdkState(GetGdkStateFromNative(native_event)); |
- if (native_event->type == GDK_2BUTTON_PRESS) |
+int EventFlagsFromNative(GdkEvent* gdk_event) { |
+ int flags = GetFlagsFromGdkState(GetGdkStateFromNative(gdk_event)); |
+ if (gdk_event->type == GDK_2BUTTON_PRESS) |
flags |= ui::EF_IS_DOUBLE_CLICK; |
- if (native_event->type == GDK_BUTTON_PRESS || |
- native_event->type == GDK_2BUTTON_PRESS || |
- native_event->type == GDK_3BUTTON_PRESS || |
- native_event->type == GDK_BUTTON_RELEASE) { |
- switch (native_event->button.button) { |
+ if (gdk_event->type == GDK_BUTTON_PRESS || |
+ gdk_event->type == GDK_2BUTTON_PRESS || |
+ gdk_event->type == GDK_3BUTTON_PRESS || |
+ gdk_event->type == GDK_BUTTON_RELEASE) { |
+ switch (gdk_event->button.button) { |
case 1: |
return flags | ui::EF_LEFT_BUTTON_DOWN; |
case 2: |
@@ -132,54 +108,85 @@ int Event::GetFlagsFromGdkEvent(NativeEvent native_event) { |
return flags; |
} |
-//////////////////////////////////////////////////////////////////////////////// |
-// Event, private: |
+gfx::Point EventLocationFromNative(GdkEvent* gdk_event) { |
+ double x = 0, y = 0; |
+ if (gdk_event_get_coords(gdk_event, &x, &y)) |
+ return gfx::Point(static_cast<int>(x), static_cast<int>(y)); |
+ return gfx::Point(); |
+} |
-void Event::Init() { |
- native_event_ = NULL; |
- native_event_2_ = NULL; |
+ui::KeyboardCode KeyboardCodeFromNative(GdkEvent* gdk_event) { |
+ DCHECK(gdk_event->type == GDK_KEY_PRESS || |
+ gdk_event->type == GDK_KEY_RELEASE); |
+ return ui::KeyboardCodeFromGdkEventKey(&gdk_event->key); |
} |
-void Event::InitWithNativeEvent(NativeEvent native_event) { |
- native_event_ = native_event; |
- // TODO(beng): remove once we rid views of Gtk/Gdk. |
- native_event_2_ = NULL; |
+ |
+bool IsMouseEvent(GdkEvent* gdk_event) { |
+ return gdk_event->type == GDK_MOTION_NOTIFY || |
+ gdk_event->type == GDK_BUTTON_PRESS || |
+ gdk_event->type == GDK_2BUTTON_PRESS || |
+ gdk_event->type == GDK_3BUTTON_PRESS || |
+ gdk_event->type == GDK_BUTTON_RELEASE; |
} |
-//////////////////////////////////////////////////////////////////////////////// |
-// LocatedEvent, protected: |
+int GetMouseWheelOffset(GdkEvent* gdk_event) { |
+ DCHECK(gdk_event->type == GDK_SCROLL); |
+ int offset = (gdk_event->scroll.direction == GDK_SCROLL_UP || |
+ gdk_event->scroll.direction == GDK_SCROLL_LEFT) ? 1 : -1; |
+ return offset; |
+} |
-LocatedEvent::LocatedEvent(NativeEvent native_event) |
- : Event(native_event, EventTypeFromNative(native_event), |
- GetFlagsFromGdkEvent(native_event)), |
- location_(GetMouseEventLocation(native_event)) { |
+} // namespace |
+ |
+namespace views { |
+ |
+//////////////////////////////////////////////////////////////////////////////// |
+// Event, protected: |
+ |
+Event::Event(GdkEvent* gdk_event, ui::EventType type, int flags) |
+ : native_event_(NULL), |
+ gdk_event_(gdk_event), |
+ type_(type), |
+ time_stamp_(base::Time::NowFromSystemTime()), |
+ flags_(flags) { |
} |
//////////////////////////////////////////////////////////////////////////////// |
-// MouseEvent, public: |
+// LocatedEvent, protected: |
-MouseEvent::MouseEvent(NativeEvent native_event) |
- : LocatedEvent(native_event) { |
+LocatedEvent::LocatedEvent(GdkEvent* gdk_event) |
+ : Event(gdk_event, |
+ EventTypeFromNative(gdk_event), |
+ EventFlagsFromNative(gdk_event)), |
+ location_(EventLocationFromNative(gdk_event)) { |
} |
//////////////////////////////////////////////////////////////////////////////// |
// KeyEvent, public: |
-KeyEvent::KeyEvent(NativeEvent native_event) |
- : Event(native_event, EventTypeFromNative(native_event), |
- GetFlagsFromGdkEvent(native_event)), |
- key_code_(ui::KeyboardCodeFromGdkEventKey( |
- GetGdkEventKeyFromNative(native_event))), |
+KeyEvent::KeyEvent(GdkEvent* gdk_event) |
+ : Event(gdk_event, |
+ EventTypeFromNative(gdk_event), |
+ EventFlagsFromNative(gdk_event)), |
+ key_code_(KeyboardCodeFromNative(gdk_event)), |
character_(0), |
unmodified_character_(0) { |
} |
//////////////////////////////////////////////////////////////////////////////// |
+// MouseEvent, public: |
+ |
+MouseEvent::MouseEvent(GdkEvent* gdk_event) |
+ : LocatedEvent(gdk_event) { |
+} |
+ |
+//////////////////////////////////////////////////////////////////////////////// |
// MouseWheelEvent, public: |
-MouseWheelEvent::MouseWheelEvent(NativeEvent native_event) |
- : MouseEvent(native_event), |
- offset_(GetMouseWheelOffset(native_event)) { |
+MouseWheelEvent::MouseWheelEvent(GdkEvent* gdk_event) |
+ : MouseEvent(gdk_event), |
+ offset_(kWheelDelta * GetMouseWheelOffset(gdk_event)) { |
} |
} // namespace views |