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

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

Issue 7464027: Wayland support for views. views_desktop on Wayland. (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: Updated native_widget_wayland.cc to match compositor changes Created 9 years, 3 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
« no previous file with comments | « views/desktop/desktop_window_view.cc ('k') | views/focus/accelerator_handler.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 "views/events/event.h"
6
7 #include <X11/Xlib.h>
8
9 #include "base/logging.h"
10 #include "ui/base/keycodes/keyboard_code_conversion_x.h"
11 #include "ui/wayland/events/wayland_event.h"
12
13 namespace views {
14
15 namespace {
16
17 static int kWheelScrollAmount = 53;
18
19 ui::EventType EventTypeFromNative(NativeEvent native_event) {
20 switch (native_event->type) {
21 case ui::WAYLAND_BUTTON:
22 switch (native_event->button.button) {
23 case ui::LEFT_BUTTON:
24 case ui::RIGHT_BUTTON:
25 case ui::MIDDLE_BUTTON:
26 return native_event->button.state ? ui::ET_MOUSE_PRESSED
27 : ui::ET_MOUSE_RELEASED;
28 case ui::SCROLL_UP:
29 case ui::SCROLL_DOWN:
30 return ui::ET_MOUSEWHEEL;
31 default:
32 break;
33 }
34 break;
35 case ui::WAYLAND_KEY:
36 return native_event->key.state ? ui::ET_KEY_PRESSED
37 : ui::ET_KEY_RELEASED;
38 case ui::WAYLAND_MOTION:
39 return ui::ET_MOUSE_MOVED;
40 case ui::WAYLAND_POINTER_FOCUS:
41 return native_event->pointer_focus.state ? ui::ET_MOUSE_ENTERED
42 : ui::ET_MOUSE_EXITED;
43 case ui::WAYLAND_KEYBOARD_FOCUS:
44 return ui::ET_UNKNOWN;
45 default:
46 break;
47 }
48 return ui::ET_UNKNOWN;
49 }
50
51 gfx::Point GetMouseEventLocation(NativeEvent native_event) {
52 switch (native_event->type) {
53 case ui::WAYLAND_BUTTON:
54 return gfx::Point(native_event->button.x, native_event->button.y);
55 case ui::WAYLAND_MOTION:
56 return gfx::Point(native_event->motion.x, native_event->motion.y);
57 case ui::WAYLAND_POINTER_FOCUS:
58 return gfx::Point(native_event->pointer_focus.x,
59 native_event->pointer_focus.y);
60 default:
61 return gfx::Point(0, 0);
62 }
63 }
64
65 int GetEventFlagsFromState(unsigned int state) {
66 int flags = 0;
67 if (state & ControlMask)
68 flags |= ui::EF_CONTROL_DOWN;
69 if (state & ShiftMask)
70 flags |= ui::EF_SHIFT_DOWN;
71 if (state & Mod1Mask)
72 flags |= ui::EF_ALT_DOWN;
73 if (state & LockMask)
74 flags |= ui::EF_CAPS_LOCK_DOWN;
75 if (state & Button1Mask)
76 flags |= ui::EF_LEFT_BUTTON_DOWN;
77 if (state & Button2Mask)
78 flags |= ui::EF_MIDDLE_BUTTON_DOWN;
79 if (state & Button3Mask)
80 flags |= ui::EF_RIGHT_BUTTON_DOWN;
81
82 return flags;
83 }
84
85 int GetButtonEventFlagsFromNativeEvent(NativeEvent native_event) {
86 // TODO(dnicoara): Need to add double click.
87 int flags = 0;
88 switch (native_event->button.button) {
89 case ui::LEFT_BUTTON:
90 return flags | ui::EF_LEFT_BUTTON_DOWN;
91 case ui::MIDDLE_BUTTON:
92 return flags | ui::EF_MIDDLE_BUTTON_DOWN;
93 case ui::RIGHT_BUTTON:
94 return flags | ui::EF_RIGHT_BUTTON_DOWN;
95 }
96 return flags;
97 }
98
99 int GetEventFlagsFromNativeEvent(NativeEvent native_event) {
100 switch (native_event->type) {
101 case ui::WAYLAND_BUTTON:
102 return GetButtonEventFlagsFromNativeEvent(native_event) |
103 GetEventFlagsFromState(native_event->button.modifiers);
104 case ui::WAYLAND_KEY:
105 return GetEventFlagsFromState(native_event->key.modifiers);
106 case ui::WAYLAND_MOTION:
107 return GetEventFlagsFromState(native_event->motion.modifiers);
108 case ui::WAYLAND_KEYBOARD_FOCUS:
109 return GetEventFlagsFromState(native_event->keyboard_focus.modifiers);
110 default:
111 return 0;
112 }
113 }
114
115 int GetMouseWheelOffset(NativeEvent native_event) {
116 if (native_event->button.button == ui::SCROLL_UP) {
117 return kWheelScrollAmount;
118 } else {
119 return -kWheelScrollAmount;
120 }
121 }
122
123 } // namespace
124
125 ////////////////////////////////////////////////////////////////////////////////
126 // Event, private:
127
128 void Event::Init() {
129 native_event_ = NULL;
130 native_event_2_ = NULL;
131 }
132
133 void Event::InitWithNativeEvent(NativeEvent native_event) {
134 native_event_ = native_event;
135 // TODO(dnicoara): Remove once we rid views of Gtk/Gdk.
136 native_event_2_ = NULL;
137 }
138
139 void Event::InitWithNativeEvent2(NativeEvent2 native_event_2,
140 FromNativeEvent2) {
141 native_event_2_ = NULL;
142 // TODO(dnicoara): Remove once we rid views of Gtk/Gdk.
143 native_event_2_ = native_event_2;
144 }
145
146 ////////////////////////////////////////////////////////////////////////////////
147 // MouseEvent, public:
148
149 MouseEvent::MouseEvent(NativeEvent native_event)
150 : LocatedEvent(native_event) {
151 }
152
153 MouseEvent::MouseEvent(NativeEvent2 native_event_2,
154 FromNativeEvent2 from_native)
155 : LocatedEvent(native_event_2, from_native) {
156 // TODO(dnicoara): Remove once we rid views of Gtk/Gdk.
157 NOTREACHED();
158 }
159
160 ////////////////////////////////////////////////////////////////////////////////
161 // LocatedEvent, protected:
162
163 LocatedEvent::LocatedEvent(NativeEvent native_event)
164 : Event(native_event, EventTypeFromNative(native_event),
165 GetEventFlagsFromNativeEvent(native_event)),
166 location_(GetMouseEventLocation(native_event)) {
167 }
168
169 LocatedEvent::LocatedEvent(NativeEvent2 native_event_2,
170 FromNativeEvent2 from_native)
171 : Event(native_event_2, ui::ET_UNKNOWN, 0, from_native) {
172 // TODO(dnicoara) Remove once we rid views of Gtk.
173 NOTREACHED();
174 }
175
176 //////////////////////////////////////////////////////////////////////////////
177 // KeyEvent, public:
178
179
180 KeyEvent::KeyEvent(NativeEvent native_event)
181 : Event(native_event, EventTypeFromNative(native_event),
182 GetEventFlagsFromNativeEvent(native_event)),
183 key_code_(ui::KeyboardCodeFromXKeysym(native_event->key.sym)) {
184 }
185
186 KeyEvent::KeyEvent(NativeEvent2 native_event_2, FromNativeEvent2 from_native)
187 : Event(native_event_2, ui::ET_UNKNOWN, 0, from_native) {
188 // TODO(dnicoara) Remove once we rid views of Gtk.
189 NOTREACHED();
190 }
191
192 uint16 KeyEvent::GetCharacter() const {
193 return GetCharacterFromKeyCode(key_code_, flags());
194 }
195
196 uint16 KeyEvent::GetUnmodifiedCharacter() const {
197 return GetCharacterFromKeyCode(key_code_, flags() & ui::EF_SHIFT_DOWN);
198 }
199
200 //////////////////////////////////////////////////////////////////////////////
201 // MouseWheelEvent, public:
202
203 MouseWheelEvent::MouseWheelEvent(NativeEvent native_event)
204 : MouseEvent(native_event),
205 offset_(GetMouseWheelOffset(native_event)) {
206 }
207
208 MouseWheelEvent::MouseWheelEvent(NativeEvent2 native_event_2,
209 FromNativeEvent2 from_native)
210 : MouseEvent(native_event_2, from_native) {
211 // TODO(dnicoara) Remove once we rid views of Gtk.
212 NOTREACHED();
213 }
214
215 } // namespace views
OLDNEW
« no previous file with comments | « views/desktop/desktop_window_view.cc ('k') | views/focus/accelerator_handler.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698