Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(547)

Side by Side Diff: views/events/event_gtk.cc

Issue 6487002: Add a new constructor to KeyEvent. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 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 "ui/base/keycodes/keyboard_code_conversion_gtk.h" 10 #include "ui/base/keycodes/keyboard_code_conversion_gtk.h"
10 11
11 namespace views { 12 namespace views {
12 13
13 KeyEvent::KeyEvent(const GdkEventKey* event) 14 namespace {
14 : Event(event->type == GDK_KEY_PRESS ? 15
15 ui::ET_KEY_PRESSED : ui::ET_KEY_RELEASED, 16 ui::EventType EventTypeFromNative(NativeEvent native_event) {
16 GetFlagsFromGdkState(event->state)), 17 switch (native_event->type) {
17 // TODO(erg): All these values are iffy. 18 case GDK_KEY_PRESS:
18 key_code_(ui::WindowsKeyCodeForGdkKeyCode(event->keyval)), 19 return ui::ET_KEY_PRESSED;
19 repeat_count_(0), 20 case GDK_KEY_RELEASE:
20 message_flags_(0) 21 return ui::ET_KEY_RELEASED;
21 #if !defined(TOUCH_UI) 22 default:
22 , native_event_(event) 23 NOTREACHED();
23 #endif 24 break;
24 { 25 }
26 return ui::ET_UNKNOWN;
25 } 27 }
26 28
29 GdkEventKey* GetGdkEventKeyFromNative(NativeEvent native_event) {
30 DCHECK(native_event->type == GDK_KEY_PRESS ||
31 native_event->type == GDK_KEY_RELEASE);
32 return native_event->key;
33 }
34
35 } // namespace
36
37 ////////////////////////////////////////////////////////////////////////////////
38 // Event, public:
39
27 // static 40 // static
28 int Event::GetFlagsFromGdkState(int state) { 41 int Event::GetFlagsFromGdkState(int state) {
29 int flags = 0; 42 int flags = 0;
30 if (state & GDK_LOCK_MASK) 43 if (state & GDK_LOCK_MASK)
31 flags |= ui::EF_CAPS_LOCK_DOWN; 44 flags |= ui::EF_CAPS_LOCK_DOWN;
32 if (state & GDK_CONTROL_MASK) 45 if (state & GDK_CONTROL_MASK)
33 flags |= ui::EF_CONTROL_DOWN; 46 flags |= ui::EF_CONTROL_DOWN;
34 if (state & GDK_SHIFT_MASK) 47 if (state & GDK_SHIFT_MASK)
35 flags |= ui::EF_SHIFT_DOWN; 48 flags |= ui::EF_SHIFT_DOWN;
36 if (state & GDK_MOD1_MASK) 49 if (state & GDK_MOD1_MASK)
37 flags |= ui::EF_ALT_DOWN; 50 flags |= ui::EF_ALT_DOWN;
38 if (state & GDK_BUTTON1_MASK) 51 if (state & GDK_BUTTON1_MASK)
39 flags |= ui::EF_LEFT_BUTTON_DOWN; 52 flags |= ui::EF_LEFT_BUTTON_DOWN;
40 if (state & GDK_BUTTON2_MASK) 53 if (state & GDK_BUTTON2_MASK)
41 flags |= ui::EF_MIDDLE_BUTTON_DOWN; 54 flags |= ui::EF_MIDDLE_BUTTON_DOWN;
42 if (state & GDK_BUTTON3_MASK) 55 if (state & GDK_BUTTON3_MASK)
43 flags |= ui::EF_RIGHT_BUTTON_DOWN; 56 flags |= ui::EF_RIGHT_BUTTON_DOWN;
44 return flags; 57 return flags;
45 } 58 }
46 59
60 ////////////////////////////////////////////////////////////////////////////////
61 // KeyEvent, public:
62
63 KeyEvent::KeyEvent(NativeEvent native_event)
64 : Event(native_event, EventTypeFromNative(native_event),
65 GetFlagsFromGdkState(
66 GetGdkEventKeyFromNative(native_event)->state)),
67 key_code_(ui::WindowsKeyCodeForGdkKeyCode(
68 GetGdkEventKeyFromNative(native_event)->keyval)) {
69 }
70
71 #if !defined(TOUCH_UI)
72 KeyEvent::KeyEvent(NativeEvent2 native_event_2)
73 : Event(native_event_2, ui::ET_UNKNOWN, 0) {
74 // No one should ever call this on Gtk-views.
75 // TODO(beng): remove once we rid views of Gtk/Gdk.
76 NOTREACHED();
77 }
78 #endif
79
47 } // namespace views 80 } // namespace views
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698