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

Side by Side Diff: ui/events/event.cc

Issue 404203003: Distinguish between keystroke and character events. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: IsCharFromNative() for Mac build Created 6 years, 4 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
« no previous file with comments | « ui/events/event.h ('k') | ui/events/event_processor_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/Xlib.h> 9 #include <X11/Xlib.h>
10 #endif 10 #endif
(...skipping 555 matching lines...) Expand 10 before | Expand all | Expand 10 after
566 event.flags() == last_key_event_->flags() && 566 event.flags() == last_key_event_->flags() &&
567 (event.time_stamp() - last_key_event_->time_stamp()).InMilliseconds() < 567 (event.time_stamp() - last_key_event_->time_stamp()).InMilliseconds() <
568 kMaxAutoRepeatTimeMs) { 568 kMaxAutoRepeatTimeMs) {
569 return true; 569 return true;
570 } 570 }
571 delete last_key_event_; 571 delete last_key_event_;
572 last_key_event_ = new KeyEvent(event); 572 last_key_event_ = new KeyEvent(event);
573 return false; 573 return false;
574 } 574 }
575 575
576 KeyEvent::KeyEvent(const base::NativeEvent& native_event, bool is_char) 576 KeyEvent::KeyEvent(const base::NativeEvent& native_event)
577 : Event(native_event, 577 : Event(native_event,
578 EventTypeFromNative(native_event), 578 EventTypeFromNative(native_event),
579 EventFlagsFromNative(native_event)), 579 EventFlagsFromNative(native_event)),
580 key_code_(KeyboardCodeFromNative(native_event)), 580 key_code_(KeyboardCodeFromNative(native_event)),
581 code_(CodeFromNative(native_event)), 581 code_(CodeFromNative(native_event)),
582 is_char_(is_char), 582 is_char_(IsCharFromNative(native_event)),
583 platform_keycode_(PlatformKeycodeFromNative(native_event)), 583 platform_keycode_(PlatformKeycodeFromNative(native_event)),
584 character_(0) { 584 character_(0) {
585 if (IsRepeated(*this)) 585 if (IsRepeated(*this))
586 set_flags(flags() | ui::EF_IS_REPEAT); 586 set_flags(flags() | ui::EF_IS_REPEAT);
587 587
588 #if defined(USE_X11) 588 #if defined(USE_X11)
589 NormalizeFlags(); 589 NormalizeFlags();
590 #endif 590 #endif
591 } 591 }
592 592
593 KeyEvent::KeyEvent(EventType type, 593 KeyEvent::KeyEvent(EventType type,
594 KeyboardCode key_code, 594 KeyboardCode key_code,
595 int flags, 595 int flags)
596 bool is_char)
597 : Event(type, EventTimeForNow(), flags), 596 : Event(type, EventTimeForNow(), flags),
598 key_code_(key_code), 597 key_code_(key_code),
599 is_char_(is_char), 598 is_char_(false),
600 platform_keycode_(0), 599 platform_keycode_(0),
601 character_(GetCharacterFromKeyCode(key_code, flags)) { 600 character_(GetCharacterFromKeyCode(key_code, flags)) {
602 } 601 }
603 602
604 KeyEvent::KeyEvent(EventType type, 603 KeyEvent::KeyEvent(EventType type,
605 KeyboardCode key_code, 604 KeyboardCode key_code,
606 const std::string& code, 605 const std::string& code,
607 int flags, 606 int flags)
608 bool is_char)
609 : Event(type, EventTimeForNow(), flags), 607 : Event(type, EventTimeForNow(), flags),
610 key_code_(key_code), 608 key_code_(key_code),
611 code_(code), 609 code_(code),
612 is_char_(is_char), 610 is_char_(false),
613 platform_keycode_(0), 611 platform_keycode_(0),
614 character_(GetCharacterFromKeyCode(key_code, flags)) { 612 character_(GetCharacterFromKeyCode(key_code, flags)) {
615 } 613 }
616 614
617 uint16 KeyEvent::GetCharacter() const { 615 KeyEvent::KeyEvent(base::char16 character, KeyboardCode key_code, int flags)
616 : Event(ET_KEY_PRESSED, EventTimeForNow(), flags),
617 key_code_(key_code),
618 code_(""),
619 is_char_(true),
620 character_(character) {
621 }
622
623 base::char16 KeyEvent::GetCharacter() const {
618 if (character_) 624 if (character_)
619 return character_; 625 return character_;
620 626
621 #if defined(OS_WIN) 627 #if defined(OS_WIN)
622 return (native_event().message == WM_CHAR) ? key_code_ : 628 return (native_event().message == WM_CHAR) ? key_code_ :
623 GetCharacterFromKeyCode(key_code_, flags()); 629 GetCharacterFromKeyCode(key_code_, flags());
624 #elif defined(USE_X11) 630 #elif defined(USE_X11)
625 if (!native_event()) 631 if (!native_event())
626 return GetCharacterFromKeyCode(key_code_, flags()); 632 return GetCharacterFromKeyCode(key_code_, flags());
627 633
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after
782 gfx::PointF(x, y), 788 gfx::PointF(x, y),
783 time_stamp, 789 time_stamp,
784 flags | EF_FROM_TOUCH), 790 flags | EF_FROM_TOUCH),
785 details_(details) { 791 details_(details) {
786 } 792 }
787 793
788 GestureEvent::~GestureEvent() { 794 GestureEvent::~GestureEvent() {
789 } 795 }
790 796
791 } // namespace ui 797 } // namespace ui
OLDNEW
« no previous file with comments | « ui/events/event.h ('k') | ui/events/event_processor_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698