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 |