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/keysym.h> | 9 #include <X11/keysym.h> |
10 #include <X11/Xlib.h> | 10 #include <X11/Xlib.h> |
(...skipping 627 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
638 return false; | 638 return false; |
639 if (event.type() == ui::ET_KEY_RELEASED) { | 639 if (event.type() == ui::ET_KEY_RELEASED) { |
640 delete last_key_event_; | 640 delete last_key_event_; |
641 last_key_event_ = NULL; | 641 last_key_event_ = NULL; |
642 return false; | 642 return false; |
643 } | 643 } |
644 CHECK_EQ(ui::ET_KEY_PRESSED, event.type()); | 644 CHECK_EQ(ui::ET_KEY_PRESSED, event.type()); |
645 if (!last_key_event_) { | 645 if (!last_key_event_) { |
646 last_key_event_ = new KeyEvent(event); | 646 last_key_event_ = new KeyEvent(event); |
647 return false; | 647 return false; |
| 648 } else if (event.time_stamp() == last_key_event_->time_stamp()) { |
| 649 // The KeyEvent is created from the same native event. |
| 650 return (last_key_event_->flags() & ui::EF_IS_REPEAT) != 0; |
648 } | 651 } |
649 if (event.key_code() == last_key_event_->key_code() && | 652 if (event.key_code() == last_key_event_->key_code() && |
650 event.flags() == last_key_event_->flags() && | 653 event.flags() == (last_key_event_->flags() & ~ui::EF_IS_REPEAT) && |
651 (event.time_stamp() - last_key_event_->time_stamp()).InMilliseconds() < | 654 (event.time_stamp() - last_key_event_->time_stamp()).InMilliseconds() < |
652 kMaxAutoRepeatTimeMs) { | 655 kMaxAutoRepeatTimeMs) { |
653 last_key_event_->set_time_stamp(event.time_stamp()); | 656 last_key_event_->set_time_stamp(event.time_stamp()); |
| 657 last_key_event_->set_flags(last_key_event_->flags() | ui::EF_IS_REPEAT); |
654 return true; | 658 return true; |
655 } | 659 } |
656 delete last_key_event_; | 660 delete last_key_event_; |
657 last_key_event_ = new KeyEvent(event); | 661 last_key_event_ = new KeyEvent(event); |
658 return false; | 662 return false; |
659 } | 663 } |
660 | 664 |
661 KeyEvent::KeyEvent(const base::NativeEvent& native_event) | 665 KeyEvent::KeyEvent(const base::NativeEvent& native_event) |
662 : Event(native_event, | 666 : Event(native_event, |
663 EventTypeFromNative(native_event), | 667 EventTypeFromNative(native_event), |
(...skipping 317 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
981 gfx::PointF(x, y), | 985 gfx::PointF(x, y), |
982 time_stamp, | 986 time_stamp, |
983 flags | EF_FROM_TOUCH), | 987 flags | EF_FROM_TOUCH), |
984 details_(details) { | 988 details_(details) { |
985 } | 989 } |
986 | 990 |
987 GestureEvent::~GestureEvent() { | 991 GestureEvent::~GestureEvent() { |
988 } | 992 } |
989 | 993 |
990 } // namespace ui | 994 } // namespace ui |
OLD | NEW |