Chromium Code Reviews| 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 |