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

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) 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 "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 // Event, private:
62
63 void Event::Init() {
sadrul 2011/02/11 16:12:47 Event::Init and Event::InitWithNativeEvent are als
64 native_event_ = NULL;
65 native_event_2_ = NULL;
66 }
67
68 void Event::InitWithNativeEvent(NativeEvent native_event) {
69 native_event_ = native_event;
70 // TODO(beng): remove once we rid views of Gtk/Gdk.
71 native_event_2_ = NULL;
72 }
73
74 #if !defined(TOUCH_UI)
75 void Event::InitWithNativeEvent2(NativeEvent2 native_event_2,
76 FromNativeEvent2) {
77 // No one should ever call this on non-Touch Linux.
78 // TODO(beng): remove once we rid views of Gtk/Gdk.
79 NOTREACHED();
80 native_event_2_ = NULL;
81 }
82 #endif
83
84 ////////////////////////////////////////////////////////////////////////////////
85 // KeyEvent, public:
86
87 KeyEvent::KeyEvent(NativeEvent native_event)
88 : Event(native_event, EventTypeFromNative(native_event),
89 GetFlagsFromGdkState(
90 GetGdkEventKeyFromNative(native_event)->state)),
91 key_code_(ui::WindowsKeyCodeForGdkKeyCode(
92 GetGdkEventKeyFromNative(native_event)->keyval)) {
93 }
94
95 #if !defined(TOUCH_UI)
96 KeyEvent::KeyEvent(NativeEvent2 native_event_2, FromNativeEvent2 from_native)
97 : Event(native_event_2, ui::ET_UNKNOWN, 0, from_native) {
98 // No one should ever call this on Gtk-views.
99 // TODO(beng): remove once we rid views of Gtk/Gdk.
100 NOTREACHED();
101 }
102 #endif
103
47 } // namespace views 104 } // namespace views
OLDNEW
« no previous file with comments | « views/events/event.cc ('k') | views/events/event_utils_win.h » ('j') | views/events/event_x.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698