| Index: ui/events/event.cc
|
| diff --git a/ui/events/event.cc b/ui/events/event.cc
|
| index 5e7d8c86377a4d6a7c5546dcde02b6a76e6c71d4..2054ce3b17861688933a3c4535620b340add8e24 100644
|
| --- a/ui/events/event.cc
|
| +++ b/ui/events/event.cc
|
| @@ -645,12 +645,16 @@ bool KeyEvent::IsRepeated(const KeyEvent& event) {
|
| if (!last_key_event_) {
|
| last_key_event_ = new KeyEvent(event);
|
| return false;
|
| + } else if (event.time_stamp() == last_key_event_->time_stamp()) {
|
| + // The KeyEvent is created from the same native event.
|
| + return (last_key_event_->flags() & ui::EF_IS_REPEAT) != 0;
|
| }
|
| if (event.key_code() == last_key_event_->key_code() &&
|
| - event.flags() == last_key_event_->flags() &&
|
| + event.flags() == (last_key_event_->flags() & ~ui::EF_IS_REPEAT) &&
|
| (event.time_stamp() - last_key_event_->time_stamp()).InMilliseconds() <
|
| - kMaxAutoRepeatTimeMs) {
|
| + kMaxAutoRepeatTimeMs) {
|
| last_key_event_->set_time_stamp(event.time_stamp());
|
| + last_key_event_->set_flags(last_key_event_->flags() | ui::EF_IS_REPEAT);
|
| return true;
|
| }
|
| delete last_key_event_;
|
|
|