OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "ui/events/event.h" | 5 #include "ui/events/event.h" |
6 | 6 |
7 #if defined(USE_X11) | 7 #if defined(USE_X11) |
8 #include <X11/extensions/XInput2.h> | 8 #include <X11/extensions/XInput2.h> |
9 #include <X11/Xlib.h> | 9 #include <X11/Xlib.h> |
10 #include <X11/keysym.h> | 10 #include <X11/keysym.h> |
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
101 const unsigned int kAllStateMask = | 101 const unsigned int kAllStateMask = |
102 Button1Mask | Button2Mask | Button3Mask | Button4Mask | Button5Mask | | 102 Button1Mask | Button2Mask | Button3Mask | Button4Mask | Button5Mask | |
103 Mod1Mask | Mod2Mask | Mod3Mask | Mod4Mask | Mod5Mask | ShiftMask | | 103 Mod1Mask | Mod2Mask | Mod3Mask | Mod4Mask | Mod5Mask | ShiftMask | |
104 LockMask | ControlMask | AnyModifier; | 104 LockMask | ControlMask | AnyModifier; |
105 return event && (event->xkey.state & ~kAllStateMask) != 0; | 105 return event && (event->xkey.state & ~kAllStateMask) != 0; |
106 #else | 106 #else |
107 return false; | 107 return false; |
108 #endif | 108 #endif |
109 } | 109 } |
110 | 110 |
| 111 unsigned long long get_next_touch_event_id() { |
| 112 static unsigned long long id = 0; |
| 113 return id++; |
| 114 } |
| 115 |
111 } // namespace | 116 } // namespace |
112 | 117 |
113 namespace ui { | 118 namespace ui { |
114 | 119 |
115 //////////////////////////////////////////////////////////////////////////////// | 120 //////////////////////////////////////////////////////////////////////////////// |
116 // Event | 121 // Event |
117 | 122 |
118 // static | 123 // static |
119 scoped_ptr<Event> Event::Clone(const Event& event) { | 124 scoped_ptr<Event> Event::Clone(const Event& event) { |
120 if (event.IsKeyEvent()) { | 125 if (event.IsKeyEvent()) { |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
163 CHECK(IsGestureEvent()); | 168 CHECK(IsGestureEvent()); |
164 return static_cast<const GestureEvent*>(this); | 169 return static_cast<const GestureEvent*>(this); |
165 } | 170 } |
166 | 171 |
167 bool Event::HasNativeEvent() const { | 172 bool Event::HasNativeEvent() const { |
168 base::NativeEvent null_event; | 173 base::NativeEvent null_event; |
169 std::memset(&null_event, 0, sizeof(null_event)); | 174 std::memset(&null_event, 0, sizeof(null_event)); |
170 return !!std::memcmp(&native_event_, &null_event, sizeof(null_event)); | 175 return !!std::memcmp(&native_event_, &null_event, sizeof(null_event)); |
171 } | 176 } |
172 | 177 |
| 178 void Event::DisableSynchronousHandling() { |
| 179 result_ = static_cast<EventResult>(result_ | ER_DISABLE_SYNC_HANDLING); |
| 180 } |
| 181 |
173 void Event::StopPropagation() { | 182 void Event::StopPropagation() { |
174 // TODO(sad): Re-enable these checks once View uses dispatcher to dispatch | 183 // TODO(sad): Re-enable these checks once View uses dispatcher to dispatch |
175 // events. | 184 // events. |
176 // CHECK(phase_ != EP_PREDISPATCH && phase_ != EP_POSTDISPATCH); | 185 // CHECK(phase_ != EP_PREDISPATCH && phase_ != EP_POSTDISPATCH); |
177 CHECK(cancelable_); | 186 CHECK(cancelable_); |
178 result_ = static_cast<EventResult>(result_ | ER_CONSUMED); | 187 result_ = static_cast<EventResult>(result_ | ER_CONSUMED); |
179 } | 188 } |
180 | 189 |
181 void Event::SetHandled() { | 190 void Event::SetHandled() { |
182 // TODO(sad): Re-enable these checks once View uses dispatcher to dispatch | 191 // TODO(sad): Re-enable these checks once View uses dispatcher to dispatch |
(...skipping 324 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
507 gfx::ToRoundedInt(SkMScalarToFloat(offset_.y() * decomp.scale[1]))); | 516 gfx::ToRoundedInt(SkMScalarToFloat(offset_.y() * decomp.scale[1]))); |
508 } | 517 } |
509 } | 518 } |
510 | 519 |
511 //////////////////////////////////////////////////////////////////////////////// | 520 //////////////////////////////////////////////////////////////////////////////// |
512 // TouchEvent | 521 // TouchEvent |
513 | 522 |
514 TouchEvent::TouchEvent(const base::NativeEvent& native_event) | 523 TouchEvent::TouchEvent(const base::NativeEvent& native_event) |
515 : LocatedEvent(native_event), | 524 : LocatedEvent(native_event), |
516 touch_id_(GetTouchId(native_event)), | 525 touch_id_(GetTouchId(native_event)), |
| 526 unique_event_id_(get_next_touch_event_id()), |
517 radius_x_(GetTouchRadiusX(native_event)), | 527 radius_x_(GetTouchRadiusX(native_event)), |
518 radius_y_(GetTouchRadiusY(native_event)), | 528 radius_y_(GetTouchRadiusY(native_event)), |
519 rotation_angle_(GetTouchAngle(native_event)), | 529 rotation_angle_(GetTouchAngle(native_event)), |
520 force_(GetTouchForce(native_event)) { | 530 force_(GetTouchForce(native_event)) { |
521 latency()->AddLatencyNumberWithTimestamp( | 531 latency()->AddLatencyNumberWithTimestamp( |
522 INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT, | 532 INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT, |
523 0, | 533 0, |
524 0, | 534 0, |
525 base::TimeTicks::FromInternalValue(time_stamp().ToInternalValue()), | 535 base::TimeTicks::FromInternalValue(time_stamp().ToInternalValue()), |
526 1); | 536 1); |
527 | 537 |
528 latency()->AddLatencyNumber(INPUT_EVENT_LATENCY_UI_COMPONENT, 0, 0); | 538 latency()->AddLatencyNumber(INPUT_EVENT_LATENCY_UI_COMPONENT, 0, 0); |
529 | 539 |
530 if (type() == ET_TOUCH_PRESSED) | 540 if (type() == ET_TOUCH_PRESSED) |
531 IncrementTouchIdRefCount(native_event); | 541 IncrementTouchIdRefCount(native_event); |
532 } | 542 } |
533 | 543 |
534 TouchEvent::TouchEvent(EventType type, | 544 TouchEvent::TouchEvent(EventType type, |
535 const gfx::PointF& location, | 545 const gfx::PointF& location, |
536 int touch_id, | 546 int touch_id, |
537 base::TimeDelta time_stamp) | 547 base::TimeDelta time_stamp) |
538 : LocatedEvent(type, location, location, time_stamp, 0), | 548 : LocatedEvent(type, location, location, time_stamp, 0), |
539 touch_id_(touch_id), | 549 touch_id_(touch_id), |
| 550 unique_event_id_(get_next_touch_event_id()), |
540 radius_x_(0.0f), | 551 radius_x_(0.0f), |
541 radius_y_(0.0f), | 552 radius_y_(0.0f), |
542 rotation_angle_(0.0f), | 553 rotation_angle_(0.0f), |
543 force_(0.0f) { | 554 force_(0.0f) { |
544 latency()->AddLatencyNumber(INPUT_EVENT_LATENCY_UI_COMPONENT, 0, 0); | 555 latency()->AddLatencyNumber(INPUT_EVENT_LATENCY_UI_COMPONENT, 0, 0); |
545 } | 556 } |
546 | 557 |
547 TouchEvent::TouchEvent(EventType type, | 558 TouchEvent::TouchEvent(EventType type, |
548 const gfx::PointF& location, | 559 const gfx::PointF& location, |
549 int flags, | 560 int flags, |
550 int touch_id, | 561 int touch_id, |
551 base::TimeDelta time_stamp, | 562 base::TimeDelta time_stamp, |
552 float radius_x, | 563 float radius_x, |
553 float radius_y, | 564 float radius_y, |
554 float angle, | 565 float angle, |
555 float force) | 566 float force) |
556 : LocatedEvent(type, location, location, time_stamp, flags), | 567 : LocatedEvent(type, location, location, time_stamp, flags), |
557 touch_id_(touch_id), | 568 touch_id_(touch_id), |
| 569 unique_event_id_(get_next_touch_event_id()), |
558 radius_x_(radius_x), | 570 radius_x_(radius_x), |
559 radius_y_(radius_y), | 571 radius_y_(radius_y), |
560 rotation_angle_(angle), | 572 rotation_angle_(angle), |
561 force_(force) { | 573 force_(force) { |
562 latency()->AddLatencyNumber(INPUT_EVENT_LATENCY_UI_COMPONENT, 0, 0); | 574 latency()->AddLatencyNumber(INPUT_EVENT_LATENCY_UI_COMPONENT, 0, 0); |
563 } | 575 } |
564 | 576 |
565 TouchEvent::~TouchEvent() { | 577 TouchEvent::~TouchEvent() { |
566 // In ctor TouchEvent(native_event) we call GetTouchId() which in X11 | 578 // In ctor TouchEvent(native_event) we call GetTouchId() which in X11 |
567 // platform setups the tracking_id to slot mapping. So in dtor here, | 579 // platform setups the tracking_id to slot mapping. So in dtor here, |
(...skipping 411 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
979 gfx::PointF(x, y), | 991 gfx::PointF(x, y), |
980 time_stamp, | 992 time_stamp, |
981 flags | EF_FROM_TOUCH), | 993 flags | EF_FROM_TOUCH), |
982 details_(details) { | 994 details_(details) { |
983 } | 995 } |
984 | 996 |
985 GestureEvent::~GestureEvent() { | 997 GestureEvent::~GestureEvent() { |
986 } | 998 } |
987 | 999 |
988 } // namespace ui | 1000 } // namespace ui |
OLD | NEW |