Index: views/events/event_gtk.cc |
diff --git a/views/events/event_gtk.cc b/views/events/event_gtk.cc |
index 8c62a7648a28e3c223e2c88e957ca5031ac2e341..7e2d1e0279b3dd4dcfe88bd6676892e176f8b27f 100644 |
--- a/views/events/event_gtk.cc |
+++ b/views/events/event_gtk.cc |
@@ -77,6 +77,18 @@ unsigned int GetGdkStateFromNative(NativeEvent native_event) { |
return 0; |
} |
+int GetFlagsFromGdkState(unsigned int state) { |
+ int flags = 0; |
+ flags |= (state & GDK_LOCK_MASK) ? ui::EF_CAPS_LOCK_DOWN : 0; |
+ flags |= (state & GDK_CONTROL_MASK) ? ui::EF_CONTROL_DOWN : 0; |
+ flags |= (state & GDK_SHIFT_MASK) ? ui::EF_SHIFT_DOWN : 0; |
+ flags |= (state & GDK_MOD1_MASK) ? ui::EF_ALT_DOWN : 0; |
+ flags |= (state & GDK_BUTTON1_MASK) ? ui::EF_LEFT_BUTTON_DOWN : 0; |
+ flags |= (state & GDK_BUTTON2_MASK) ? ui::EF_MIDDLE_BUTTON_DOWN : 0; |
+ flags |= (state & GDK_BUTTON3_MASK) ? ui::EF_RIGHT_BUTTON_DOWN : 0; |
+ return flags; |
+} |
+ |
#if !defined(TOUCH_UI) |
uint16 GetCharacterFromGdkKeyval(guint keyval) { |
guint32 ch = gdk_keyval_to_unicode(keyval); |
@@ -92,22 +104,23 @@ uint16 GetCharacterFromGdkKeyval(guint keyval) { |
// Event, public: |
// static |
-int Event::GetFlagsFromGdkState(unsigned int state) { |
- int flags = 0; |
- if (state & GDK_LOCK_MASK) |
- flags |= ui::EF_CAPS_LOCK_DOWN; |
- if (state & GDK_CONTROL_MASK) |
- flags |= ui::EF_CONTROL_DOWN; |
- if (state & GDK_SHIFT_MASK) |
- flags |= ui::EF_SHIFT_DOWN; |
- if (state & GDK_MOD1_MASK) |
- flags |= ui::EF_ALT_DOWN; |
- if (state & GDK_BUTTON1_MASK) |
- flags |= ui::EF_LEFT_BUTTON_DOWN; |
- if (state & GDK_BUTTON2_MASK) |
- flags |= ui::EF_MIDDLE_BUTTON_DOWN; |
- if (state & GDK_BUTTON3_MASK) |
- flags |= ui::EF_RIGHT_BUTTON_DOWN; |
+int Event::GetFlagsFromGdkEvent(NativeEvent native_event) { |
+ int flags = GetFlagsFromGdkState(GetGdkStateFromNative(native_event)); |
+ if (native_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) { |
+ case 1: |
+ return flags | ui::EF_LEFT_BUTTON_DOWN; |
+ case 2: |
+ return flags | ui::EF_MIDDLE_BUTTON_DOWN; |
+ case 3: |
+ return flags | ui::EF_RIGHT_BUTTON_DOWN; |
+ } |
+ } |
return flags; |
} |
@@ -140,7 +153,7 @@ void Event::InitWithNativeEvent2(NativeEvent2 native_event_2, |
LocatedEvent::LocatedEvent(NativeEvent native_event) |
: Event(native_event, EventTypeFromNative(native_event), |
- GetFlagsFromGdkState(GetGdkStateFromNative(native_event))), |
+ GetFlagsFromGdkEvent(native_event)), |
location_(GetMouseEventLocation(native_event)) { |
} |
@@ -176,7 +189,7 @@ MouseEvent::MouseEvent(NativeEvent2 native_event_2, |
KeyEvent::KeyEvent(NativeEvent native_event) |
: Event(native_event, EventTypeFromNative(native_event), |
- GetFlagsFromGdkState(GetGdkStateFromNative(native_event))), |
+ GetFlagsFromGdkEvent(native_event)), |
key_code_(ui::KeyboardCodeFromGdkEventKey( |
GetGdkEventKeyFromNative(native_event))) { |
} |