| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "views/events/event.h" | 5 #include "views/events/event.h" |
| 6 | 6 |
| 7 #include <gdk/gdk.h> | 7 #include <gdk/gdk.h> |
| 8 | 8 |
| 9 #include "base/logging.h" | 9 #include "base/logging.h" |
| 10 #include "ui/base/keycodes/keyboard_code_conversion_gtk.h" | 10 #include "ui/base/keycodes/keyboard_code_conversion_gtk.h" |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 70 case GDK_ENTER_NOTIFY: | 70 case GDK_ENTER_NOTIFY: |
| 71 case GDK_LEAVE_NOTIFY: | 71 case GDK_LEAVE_NOTIFY: |
| 72 return native_event->crossing.state; | 72 return native_event->crossing.state; |
| 73 default: | 73 default: |
| 74 NOTREACHED(); | 74 NOTREACHED(); |
| 75 break; | 75 break; |
| 76 } | 76 } |
| 77 return 0; | 77 return 0; |
| 78 } | 78 } |
| 79 | 79 |
| 80 int GetFlagsFromGdkState(unsigned int state) { |
| 81 int flags = 0; |
| 82 flags |= (state & GDK_LOCK_MASK) ? ui::EF_CAPS_LOCK_DOWN : 0; |
| 83 flags |= (state & GDK_CONTROL_MASK) ? ui::EF_CONTROL_DOWN : 0; |
| 84 flags |= (state & GDK_SHIFT_MASK) ? ui::EF_SHIFT_DOWN : 0; |
| 85 flags |= (state & GDK_MOD1_MASK) ? ui::EF_ALT_DOWN : 0; |
| 86 flags |= (state & GDK_BUTTON1_MASK) ? ui::EF_LEFT_BUTTON_DOWN : 0; |
| 87 flags |= (state & GDK_BUTTON2_MASK) ? ui::EF_MIDDLE_BUTTON_DOWN : 0; |
| 88 flags |= (state & GDK_BUTTON3_MASK) ? ui::EF_RIGHT_BUTTON_DOWN : 0; |
| 89 return flags; |
| 90 } |
| 91 |
| 80 #if !defined(TOUCH_UI) | 92 #if !defined(TOUCH_UI) |
| 81 uint16 GetCharacterFromGdkKeyval(guint keyval) { | 93 uint16 GetCharacterFromGdkKeyval(guint keyval) { |
| 82 guint32 ch = gdk_keyval_to_unicode(keyval); | 94 guint32 ch = gdk_keyval_to_unicode(keyval); |
| 83 | 95 |
| 84 // We only support BMP characters. | 96 // We only support BMP characters. |
| 85 return ch < 0xFFFE ? static_cast<uint16>(ch) : 0; | 97 return ch < 0xFFFE ? static_cast<uint16>(ch) : 0; |
| 86 } | 98 } |
| 87 #endif | 99 #endif |
| 88 | 100 |
| 89 } // namespace | 101 } // namespace |
| 90 | 102 |
| 91 //////////////////////////////////////////////////////////////////////////////// | 103 //////////////////////////////////////////////////////////////////////////////// |
| 92 // Event, public: | 104 // Event, public: |
| 93 | 105 |
| 94 // static | 106 // static |
| 95 int Event::GetFlagsFromGdkState(unsigned int state) { | 107 int Event::GetFlagsFromGdkEvent(NativeEvent native_event) { |
| 96 int flags = 0; | 108 int flags = GetFlagsFromGdkState(GetGdkStateFromNative(native_event)); |
| 97 if (state & GDK_LOCK_MASK) | 109 if (native_event->type == GDK_2BUTTON_PRESS) |
| 98 flags |= ui::EF_CAPS_LOCK_DOWN; | 110 flags |= ui::EF_IS_DOUBLE_CLICK; |
| 99 if (state & GDK_CONTROL_MASK) | 111 if (native_event->type == GDK_BUTTON_PRESS || |
| 100 flags |= ui::EF_CONTROL_DOWN; | 112 native_event->type == GDK_2BUTTON_PRESS || |
| 101 if (state & GDK_SHIFT_MASK) | 113 native_event->type == GDK_3BUTTON_PRESS || |
| 102 flags |= ui::EF_SHIFT_DOWN; | 114 native_event->type == GDK_BUTTON_RELEASE) { |
| 103 if (state & GDK_MOD1_MASK) | 115 switch (native_event->button.button) { |
| 104 flags |= ui::EF_ALT_DOWN; | 116 case 1: |
| 105 if (state & GDK_BUTTON1_MASK) | 117 return flags | ui::EF_LEFT_BUTTON_DOWN; |
| 106 flags |= ui::EF_LEFT_BUTTON_DOWN; | 118 case 2: |
| 107 if (state & GDK_BUTTON2_MASK) | 119 return flags | ui::EF_MIDDLE_BUTTON_DOWN; |
| 108 flags |= ui::EF_MIDDLE_BUTTON_DOWN; | 120 case 3: |
| 109 if (state & GDK_BUTTON3_MASK) | 121 return flags | ui::EF_RIGHT_BUTTON_DOWN; |
| 110 flags |= ui::EF_RIGHT_BUTTON_DOWN; | 122 } |
| 123 } |
| 111 return flags; | 124 return flags; |
| 112 } | 125 } |
| 113 | 126 |
| 114 //////////////////////////////////////////////////////////////////////////////// | 127 //////////////////////////////////////////////////////////////////////////////// |
| 115 // Event, private: | 128 // Event, private: |
| 116 | 129 |
| 117 void Event::Init() { | 130 void Event::Init() { |
| 118 native_event_ = NULL; | 131 native_event_ = NULL; |
| 119 native_event_2_ = NULL; | 132 native_event_2_ = NULL; |
| 120 } | 133 } |
| (...skipping 12 matching lines...) Expand all Loading... |
| 133 NOTREACHED(); | 146 NOTREACHED(); |
| 134 native_event_2_ = NULL; | 147 native_event_2_ = NULL; |
| 135 } | 148 } |
| 136 #endif | 149 #endif |
| 137 | 150 |
| 138 //////////////////////////////////////////////////////////////////////////////// | 151 //////////////////////////////////////////////////////////////////////////////// |
| 139 // LocatedEvent, protected: | 152 // LocatedEvent, protected: |
| 140 | 153 |
| 141 LocatedEvent::LocatedEvent(NativeEvent native_event) | 154 LocatedEvent::LocatedEvent(NativeEvent native_event) |
| 142 : Event(native_event, EventTypeFromNative(native_event), | 155 : Event(native_event, EventTypeFromNative(native_event), |
| 143 GetFlagsFromGdkState(GetGdkStateFromNative(native_event))), | 156 GetFlagsFromGdkEvent(native_event)), |
| 144 location_(GetMouseEventLocation(native_event)) { | 157 location_(GetMouseEventLocation(native_event)) { |
| 145 } | 158 } |
| 146 | 159 |
| 147 #if !defined(TOUCH_UI) | 160 #if !defined(TOUCH_UI) |
| 148 LocatedEvent::LocatedEvent(NativeEvent2 native_event_2, | 161 LocatedEvent::LocatedEvent(NativeEvent2 native_event_2, |
| 149 FromNativeEvent2 from_native) | 162 FromNativeEvent2 from_native) |
| 150 : Event(native_event_2, ui::ET_UNKNOWN, 0, from_native) { | 163 : Event(native_event_2, ui::ET_UNKNOWN, 0, from_native) { |
| 151 // No one should ever call this on Gtk-views. | 164 // No one should ever call this on Gtk-views. |
| 152 // TODO(msw): remove once we rid views of Gtk/Gdk. | 165 // TODO(msw): remove once we rid views of Gtk/Gdk. |
| 153 NOTREACHED(); | 166 NOTREACHED(); |
| (...skipping 15 matching lines...) Expand all Loading... |
| 169 // TODO(msw): remove once we rid views of Gtk/Gdk. | 182 // TODO(msw): remove once we rid views of Gtk/Gdk. |
| 170 NOTREACHED(); | 183 NOTREACHED(); |
| 171 } | 184 } |
| 172 #endif | 185 #endif |
| 173 | 186 |
| 174 //////////////////////////////////////////////////////////////////////////////// | 187 //////////////////////////////////////////////////////////////////////////////// |
| 175 // KeyEvent, public: | 188 // KeyEvent, public: |
| 176 | 189 |
| 177 KeyEvent::KeyEvent(NativeEvent native_event) | 190 KeyEvent::KeyEvent(NativeEvent native_event) |
| 178 : Event(native_event, EventTypeFromNative(native_event), | 191 : Event(native_event, EventTypeFromNative(native_event), |
| 179 GetFlagsFromGdkState(GetGdkStateFromNative(native_event))), | 192 GetFlagsFromGdkEvent(native_event)), |
| 180 key_code_(ui::KeyboardCodeFromGdkEventKey( | 193 key_code_(ui::KeyboardCodeFromGdkEventKey( |
| 181 GetGdkEventKeyFromNative(native_event))) { | 194 GetGdkEventKeyFromNative(native_event))) { |
| 182 } | 195 } |
| 183 | 196 |
| 184 #if !defined(TOUCH_UI) | 197 #if !defined(TOUCH_UI) |
| 185 KeyEvent::KeyEvent(NativeEvent2 native_event_2, FromNativeEvent2 from_native) | 198 KeyEvent::KeyEvent(NativeEvent2 native_event_2, FromNativeEvent2 from_native) |
| 186 : Event(native_event_2, ui::ET_UNKNOWN, 0, from_native) { | 199 : Event(native_event_2, ui::ET_UNKNOWN, 0, from_native) { |
| 187 // No one should ever call this on Gtk-views. | 200 // No one should ever call this on Gtk-views. |
| 188 // TODO(beng): remove once we rid views of Gtk/Gdk. | 201 // TODO(beng): remove once we rid views of Gtk/Gdk. |
| 189 NOTREACHED(); | 202 NOTREACHED(); |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 239 MouseWheelEvent::MouseWheelEvent(NativeEvent2 native_event_2, | 252 MouseWheelEvent::MouseWheelEvent(NativeEvent2 native_event_2, |
| 240 FromNativeEvent2 from_native) | 253 FromNativeEvent2 from_native) |
| 241 : MouseEvent(native_event_2, from_native) { | 254 : MouseEvent(native_event_2, from_native) { |
| 242 // No one should ever call this on Gtk-views. | 255 // No one should ever call this on Gtk-views. |
| 243 // TODO(msw): remove once we rid views of Gtk/Gdk. | 256 // TODO(msw): remove once we rid views of Gtk/Gdk. |
| 244 NOTREACHED(); | 257 NOTREACHED(); |
| 245 } | 258 } |
| 246 #endif | 259 #endif |
| 247 | 260 |
| 248 } // namespace views | 261 } // namespace views |
| OLD | NEW |