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

Side by Side 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 unified diff | Download patch
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 #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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698