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

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

Issue 9728002: Removing deprecated GTK-Views code. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 9 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
(Empty)
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
3 // found in the LICENSE file.
4
5 #include "ui/views/events/event.h"
6
7 #include <gdk/gdk.h>
8
9 #include "base/logging.h"
10 #include "ui/base/keycodes/keyboard_code_conversion_gtk.h"
11 #include "ui/gfx/point.h"
12
13 namespace {
14
15 unsigned int GetGdkStateFromNative(GdkEvent* gdk_event) {
16 switch (gdk_event->type) {
17 case GDK_KEY_PRESS:
18 case GDK_KEY_RELEASE:
19 return gdk_event->key.state;
20 case GDK_BUTTON_PRESS:
21 case GDK_2BUTTON_PRESS:
22 case GDK_3BUTTON_PRESS:
23 case GDK_BUTTON_RELEASE:
24 return gdk_event->button.state;
25 case GDK_SCROLL:
26 return gdk_event->scroll.state;
27 case GDK_MOTION_NOTIFY:
28 return gdk_event->motion.state;
29 case GDK_ENTER_NOTIFY:
30 case GDK_LEAVE_NOTIFY:
31 return gdk_event->crossing.state;
32 default:
33 NOTREACHED();
34 break;
35 }
36 return 0;
37 }
38
39 int GetFlagsFromGdkState(unsigned int state) {
40 int flags = 0;
41 flags |= (state & GDK_LOCK_MASK) ? ui::EF_CAPS_LOCK_DOWN : 0;
42 flags |= (state & GDK_CONTROL_MASK) ? ui::EF_CONTROL_DOWN : 0;
43 flags |= (state & GDK_SHIFT_MASK) ? ui::EF_SHIFT_DOWN : 0;
44 flags |= (state & GDK_MOD1_MASK) ? ui::EF_ALT_DOWN : 0;
45 flags |= (state & GDK_BUTTON1_MASK) ? ui::EF_LEFT_MOUSE_BUTTON : 0;
46 flags |= (state & GDK_BUTTON2_MASK) ? ui::EF_MIDDLE_MOUSE_BUTTON : 0;
47 flags |= (state & GDK_BUTTON3_MASK) ? ui::EF_RIGHT_MOUSE_BUTTON : 0;
48 return flags;
49 }
50
51 ////////////////////////////////////////////////////////////////////////////////
52 // These functions mirror ui/base/events.h, but GTK is in the midst of removal.
53
54 ui::EventType EventTypeFromNative(GdkEvent* gdk_event) {
55 // Add new event types as necessary.
56 switch (gdk_event->type) {
57 case GDK_2BUTTON_PRESS:
58 case GDK_3BUTTON_PRESS:
59 case GDK_BUTTON_PRESS:
60 return ui::ET_MOUSE_PRESSED;
61 case GDK_BUTTON_RELEASE:
62 return ui::ET_MOUSE_RELEASED;
63 case GDK_DRAG_MOTION:
64 return ui::ET_MOUSE_DRAGGED;
65 case GDK_ENTER_NOTIFY:
66 return ui::ET_MOUSE_ENTERED;
67 case GDK_KEY_PRESS:
68 return ui::ET_KEY_PRESSED;
69 case GDK_KEY_RELEASE:
70 return ui::ET_KEY_RELEASED;
71 case GDK_LEAVE_NOTIFY:
72 return ui::ET_MOUSE_EXITED;
73 case GDK_MOTION_NOTIFY:
74 if (gdk_event->motion.state & GDK_BUTTON1_MASK ||
75 gdk_event->motion.state & GDK_BUTTON2_MASK ||
76 gdk_event->motion.state & GDK_BUTTON3_MASK ||
77 gdk_event->motion.state & GDK_BUTTON4_MASK ||
78 gdk_event->motion.state & GDK_BUTTON5_MASK) {
79 return ui::ET_MOUSE_DRAGGED;
80 }
81 return ui::ET_MOUSE_MOVED;
82 case GDK_SCROLL:
83 return ui::ET_MOUSEWHEEL;
84 default:
85 NOTREACHED();
86 break;
87 }
88 return ui::ET_UNKNOWN;
89 }
90
91 int EventFlagsFromNative(GdkEvent* gdk_event) {
92 int flags = GetFlagsFromGdkState(GetGdkStateFromNative(gdk_event));
93 if (gdk_event->type == GDK_2BUTTON_PRESS)
94 flags |= ui::EF_IS_DOUBLE_CLICK;
95 if (gdk_event->type == GDK_BUTTON_PRESS ||
96 gdk_event->type == GDK_2BUTTON_PRESS ||
97 gdk_event->type == GDK_3BUTTON_PRESS ||
98 gdk_event->type == GDK_BUTTON_RELEASE) {
99 switch (gdk_event->button.button) {
100 case 1:
101 return flags | ui::EF_LEFT_MOUSE_BUTTON;
102 case 2:
103 return flags | ui::EF_MIDDLE_MOUSE_BUTTON;
104 case 3:
105 return flags | ui::EF_RIGHT_MOUSE_BUTTON;
106 }
107 }
108 return flags;
109 }
110
111 gfx::Point EventLocationFromNative(GdkEvent* gdk_event) {
112 double x = 0, y = 0;
113 if (gdk_event_get_coords(gdk_event, &x, &y))
114 return gfx::Point(static_cast<int>(x), static_cast<int>(y));
115 return gfx::Point();
116 }
117
118 ui::KeyboardCode KeyboardCodeFromNative(GdkEvent* gdk_event) {
119 DCHECK(gdk_event->type == GDK_KEY_PRESS ||
120 gdk_event->type == GDK_KEY_RELEASE);
121 return ui::KeyboardCodeFromGdkEventKey(&gdk_event->key);
122 }
123
124 int GetMouseWheelOffset(GdkEvent* gdk_event) {
125 DCHECK(gdk_event->type == GDK_SCROLL);
126 int offset = (gdk_event->scroll.direction == GDK_SCROLL_UP ||
127 gdk_event->scroll.direction == GDK_SCROLL_LEFT) ? 1 : -1;
128 return offset;
129 }
130
131 } // namespace
132
133 namespace views {
134
135 ////////////////////////////////////////////////////////////////////////////////
136 // Event, protected:
137
138 Event::Event(GdkEvent* gdk_event, ui::EventType type, int flags)
139 : native_event_(NULL),
140 gdk_event_(gdk_event),
141 type_(type),
142 time_stamp_(base::Time::NowFromSystemTime()),
143 flags_(flags) {
144 }
145
146 ////////////////////////////////////////////////////////////////////////////////
147 // LocatedEvent, protected:
148
149 LocatedEvent::LocatedEvent(GdkEvent* gdk_event)
150 : Event(gdk_event,
151 EventTypeFromNative(gdk_event),
152 EventFlagsFromNative(gdk_event)),
153 location_(EventLocationFromNative(gdk_event)) {
154 }
155
156 ////////////////////////////////////////////////////////////////////////////////
157 // KeyEvent, public:
158
159 KeyEvent::KeyEvent(GdkEvent* gdk_event)
160 : Event(gdk_event,
161 EventTypeFromNative(gdk_event),
162 EventFlagsFromNative(gdk_event)),
163 key_code_(KeyboardCodeFromNative(gdk_event)),
164 character_(0),
165 unmodified_character_(0) {
166 }
167
168 ////////////////////////////////////////////////////////////////////////////////
169 // MouseEvent, public:
170
171 MouseEvent::MouseEvent(GdkEvent* gdk_event)
172 : LocatedEvent(gdk_event) {
173 }
174
175 ////////////////////////////////////////////////////////////////////////////////
176 // MouseWheelEvent, public:
177
178 MouseWheelEvent::MouseWheelEvent(GdkEvent* gdk_event)
179 : MouseEvent(gdk_event),
180 offset_(kWheelDelta * GetMouseWheelOffset(gdk_event)) {
181 }
182
183 } // namespace views
OLDNEW
« no previous file with comments | « ui/views/controls/textfield/native_textfield_gtk.cc ('k') | ui/views/focus/accelerator_handler_gtk.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698