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

Unified Diff: ui/events/event.cc

Issue 1017323002: make IsRepeated work even when a KeyEvent is created from the same native event. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 9 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 side-by-side diff with in-line comments
Download patch
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_;

Powered by Google App Engine
This is Rietveld 408576698