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

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

Issue 8588064: views: Move bubble, events, focus and layout to ui/views/. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 1 month 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/events/event.h ('k') | views/events/event_aura.cc » ('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 "base/logging.h"
8 #include "ui/base/keycodes/keyboard_code_conversion.h"
9 #include "views/view.h"
10 #include "views/widget/root_view.h"
11
12 namespace views {
13
14 ////////////////////////////////////////////////////////////////////////////////
15 // Event, protected:
16
17 Event::Event(ui::EventType type, int flags)
18 : type_(type),
19 time_stamp_(base::Time::NowFromSystemTime()),
20 flags_(flags) {
21 // Safely initialize the pointer/struct to null/empty.
22 memset(&native_event_, 0, sizeof(native_event_));
23 #if defined(TOOLKIT_USES_GTK)
24 gdk_event_ = NULL;
25 #endif
26 }
27
28 Event::Event(const NativeEvent& native_event, ui::EventType type, int flags)
29 : native_event_(native_event),
30 type_(type),
31 time_stamp_(base::Time::NowFromSystemTime()),
32 flags_(flags) {
33 #if defined(TOOLKIT_USES_GTK)
34 gdk_event_ = NULL;
35 #endif
36 }
37
38 ////////////////////////////////////////////////////////////////////////////////
39 // LocatedEvent, protected:
40
41 #if !defined(USE_AURA)
42 LocatedEvent::LocatedEvent(const NativeEvent& native_event)
43 : Event(native_event,
44 ui::EventTypeFromNative(native_event),
45 ui::EventFlagsFromNative(native_event)),
46 location_(ui::EventLocationFromNative(native_event)) {
47 }
48 #endif
49
50 // TODO(msw): Kill this legacy constructor when we update uses.
51 LocatedEvent::LocatedEvent(ui::EventType type,
52 const gfx::Point& location,
53 int flags)
54 : Event(type, flags),
55 location_(location) {
56 }
57
58 LocatedEvent::LocatedEvent(const LocatedEvent& model,
59 View* source,
60 View* target)
61 : Event(model),
62 location_(model.location_) {
63 if (target && target != source)
64 View::ConvertPointToView(source, target, &location_);
65 }
66
67 LocatedEvent::LocatedEvent(const LocatedEvent& model, View* root)
68 : Event(model),
69 location_(model.location_) {
70 View::ConvertPointFromWidget(root, &location_);
71 }
72
73 ////////////////////////////////////////////////////////////////////////////////
74 // KeyEvent, public:
75
76 #if !defined(USE_AURA)
77 KeyEvent::KeyEvent(const NativeEvent& native_event)
78 : Event(native_event,
79 ui::EventTypeFromNative(native_event),
80 ui::EventFlagsFromNative(native_event)),
81 key_code_(ui::KeyboardCodeFromNative(native_event)),
82 character_(0),
83 unmodified_character_(0) {
84 }
85 #endif
86
87 KeyEvent::KeyEvent(ui::EventType type,
88 ui::KeyboardCode key_code,
89 int event_flags)
90 : Event(type, event_flags),
91 key_code_(key_code),
92 character_(ui::GetCharacterFromKeyCode(key_code, event_flags)),
93 unmodified_character_(0) {
94 }
95
96 ////////////////////////////////////////////////////////////////////////////////
97 // MouseEvent, public:
98
99 MouseEvent::MouseEvent(const NativeEvent& native_event)
100 : LocatedEvent(native_event) {
101 }
102
103 MouseEvent::MouseEvent(const MouseEvent& model, View* source, View* target)
104 : LocatedEvent(model, source, target) {
105 }
106
107 MouseEvent::MouseEvent(const TouchEvent& touch)
108 : LocatedEvent(touch.native_event()) {
109 // The location of the event is correctly extracted from the native event. But
110 // it is necessary to update the event type.
111 ui::EventType mtype = ui::ET_UNKNOWN;
112 switch (touch.type()) {
113 case ui::ET_TOUCH_RELEASED:
114 mtype = ui::ET_MOUSE_RELEASED;
115 break;
116 case ui::ET_TOUCH_PRESSED:
117 mtype = ui::ET_MOUSE_PRESSED;
118 break;
119 case ui::ET_TOUCH_MOVED:
120 mtype = ui::ET_MOUSE_MOVED;
121 break;
122 default:
123 NOTREACHED() << "Invalid mouse event.";
124 }
125 set_type(mtype);
126
127 // It may not be possible to extract the button-information necessary for a
128 // MouseEvent from the native event for a TouchEvent, so the flags are
129 // explicitly updated as well. The button is approximated from the touchpoint
130 // identity.
131 int new_flags = flags() & ~(ui::EF_LEFT_BUTTON_DOWN |
132 ui::EF_RIGHT_BUTTON_DOWN |
133 ui::EF_MIDDLE_BUTTON_DOWN);
134 int button = ui::EF_LEFT_BUTTON_DOWN;
135 if (touch.identity() == 1)
136 button = ui::EF_RIGHT_BUTTON_DOWN;
137 else if (touch.identity() == 2)
138 button = ui::EF_MIDDLE_BUTTON_DOWN;
139 set_flags(new_flags | button);
140 }
141
142 ////////////////////////////////////////////////////////////////////////////////
143 // MouseWheelEvent, public:
144
145 #if !defined(USE_AURA)
146 MouseWheelEvent::MouseWheelEvent(const NativeEvent& native_event)
147 : MouseEvent(native_event),
148 offset_(ui::GetMouseWheelOffset(native_event)) {
149 }
150 #endif
151
152 ////////////////////////////////////////////////////////////////////////////////
153 // TouchEvent, public:
154
155 TouchEvent::TouchEvent(ui::EventType type,
156 int x,
157 int y,
158 int flags,
159 int touch_id,
160 float radius_x,
161 float radius_y,
162 float angle,
163 float force)
164 : LocatedEvent(type, gfx::Point(x, y), flags),
165 touch_id_(touch_id),
166 radius_x_(radius_x),
167 radius_y_(radius_y),
168 rotation_angle_(angle),
169 force_(force) {
170 }
171
172 TouchEvent::TouchEvent(const TouchEvent& model, View* source, View* target)
173 : LocatedEvent(model, source, target),
174 touch_id_(model.touch_id_),
175 radius_x_(model.radius_x_),
176 radius_y_(model.radius_y_),
177 rotation_angle_(model.rotation_angle_),
178 force_(model.force_) {
179 }
180
181 ////////////////////////////////////////////////////////////////////////////////
182 // TouchEvent, private:
183
184 TouchEvent::TouchEvent(const TouchEvent& model, View* root)
185 : LocatedEvent(model, root),
186 touch_id_(model.touch_id_),
187 radius_x_(model.radius_x_),
188 radius_y_(model.radius_y_),
189 rotation_angle_(model.rotation_angle_),
190 force_(model.force_) {
191 }
192
193 ////////////////////////////////////////////////////////////////////////////////
194 // MouseWheelEvent, public:
195
196 // This value matches windows WHEEL_DELTA.
197 // static
198 const int MouseWheelEvent::kWheelDelta = 120;
199
200 } // namespace views
OLDNEW
« no previous file with comments | « views/events/event.h ('k') | views/events/event_aura.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698