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/Xlib.h> | 9 #include <X11/Xlib.h> |
10 #endif | 10 #endif |
(...skipping 520 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
531 gfx::DecomposedTransform decomp; | 531 gfx::DecomposedTransform decomp; |
532 bool success = gfx::DecomposeTransform(&decomp, inverted_root_transform); | 532 bool success = gfx::DecomposeTransform(&decomp, inverted_root_transform); |
533 DCHECK(success); | 533 DCHECK(success); |
534 if (decomp.scale[0]) | 534 if (decomp.scale[0]) |
535 radius_x_ *= decomp.scale[0]; | 535 radius_x_ *= decomp.scale[0]; |
536 if (decomp.scale[1]) | 536 if (decomp.scale[1]) |
537 radius_y_ *= decomp.scale[1]; | 537 radius_y_ *= decomp.scale[1]; |
538 } | 538 } |
539 | 539 |
540 //////////////////////////////////////////////////////////////////////////////// | 540 //////////////////////////////////////////////////////////////////////////////// |
541 // KeyEvent::ExtendedMojoData | |
542 | |
543 struct KeyEvent::ExtendedMojoData { | |
544 int32_t windows_key_code; | |
545 int32_t native_key_code; | |
546 uint16_t text; | |
547 uint16_t unmodified_text; | |
548 }; | |
549 | |
550 //////////////////////////////////////////////////////////////////////////////// | |
541 // KeyEvent | 551 // KeyEvent |
542 | 552 |
543 // static | 553 // static |
544 KeyEvent* KeyEvent::last_key_event_ = NULL; | 554 KeyEvent* KeyEvent::last_key_event_ = NULL; |
545 | 555 |
546 // static | 556 // static |
547 bool KeyEvent::IsRepeated(const KeyEvent& event) { | 557 bool KeyEvent::IsRepeated(const KeyEvent& event) { |
548 // A safe guard in case if there were continous key pressed events that are | 558 // A safe guard in case if there were continous key pressed events that are |
549 // not auto repeat. | 559 // not auto repeat. |
550 const int kMaxAutoRepeatTimeMs = 2000; | 560 const int kMaxAutoRepeatTimeMs = 2000; |
(...skipping 26 matching lines...) Expand all Loading... | |
577 } | 587 } |
578 | 588 |
579 KeyEvent::KeyEvent(const base::NativeEvent& native_event) | 589 KeyEvent::KeyEvent(const base::NativeEvent& native_event) |
580 : Event(native_event, | 590 : Event(native_event, |
581 EventTypeFromNative(native_event), | 591 EventTypeFromNative(native_event), |
582 EventFlagsFromNative(native_event)), | 592 EventFlagsFromNative(native_event)), |
583 key_code_(KeyboardCodeFromNative(native_event)), | 593 key_code_(KeyboardCodeFromNative(native_event)), |
584 code_(CodeFromNative(native_event)), | 594 code_(CodeFromNative(native_event)), |
585 is_char_(IsCharFromNative(native_event)), | 595 is_char_(IsCharFromNative(native_event)), |
586 platform_keycode_(PlatformKeycodeFromNative(native_event)), | 596 platform_keycode_(PlatformKeycodeFromNative(native_event)), |
587 character_(0) { | 597 character_(0), |
598 extended_mojo_data_() { | |
sky
2014/08/21 15:44:42
nit: remove as not needed (from all of these).
| |
588 if (IsRepeated(*this)) | 599 if (IsRepeated(*this)) |
589 set_flags(flags() | ui::EF_IS_REPEAT); | 600 set_flags(flags() | ui::EF_IS_REPEAT); |
590 | 601 |
591 #if defined(USE_X11) | 602 #if defined(USE_X11) |
592 NormalizeFlags(); | 603 NormalizeFlags(); |
593 #endif | 604 #endif |
594 } | 605 } |
595 | 606 |
596 KeyEvent::KeyEvent(EventType type, | 607 KeyEvent::KeyEvent(EventType type, |
597 KeyboardCode key_code, | 608 KeyboardCode key_code, |
598 int flags) | 609 int flags) |
599 : Event(type, EventTimeForNow(), flags), | 610 : Event(type, EventTimeForNow(), flags), |
600 key_code_(key_code), | 611 key_code_(key_code), |
601 is_char_(false), | 612 is_char_(false), |
602 platform_keycode_(0), | 613 platform_keycode_(0), |
603 character_(GetCharacterFromKeyCode(key_code, flags)) { | 614 character_(GetCharacterFromKeyCode(key_code, flags)), |
615 extended_mojo_data_() { | |
604 } | 616 } |
605 | 617 |
606 KeyEvent::KeyEvent(EventType type, | 618 KeyEvent::KeyEvent(EventType type, |
607 KeyboardCode key_code, | 619 KeyboardCode key_code, |
608 const std::string& code, | 620 const std::string& code, |
609 int flags) | 621 int flags) |
610 : Event(type, EventTimeForNow(), flags), | 622 : Event(type, EventTimeForNow(), flags), |
611 key_code_(key_code), | 623 key_code_(key_code), |
612 code_(code), | 624 code_(code), |
613 is_char_(false), | 625 is_char_(false), |
614 platform_keycode_(0), | 626 platform_keycode_(0), |
615 character_(GetCharacterFromKeyCode(key_code, flags)) { | 627 character_(GetCharacterFromKeyCode(key_code, flags)), |
628 extended_mojo_data_() { | |
616 } | 629 } |
617 | 630 |
618 KeyEvent::KeyEvent(base::char16 character, KeyboardCode key_code, int flags) | 631 KeyEvent::KeyEvent(base::char16 character, KeyboardCode key_code, int flags) |
619 : Event(ET_KEY_PRESSED, EventTimeForNow(), flags), | 632 : Event(ET_KEY_PRESSED, EventTimeForNow(), flags), |
620 key_code_(key_code), | 633 key_code_(key_code), |
621 code_(""), | 634 code_(""), |
622 is_char_(true), | 635 is_char_(true), |
623 character_(character) { | 636 platform_keycode_(0), |
637 character_(character), | |
638 extended_mojo_data_() { | |
639 } | |
640 | |
641 KeyEvent::KeyEvent(const KeyEvent& rhs) | |
642 : Event(rhs), | |
643 key_code_(rhs.key_code_), | |
644 code_(rhs.code_), | |
645 is_char_(rhs.is_char_), | |
646 platform_keycode_(rhs.platform_keycode_), | |
647 character_(rhs.character_), | |
648 extended_mojo_data_() { | |
649 if (rhs.extended_mojo_data_) { | |
sky
2014/08/21 15:44:42
Why the setter and not just copy rhs.extended_mojo
| |
650 SetSelfContainedKeyEventData(rhs.extended_mojo_data_->windows_key_code, | |
651 platform_keycode_, | |
652 rhs.extended_mojo_data_->text, | |
653 rhs.extended_mojo_data_->unmodified_text); | |
654 } | |
655 } | |
656 | |
657 KeyEvent& KeyEvent::operator=(const KeyEvent& rhs) { | |
658 if (this != &rhs) { | |
659 Event::operator=(rhs); | |
660 key_code_ = rhs.key_code_; | |
661 code_ = rhs.code_; | |
662 is_char_ = rhs.is_char_; | |
663 platform_keycode_ = rhs.platform_keycode_; | |
664 character_ = rhs.character_; | |
665 | |
666 if (rhs.extended_mojo_data_) { | |
667 SetSelfContainedKeyEventData(rhs.extended_mojo_data_->windows_key_code, | |
668 platform_keycode_, | |
669 rhs.extended_mojo_data_->text, | |
670 rhs.extended_mojo_data_->unmodified_text); | |
671 } | |
672 } | |
673 return *this; | |
674 } | |
675 | |
676 KeyEvent::~KeyEvent() {} | |
677 | |
678 void KeyEvent::SetSelfContainedKeyEventData(int32_t windows_key_code, | |
679 int32_t platform_key_code, | |
680 base::char16 text, | |
681 base::char16 unmodified_text) { | |
682 extended_mojo_data_.reset(new ExtendedMojoData); | |
683 extended_mojo_data_->windows_key_code = windows_key_code; | |
684 extended_mojo_data_->text = text; | |
685 extended_mojo_data_->unmodified_text = unmodified_text; | |
686 | |
sky
2014/08/21 15:44:42
You don't set native_key_code
| |
687 platform_keycode_ = platform_key_code; | |
688 } | |
689 | |
690 int32_t KeyEvent::GetWindowsKeyCode() const { | |
691 if (HasNativeEvent()) | |
692 return ui::WindowsKeycodeFromNative(native_event()); | |
693 else if (extended_mojo_data_) | |
sky
2014/08/21 15:44:42
nit: no else after a return (for all of these).
| |
694 return extended_mojo_data_->windows_key_code; | |
695 | |
696 NOTREACHED(); | |
697 return 0; | |
698 } | |
699 | |
700 base::char16 KeyEvent::GetKeyText() const { | |
701 if (HasNativeEvent()) | |
702 return ui::TextFromNative(native_event()); | |
703 else if (extended_mojo_data_) | |
704 return extended_mojo_data_->text; | |
705 | |
706 NOTREACHED(); | |
707 return 0; | |
708 } | |
709 | |
710 base::char16 KeyEvent::GetKeyUnmodifiedText() const { | |
711 if (HasNativeEvent()) | |
712 return ui::UnmodifiedTextFromNative(native_event()); | |
713 else if (extended_mojo_data_) | |
714 return extended_mojo_data_->unmodified_text; | |
715 | |
716 NOTREACHED(); | |
717 return 0; | |
624 } | 718 } |
625 | 719 |
626 base::char16 KeyEvent::GetCharacter() const { | 720 base::char16 KeyEvent::GetCharacter() const { |
627 if (character_) | 721 if (character_) |
628 return character_; | 722 return character_; |
629 | 723 |
630 #if defined(OS_WIN) | 724 #if defined(OS_WIN) |
631 return (native_event().message == WM_CHAR) ? key_code_ : | 725 return (native_event().message == WM_CHAR) ? key_code_ : |
632 GetCharacterFromKeyCode(key_code_, flags()); | 726 GetCharacterFromKeyCode(key_code_, flags()); |
633 #elif defined(USE_X11) | 727 #elif defined(USE_X11) |
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
791 gfx::PointF(x, y), | 885 gfx::PointF(x, y), |
792 time_stamp, | 886 time_stamp, |
793 flags | EF_FROM_TOUCH), | 887 flags | EF_FROM_TOUCH), |
794 details_(details) { | 888 details_(details) { |
795 } | 889 } |
796 | 890 |
797 GestureEvent::~GestureEvent() { | 891 GestureEvent::~GestureEvent() { |
798 } | 892 } |
799 | 893 |
800 } // namespace ui | 894 } // namespace ui |
OLD | NEW |