Chromium Code Reviews| 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 #ifndef UI_EVENTS_EVENT_H_ | 5 #ifndef UI_EVENTS_EVENT_H_ |
| 6 #define UI_EVENTS_EVENT_H_ | 6 #define UI_EVENTS_EVENT_H_ |
| 7 | 7 |
| 8 #include "base/basictypes.h" | 8 #include "base/basictypes.h" |
| 9 #include "base/compiler_specific.h" | 9 #include "base/compiler_specific.h" |
| 10 #include "base/event_types.h" | 10 #include "base/event_types.h" |
| (...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 208 bool stopped_propagation() const { return !!(result_ & ER_CONSUMED); } | 208 bool stopped_propagation() const { return !!(result_ & ER_CONSUMED); } |
| 209 | 209 |
| 210 // Marks the event as having been handled. A handled event does not reach the | 210 // Marks the event as having been handled. A handled event does not reach the |
| 211 // next event phase. For example, if an event is handled during the pre-target | 211 // next event phase. For example, if an event is handled during the pre-target |
| 212 // phase, then the event is dispatched to all pre-target handlers, but not to | 212 // phase, then the event is dispatched to all pre-target handlers, but not to |
| 213 // the target or post-target handlers. | 213 // the target or post-target handlers. |
| 214 // Note that SetHandled() can be called only for cancelable events. | 214 // Note that SetHandled() can be called only for cancelable events. |
| 215 void SetHandled(); | 215 void SetHandled(); |
| 216 bool handled() const { return result_ != ER_UNHANDLED; } | 216 bool handled() const { return result_ != ER_UNHANDLED; } |
| 217 | 217 |
| 218 // Used to create a copy of |this|. | |
| 219 virtual scoped_ptr<Event> Clone() const = 0; | |
|
sadrul
2014/08/29 21:12:17
Can we have a static Event::Clone(const Event& eve
tdanderson
2014/09/02 22:57:09
Done.
| |
| 220 | |
| 218 protected: | 221 protected: |
| 219 Event(EventType type, base::TimeDelta time_stamp, int flags); | 222 Event(EventType type, base::TimeDelta time_stamp, int flags); |
| 220 Event(const base::NativeEvent& native_event, EventType type, int flags); | 223 Event(const base::NativeEvent& native_event, EventType type, int flags); |
| 221 Event(const Event& copy); | 224 Event(const Event& copy); |
| 222 void SetType(EventType type); | 225 void SetType(EventType type); |
| 223 void set_delete_native_event(bool delete_native_event) { | 226 void set_delete_native_event(bool delete_native_event) { |
| 224 delete_native_event_ = delete_native_event; | 227 delete_native_event_ = delete_native_event; |
| 225 } | 228 } |
| 226 void set_cancelable(bool cancelable) { cancelable_ = cancelable; } | 229 void set_cancelable(bool cancelable) { cancelable_ = cancelable; } |
| 227 | 230 |
| (...skipping 20 matching lines...) Expand all Loading... | |
| 248 | 251 |
| 249 // The device id the event came from, or ED_UNKNOWN_DEVICE if the information | 252 // The device id the event came from, or ED_UNKNOWN_DEVICE if the information |
| 250 // is not available. | 253 // is not available. |
| 251 int source_device_id_; | 254 int source_device_id_; |
| 252 }; | 255 }; |
| 253 | 256 |
| 254 class EVENTS_EXPORT CancelModeEvent : public Event { | 257 class EVENTS_EXPORT CancelModeEvent : public Event { |
| 255 public: | 258 public: |
| 256 CancelModeEvent(); | 259 CancelModeEvent(); |
| 257 virtual ~CancelModeEvent(); | 260 virtual ~CancelModeEvent(); |
| 261 | |
| 262 // Event: | |
| 263 virtual scoped_ptr<Event> Clone() const OVERRIDE; | |
| 258 }; | 264 }; |
| 259 | 265 |
| 260 class EVENTS_EXPORT LocatedEvent : public Event { | 266 class EVENTS_EXPORT LocatedEvent : public Event { |
| 261 public: | 267 public: |
| 262 virtual ~LocatedEvent(); | 268 virtual ~LocatedEvent(); |
| 263 | 269 |
| 264 float x() const { return location_.x(); } | 270 float x() const { return location_.x(); } |
| 265 float y() const { return location_.y(); } | 271 float y() const { return location_.y(); } |
| 266 void set_location(const gfx::PointF& location) { location_ = location; } | 272 void set_location(const gfx::PointF& location) { location_ = location; } |
| 267 // TODO(tdresser): Always return floating point location. See | 273 // TODO(tdresser): Always return floating point location. See |
| (...skipping 19 matching lines...) Expand all Loading... | |
| 287 if (!target || target == source) | 293 if (!target || target == source) |
| 288 return; | 294 return; |
| 289 // TODO(tdresser): Rewrite ConvertPointToTarget to use PointF. See | 295 // TODO(tdresser): Rewrite ConvertPointToTarget to use PointF. See |
| 290 // crbug.com/337824. | 296 // crbug.com/337824. |
| 291 gfx::Point offset = gfx::ToFlooredPoint(location_); | 297 gfx::Point offset = gfx::ToFlooredPoint(location_); |
| 292 T::ConvertPointToTarget(source, target, &offset); | 298 T::ConvertPointToTarget(source, target, &offset); |
| 293 gfx::Vector2d diff = gfx::ToFlooredPoint(location_) - offset; | 299 gfx::Vector2d diff = gfx::ToFlooredPoint(location_) - offset; |
| 294 location_= location_ - diff; | 300 location_= location_ - diff; |
| 295 } | 301 } |
| 296 | 302 |
| 303 // Event: | |
| 304 virtual scoped_ptr<Event> Clone() const OVERRIDE; | |
| 305 | |
| 297 protected: | 306 protected: |
| 298 friend class LocatedEventTestApi; | 307 friend class LocatedEventTestApi; |
| 299 explicit LocatedEvent(const base::NativeEvent& native_event); | 308 explicit LocatedEvent(const base::NativeEvent& native_event); |
| 300 | 309 |
| 301 // Create a new LocatedEvent which is identical to the provided model. | 310 // Create a new LocatedEvent which is identical to the provided model. |
| 302 // If source / target windows are provided, the model location will be | 311 // If source / target windows are provided, the model location will be |
| 303 // converted from |source| coordinate system to |target| coordinate system. | 312 // converted from |source| coordinate system to |target| coordinate system. |
| 304 template <class T> | 313 template <class T> |
| 305 LocatedEvent(const LocatedEvent& model, T* source, T* target) | 314 LocatedEvent(const LocatedEvent& model, T* source, T* target) |
| 306 : Event(model), | 315 : Event(model), |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 394 static bool IsRepeatedClickEvent( | 403 static bool IsRepeatedClickEvent( |
| 395 const MouseEvent& event1, | 404 const MouseEvent& event1, |
| 396 const MouseEvent& event2); | 405 const MouseEvent& event2); |
| 397 | 406 |
| 398 // Get the click count. Can be 1, 2 or 3 for mousedown messages, 0 otherwise. | 407 // Get the click count. Can be 1, 2 or 3 for mousedown messages, 0 otherwise. |
| 399 int GetClickCount() const; | 408 int GetClickCount() const; |
| 400 | 409 |
| 401 // Set the click count for a mousedown message. Can be 1, 2 or 3. | 410 // Set the click count for a mousedown message. Can be 1, 2 or 3. |
| 402 void SetClickCount(int click_count); | 411 void SetClickCount(int click_count); |
| 403 | 412 |
| 413 // Event: | |
| 414 virtual scoped_ptr<Event> Clone() const OVERRIDE; | |
| 415 | |
| 404 // Identifies the button that changed. During a press this corresponds to the | 416 // Identifies the button that changed. During a press this corresponds to the |
| 405 // button that was pressed and during a release this corresponds to the button | 417 // button that was pressed and during a release this corresponds to the button |
| 406 // that was released. | 418 // that was released. |
| 407 // NOTE: during a press and release flags() contains the complete set of | 419 // NOTE: during a press and release flags() contains the complete set of |
| 408 // flags. Use this to determine the button that was pressed or released. | 420 // flags. Use this to determine the button that was pressed or released. |
| 409 int changed_button_flags() const { return changed_button_flags_; } | 421 int changed_button_flags() const { return changed_button_flags_; } |
| 410 | 422 |
| 411 // Updates the button that changed. | 423 // Updates the button that changed. |
| 412 void set_changed_button_flags(int flags) { changed_button_flags_ = flags; } | 424 void set_changed_button_flags(int flags) { changed_button_flags_ = flags; } |
| 413 | 425 |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 463 // The amount to scroll. This is in multiples of kWheelDelta. | 475 // The amount to scroll. This is in multiples of kWheelDelta. |
| 464 // Note: x_offset() > 0/y_offset() > 0 means scroll left/up. | 476 // Note: x_offset() > 0/y_offset() > 0 means scroll left/up. |
| 465 int x_offset() const { return offset_.x(); } | 477 int x_offset() const { return offset_.x(); } |
| 466 int y_offset() const { return offset_.y(); } | 478 int y_offset() const { return offset_.y(); } |
| 467 const gfx::Vector2d& offset() const { return offset_; } | 479 const gfx::Vector2d& offset() const { return offset_; } |
| 468 | 480 |
| 469 // Overridden from LocatedEvent. | 481 // Overridden from LocatedEvent. |
| 470 virtual void UpdateForRootTransform( | 482 virtual void UpdateForRootTransform( |
| 471 const gfx::Transform& inverted_root_transform) OVERRIDE; | 483 const gfx::Transform& inverted_root_transform) OVERRIDE; |
| 472 | 484 |
| 485 // Event: | |
| 486 virtual scoped_ptr<Event> Clone() const OVERRIDE; | |
| 487 | |
| 473 private: | 488 private: |
| 474 gfx::Vector2d offset_; | 489 gfx::Vector2d offset_; |
| 475 }; | 490 }; |
| 476 | 491 |
| 477 class EVENTS_EXPORT TouchEvent : public LocatedEvent { | 492 class EVENTS_EXPORT TouchEvent : public LocatedEvent { |
| 478 public: | 493 public: |
| 479 explicit TouchEvent(const base::NativeEvent& native_event); | 494 explicit TouchEvent(const base::NativeEvent& native_event); |
| 480 | 495 |
| 481 // Create a new TouchEvent which is identical to the provided model. | 496 // Create a new TouchEvent which is identical to the provided model. |
| 482 // If source / target windows are provided, the model location will be | 497 // If source / target windows are provided, the model location will be |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 515 float force() const { return force_; } | 530 float force() const { return force_; } |
| 516 | 531 |
| 517 // Used for unit tests. | 532 // Used for unit tests. |
| 518 void set_radius_x(const float r) { radius_x_ = r; } | 533 void set_radius_x(const float r) { radius_x_ = r; } |
| 519 void set_radius_y(const float r) { radius_y_ = r; } | 534 void set_radius_y(const float r) { radius_y_ = r; } |
| 520 | 535 |
| 521 // Overridden from LocatedEvent. | 536 // Overridden from LocatedEvent. |
| 522 virtual void UpdateForRootTransform( | 537 virtual void UpdateForRootTransform( |
| 523 const gfx::Transform& inverted_root_transform) OVERRIDE; | 538 const gfx::Transform& inverted_root_transform) OVERRIDE; |
| 524 | 539 |
| 540 // Event: | |
| 541 virtual scoped_ptr<Event> Clone() const OVERRIDE; | |
| 542 | |
| 525 protected: | 543 protected: |
| 526 void set_radius(float radius_x, float radius_y) { | 544 void set_radius(float radius_x, float radius_y) { |
| 527 radius_x_ = radius_x; | 545 radius_x_ = radius_x; |
| 528 radius_y_ = radius_y; | 546 radius_y_ = radius_y; |
| 529 } | 547 } |
| 530 | 548 |
| 531 void set_rotation_angle(float rotation_angle) { | 549 void set_rotation_angle(float rotation_angle) { |
| 532 rotation_angle_ = rotation_angle; | 550 rotation_angle_ = rotation_angle; |
| 533 } | 551 } |
| 534 | 552 |
| (...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 657 // Normalizes flags_ so that it describes the state after the event. | 675 // Normalizes flags_ so that it describes the state after the event. |
| 658 // (Native X11 event flags describe the state before the event.) | 676 // (Native X11 event flags describe the state before the event.) |
| 659 void NormalizeFlags(); | 677 void NormalizeFlags(); |
| 660 | 678 |
| 661 // Returns true if the key event has already been processed by an input method | 679 // Returns true if the key event has already been processed by an input method |
| 662 // and there is no need to pass the key event to the input method again. | 680 // and there is no need to pass the key event to the input method again. |
| 663 bool IsTranslated() const; | 681 bool IsTranslated() const; |
| 664 // Marks this key event as translated or not translated. | 682 // Marks this key event as translated or not translated. |
| 665 void SetTranslated(bool translated); | 683 void SetTranslated(bool translated); |
| 666 | 684 |
| 685 // Event: | |
| 686 virtual scoped_ptr<Event> Clone() const OVERRIDE; | |
| 687 | |
| 667 protected: | 688 protected: |
| 668 friend class KeyEventTestApi; | 689 friend class KeyEventTestApi; |
| 669 | 690 |
| 670 // This allows a subclass TranslatedKeyEvent to be a non character event. | 691 // This allows a subclass TranslatedKeyEvent to be a non character event. |
| 671 void set_is_char(bool is_char) { is_char_ = is_char; } | 692 void set_is_char(bool is_char) { is_char_ = is_char; } |
| 672 | 693 |
| 673 private: | 694 private: |
| 674 KeyboardCode key_code_; | 695 KeyboardCode key_code_; |
| 675 | 696 |
| 676 // String of 'code' defined in DOM KeyboardEvent (e.g. 'KeyA', 'Space') | 697 // String of 'code' defined in DOM KeyboardEvent (e.g. 'KeyA', 'Space') |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 730 float y_offset, | 751 float y_offset, |
| 731 float x_offset_ordinal, | 752 float x_offset_ordinal, |
| 732 float y_offset_ordinal, | 753 float y_offset_ordinal, |
| 733 int finger_count); | 754 int finger_count); |
| 734 | 755 |
| 735 // Scale the scroll event's offset value. | 756 // Scale the scroll event's offset value. |
| 736 // This is useful in the multi-monitor setup where it needs to be scaled | 757 // This is useful in the multi-monitor setup where it needs to be scaled |
| 737 // to provide a consistent user experience. | 758 // to provide a consistent user experience. |
| 738 void Scale(const float factor); | 759 void Scale(const float factor); |
| 739 | 760 |
| 761 // Event: | |
| 762 virtual scoped_ptr<Event> Clone() const OVERRIDE; | |
| 763 | |
| 740 float x_offset() const { return x_offset_; } | 764 float x_offset() const { return x_offset_; } |
| 741 float y_offset() const { return y_offset_; } | 765 float y_offset() const { return y_offset_; } |
| 742 float x_offset_ordinal() const { return x_offset_ordinal_; } | 766 float x_offset_ordinal() const { return x_offset_ordinal_; } |
| 743 float y_offset_ordinal() const { return y_offset_ordinal_; } | 767 float y_offset_ordinal() const { return y_offset_ordinal_; } |
| 744 int finger_count() const { return finger_count_; } | 768 int finger_count() const { return finger_count_; } |
| 745 | 769 |
| 746 private: | 770 private: |
| 747 // Potential accelerated offsets. | 771 // Potential accelerated offsets. |
| 748 float x_offset_; | 772 float x_offset_; |
| 749 float y_offset_; | 773 float y_offset_; |
| (...skipping 16 matching lines...) Expand all Loading... | |
| 766 // If source / target windows are provided, the model location will be | 790 // If source / target windows are provided, the model location will be |
| 767 // converted from |source| coordinate system to |target| coordinate system. | 791 // converted from |source| coordinate system to |target| coordinate system. |
| 768 template <typename T> | 792 template <typename T> |
| 769 GestureEvent(const GestureEvent& model, T* source, T* target) | 793 GestureEvent(const GestureEvent& model, T* source, T* target) |
| 770 : LocatedEvent(model, source, target), | 794 : LocatedEvent(model, source, target), |
| 771 details_(model.details_) { | 795 details_(model.details_) { |
| 772 } | 796 } |
| 773 | 797 |
| 774 virtual ~GestureEvent(); | 798 virtual ~GestureEvent(); |
| 775 | 799 |
| 800 // Event: | |
| 801 virtual scoped_ptr<Event> Clone() const OVERRIDE; | |
| 802 | |
| 776 const GestureEventDetails& details() const { return details_; } | 803 const GestureEventDetails& details() const { return details_; } |
| 777 | 804 |
| 778 private: | 805 private: |
| 779 GestureEventDetails details_; | 806 GestureEventDetails details_; |
| 780 }; | 807 }; |
| 781 | 808 |
| 782 } // namespace ui | 809 } // namespace ui |
| 783 | 810 |
| 784 #endif // UI_EVENTS_EVENT_H_ | 811 #endif // UI_EVENTS_EVENT_H_ |
| OLD | NEW |