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

Side by Side Diff: ui/base/events/event.h

Issue 11881042: highlight intermediate tabs (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Make check for Gesture vs Scroll event for flings explicit Created 7 years, 11 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
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_BASE_EVENTS_EVENT_H_ 5 #ifndef UI_BASE_EVENTS_EVENT_H_
6 #define UI_BASE_EVENTS_EVENT_H_ 6 #define UI_BASE_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 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
135 case ET_GESTURE_PINCH_END: 135 case ET_GESTURE_PINCH_END:
136 case ET_GESTURE_PINCH_UPDATE: 136 case ET_GESTURE_PINCH_UPDATE:
137 case ET_GESTURE_LONG_PRESS: 137 case ET_GESTURE_LONG_PRESS:
138 case ET_GESTURE_LONG_TAP: 138 case ET_GESTURE_LONG_TAP:
139 case ET_GESTURE_MULTIFINGER_SWIPE: 139 case ET_GESTURE_MULTIFINGER_SWIPE:
140 return true; 140 return true;
141 141
142 case ET_SCROLL_FLING_CANCEL: 142 case ET_SCROLL_FLING_CANCEL:
143 case ET_SCROLL_FLING_START: 143 case ET_SCROLL_FLING_START:
144 // These can be ScrollEvents too. But for ScrollEvents have valid native 144 // These can be ScrollEvents too. But for ScrollEvents have valid native
145 // events. No gesture events have native events. 145 // events. No gesture events have native events.
sadrul 2013/01/22 20:07:24 Update the comment.
DaveMoore 2013/01/27 21:21:54 Done.
146 return !HasNativeEvent(); 146 return flags_ & EF_FROM_TOUCH;
147 147
148 default: 148 default:
149 break; 149 break;
150 } 150 }
151 return false; 151 return false;
152 } 152 }
153 153
154 bool IsScrollEvent() const { 154 bool IsScrollEvent() const {
155 return type_ == ET_SCROLL || 155 return type_ == ET_SCROLL ||
156 ((type_ == ET_SCROLL_FLING_START || 156 ((type_ == ET_SCROLL_FLING_START ||
157 type_ == ET_SCROLL_FLING_CANCEL) && HasNativeEvent()); 157 type_ == ET_SCROLL_FLING_CANCEL) &&
158 !(flags() & EF_FROM_TOUCH));
158 } 159 }
159 160
160 bool IsScrollGestureEvent() const { 161 bool IsScrollGestureEvent() const {
161 return type_ == ET_GESTURE_SCROLL_BEGIN || 162 return type_ == ET_GESTURE_SCROLL_BEGIN ||
162 type_ == ET_GESTURE_SCROLL_UPDATE || 163 type_ == ET_GESTURE_SCROLL_UPDATE ||
163 type_ == ET_GESTURE_SCROLL_END; 164 type_ == ET_GESTURE_SCROLL_END;
164 } 165 }
165 166
166 bool IsFlingScrollEvent() const { 167 bool IsFlingScrollEvent() const {
167 return type_ == ET_SCROLL_FLING_CANCEL || 168 return type_ == ET_SCROLL_FLING_CANCEL ||
(...skipping 24 matching lines...) Expand all
192 Event(const Event& copy); 193 Event(const Event& copy);
193 void SetType(EventType type); 194 void SetType(EventType type);
194 void set_delete_native_event(bool delete_native_event) { 195 void set_delete_native_event(bool delete_native_event) {
195 delete_native_event_ = delete_native_event; 196 delete_native_event_ = delete_native_event;
196 } 197 }
197 void set_cancelable(bool cancelable) { cancelable_ = cancelable; } 198 void set_cancelable(bool cancelable) { cancelable_ = cancelable; }
198 void set_dispatch_to_hidden_targets(bool dispatch_to_hidden_targets) { 199 void set_dispatch_to_hidden_targets(bool dispatch_to_hidden_targets) {
199 dispatch_to_hidden_targets_ = dispatch_to_hidden_targets; 200 dispatch_to_hidden_targets_ = dispatch_to_hidden_targets;
200 } 201 }
201 202
203 void set_time_stamp(const base::TimeDelta& time_stamp) {
sky 2013/01/22 18:05:01 We generally don't pass TimeDeltas by const-ref.
DaveMoore 2013/01/27 21:21:54 Done.
204 time_stamp_ = time_stamp;
205 }
206
202 void set_name(const std::string& name) { name_ = name; } 207 void set_name(const std::string& name) { name_ = name; }
203 208
204 private: 209 private:
205 void operator=(const Event&); 210 void operator=(const Event&);
206 211
207 // Safely initializes the native event members of this class. 212 // Safely initializes the native event members of this class.
208 void Init(); 213 void Init();
209 void InitWithNativeEvent(const base::NativeEvent& native_event); 214 void InitWithNativeEvent(const base::NativeEvent& native_event);
210 215
211 base::NativeEvent native_event_; 216 base::NativeEvent native_event_;
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
262 virtual void UpdateForRootTransform(const gfx::Transform& root_transform); 267 virtual void UpdateForRootTransform(const gfx::Transform& root_transform);
263 268
264 template <class T> void ConvertLocationToTarget(T* source, T* target) { 269 template <class T> void ConvertLocationToTarget(T* source, T* target) {
265 if (target && target != source) 270 if (target && target != source)
266 T::ConvertPointToTarget(source, target, &location_); 271 T::ConvertPointToTarget(source, target, &location_);
267 } 272 }
268 273
269 protected: 274 protected:
270 explicit LocatedEvent(const base::NativeEvent& native_event); 275 explicit LocatedEvent(const base::NativeEvent& native_event);
271 276
277 LocatedEvent(const LocatedEvent& model);
sky 2013/01/22 18:05:01 explicit
DaveMoore 2013/01/27 21:21:54 Done.
278
272 // Create a new LocatedEvent which is identical to the provided model. 279 // Create a new LocatedEvent which is identical to the provided model.
273 // If source / target windows are provided, the model location will be 280 // If source / target windows are provided, the model location will be
274 // converted from |source| coordinate system to |target| coordinate system. 281 // converted from |source| coordinate system to |target| coordinate system.
275 template <class T> 282 template <class T>
276 LocatedEvent(const LocatedEvent& model, T* source, T* target) 283 LocatedEvent(const LocatedEvent& model, T* source, T* target)
277 : Event(model), 284 : Event(model),
278 location_(model.location_), 285 location_(model.location_),
279 root_location_(model.root_location_), 286 root_location_(model.root_location_),
280 valid_system_location_(model.valid_system_location_), 287 valid_system_location_(model.valid_system_location_),
281 system_location_(model.system_location_) { 288 system_location_(model.system_location_) {
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
322 T* source, 329 T* source,
323 T* target, 330 T* target,
324 EventType type, 331 EventType type,
325 int flags) 332 int flags)
326 : LocatedEvent(model, source, target), 333 : LocatedEvent(model, source, target),
327 changed_button_flags_(model.changed_button_flags_) { 334 changed_button_flags_(model.changed_button_flags_) {
328 SetType(type); 335 SetType(type);
329 set_flags(flags); 336 set_flags(flags);
330 } 337 }
331 338
339 MouseEvent(const MouseEvent& model)
sky 2013/01/22 18:05:01 explicit
DaveMoore 2013/01/27 21:21:54 Done, but AutoFillDialogViews was depending on the
340 : LocatedEvent(model),
341 changed_button_flags_(model.changed_button_flags_) {
342 }
343
332 // Used for synthetic events in testing and by the gesture recognizer. 344 // Used for synthetic events in testing and by the gesture recognizer.
333 MouseEvent(EventType type, 345 MouseEvent(EventType type,
334 const gfx::Point& location, 346 const gfx::Point& location,
335 const gfx::Point& root_location, 347 const gfx::Point& root_location,
336 int flags); 348 int flags);
337 349
338 // Conveniences to quickly test what button is down 350 // Conveniences to quickly test what button is down
339 bool IsOnlyLeftMouseButton() const { 351 bool IsOnlyLeftMouseButton() const {
340 return (flags() & EF_LEFT_MOUSE_BUTTON) && 352 return (flags() & EF_LEFT_MOUSE_BUTTON) &&
341 !(flags() & (EF_MIDDLE_MOUSE_BUTTON | EF_RIGHT_MOUSE_BUTTON)); 353 !(flags() & (EF_MIDDLE_MOUSE_BUTTON | EF_RIGHT_MOUSE_BUTTON));
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after
505 float radius_x_; 517 float radius_x_;
506 518
507 // Radius of the Y (minor) axis of the touch ellipse. 0.0 if unknown. 519 // Radius of the Y (minor) axis of the touch ellipse. 0.0 if unknown.
508 float radius_y_; 520 float radius_y_;
509 521
510 // Angle of the major axis away from the X axis. Default 0.0. 522 // Angle of the major axis away from the X axis. Default 0.0.
511 float rotation_angle_; 523 float rotation_angle_;
512 524
513 // Force (pressure) of the touch. Normalized to be [0, 1]. Default to be 0.0. 525 // Force (pressure) of the touch. Normalized to be [0, 1]. Default to be 0.0.
514 float force_; 526 float force_;
515
516 DISALLOW_COPY_AND_ASSIGN(TouchEvent);
517 }; 527 };
518 528
519 class UI_EXPORT KeyEvent : public Event { 529 class UI_EXPORT KeyEvent : public Event {
520 public: 530 public:
521 KeyEvent(const base::NativeEvent& native_event, bool is_char); 531 KeyEvent(const base::NativeEvent& native_event, bool is_char);
522 532
523 // Used for synthetic events in testing. 533 // Used for synthetic events in testing.
524 KeyEvent(EventType type, KeyboardCode key_code, int flags, bool is_char); 534 KeyEvent(EventType type, KeyboardCode key_code, int flags, bool is_char);
525 535
526 // These setters allow an I18N virtual keyboard to fabricate a keyboard event 536 // These setters allow an I18N virtual keyboard to fabricate a keyboard event
(...skipping 30 matching lines...) Expand all
557 void NormalizeFlags(); 567 void NormalizeFlags();
558 568
559 private: 569 private:
560 KeyboardCode key_code_; 570 KeyboardCode key_code_;
561 // True if this is a translated character event (vs. a raw key down). Both 571 // True if this is a translated character event (vs. a raw key down). Both
562 // share the same type: ET_KEY_PRESSED. 572 // share the same type: ET_KEY_PRESSED.
563 bool is_char_; 573 bool is_char_;
564 574
565 uint16 character_; 575 uint16 character_;
566 uint16 unmodified_character_; 576 uint16 unmodified_character_;
567
568 DISALLOW_COPY_AND_ASSIGN(KeyEvent);
569 }; 577 };
570 578
571 // A key event which is translated by an input method (IME). 579 // A key event which is translated by an input method (IME).
572 // For example, if an IME receives a KeyEvent(VKEY_SPACE), and it does not 580 // For example, if an IME receives a KeyEvent(VKEY_SPACE), and it does not
573 // consume the key, the IME usually generates and dispatches a 581 // consume the key, the IME usually generates and dispatches a
574 // TranslatedKeyEvent(VKEY_SPACE) event. If the IME receives a KeyEvent and 582 // TranslatedKeyEvent(VKEY_SPACE) event. If the IME receives a KeyEvent and
575 // it does consume the event, it might dispatch a 583 // it does consume the event, it might dispatch a
576 // TranslatedKeyEvent(VKEY_PROCESSKEY) event as defined in the DOM spec. 584 // TranslatedKeyEvent(VKEY_PROCESSKEY) event as defined in the DOM spec.
577 class UI_EXPORT TranslatedKeyEvent : public KeyEvent { 585 class UI_EXPORT TranslatedKeyEvent : public KeyEvent {
578 public: 586 public:
(...skipping 29 matching lines...) Expand all
608 616
609 DISALLOW_COPY_AND_ASSIGN(DropTargetEvent); 617 DISALLOW_COPY_AND_ASSIGN(DropTargetEvent);
610 }; 618 };
611 619
612 class UI_EXPORT ScrollEvent : public MouseEvent { 620 class UI_EXPORT ScrollEvent : public MouseEvent {
613 public: 621 public:
614 explicit ScrollEvent(const base::NativeEvent& native_event); 622 explicit ScrollEvent(const base::NativeEvent& native_event);
615 template <class T> 623 template <class T>
616 ScrollEvent(const ScrollEvent& model, 624 ScrollEvent(const ScrollEvent& model,
617 T* source, 625 T* source,
618 T* target, 626 T* target)
619 EventType type, 627 : MouseEvent(model, source, target),
620 int flags)
621 : MouseEvent(model, source, target, type, flags),
622 x_offset_(model.x_offset_), 628 x_offset_(model.x_offset_),
623 y_offset_(model.y_offset_), 629 y_offset_(model.y_offset_),
624 finger_count_(model.finger_count_){ 630 finger_count_(model.finger_count_){
625 } 631 }
626 632
627 // Used for tests. 633 // Used for tests.
628 ScrollEvent(EventType type, 634 ScrollEvent(EventType type,
629 const gfx::Point& location, 635 const gfx::Point& location,
636 base::TimeDelta time_stamp,
630 int flags, 637 int flags,
631 float x_offset, 638 float x_offset,
632 float y_offset); 639 float y_offset,
640 int finger_count);
633 641
634 // Scale the scroll event's offset value. 642 // Scale the scroll event's offset value.
635 // This is useful in the multi-monitor setup where it needs to be scaled 643 // This is useful in the multi-monitor setup where it needs to be scaled
636 // to provide a consistent user experience. 644 // to provide a consistent user experience.
637 void Scale(const float factor); 645 void Scale(const float factor);
638 646
639 float x_offset() const { return x_offset_; } 647 float x_offset() const { return x_offset_; }
640 float y_offset() const { return y_offset_; } 648 float y_offset() const { return y_offset_; }
641 int finger_count() const { return finger_count_; } 649 int finger_count() const { return finger_count_; }
642 650
643 private: 651 private:
644 float x_offset_; 652 float x_offset_;
645 float y_offset_; 653 float y_offset_;
646 int finger_count_; 654 int finger_count_;
647
648 DISALLOW_COPY_AND_ASSIGN(ScrollEvent);
649 }; 655 };
650 656
651 class UI_EXPORT GestureEvent : public LocatedEvent { 657 class UI_EXPORT GestureEvent : public LocatedEvent {
652 public: 658 public:
653 GestureEvent(EventType type, 659 GestureEvent(EventType type,
654 int x, 660 int x,
655 int y, 661 int y,
656 int flags, 662 int flags,
657 base::TimeDelta time_stamp, 663 base::TimeDelta time_stamp,
658 const GestureEventDetails& details, 664 const GestureEventDetails& details,
(...skipping 25 matching lines...) Expand all
684 // This value is stored as a bitfield because the number of touch ids varies, 690 // This value is stored as a bitfield because the number of touch ids varies,
685 // but we currently don't need more than 32 touches at a time. 691 // but we currently don't need more than 32 touches at a time.
686 const unsigned int touch_ids_bitfield_; 692 const unsigned int touch_ids_bitfield_;
687 693
688 DISALLOW_COPY_AND_ASSIGN(GestureEvent); 694 DISALLOW_COPY_AND_ASSIGN(GestureEvent);
689 }; 695 };
690 696
691 } // namespace ui 697 } // namespace ui
692 698
693 #endif // UI_BASE_EVENTS_EVENT_H_ 699 #endif // UI_BASE_EVENTS_EVENT_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698