| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 #import "ui/views/cocoa/bridged_content_view.h" | 5 #import "ui/views/cocoa/bridged_content_view.h" |
| 6 | 6 |
| 7 #include "base/logging.h" | 7 #include "base/logging.h" |
| 8 #import "base/mac/mac_util.h" | 8 #import "base/mac/mac_util.h" |
| 9 #import "base/mac/scoped_nsobject.h" | 9 #import "base/mac/scoped_nsobject.h" |
| 10 #include "base/strings/sys_string_conversions.h" | 10 #include "base/strings/sys_string_conversions.h" |
| (...skipping 618 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 629 } | 629 } |
| 630 | 630 |
| 631 //////////////////////////////////////////////////////////////////////////////// | 631 //////////////////////////////////////////////////////////////////////////////// |
| 632 // NSResponder Action Messages. Keep sorted according NSResponder.h (from the | 632 // NSResponder Action Messages. Keep sorted according NSResponder.h (from the |
| 633 // 10.9 SDK). The list should eventually be complete. Anything not defined will | 633 // 10.9 SDK). The list should eventually be complete. Anything not defined will |
| 634 // beep when interpretKeyEvents: would otherwise call it. | 634 // beep when interpretKeyEvents: would otherwise call it. |
| 635 // TODO(tapted): Make this list complete, except for insert* methods which are | 635 // TODO(tapted): Make this list complete, except for insert* methods which are |
| 636 // dispatched as regular key events in doCommandBySelector:. | 636 // dispatched as regular key events in doCommandBySelector:. |
| 637 | 637 |
| 638 // views::Textfields are single-line only, map Paragraph and Document commands | 638 // views::Textfields are single-line only, map Paragraph and Document commands |
| 639 // to Line. | 639 // to Line. Also, Up/Down commands correspond to beginning/end of line. |
| 640 | 640 |
| 641 // The insertText action message forwards to the TextInputClient unless a menu | 641 // The insertText action message forwards to the TextInputClient unless a menu |
| 642 // is active. Note that NSResponder's interpretKeyEvents: implementation doesn't | 642 // is active. Note that NSResponder's interpretKeyEvents: implementation doesn't |
| 643 // direct insertText: through doCommandBySelector:, so this is still needed to | 643 // direct insertText: through doCommandBySelector:, so this is still needed to |
| 644 // handle the case when inputContext: is nil. When inputContext: returns non-nil | 644 // handle the case when inputContext: is nil. When inputContext: returns non-nil |
| 645 // text goes directly to insertText:replacementRange:. | 645 // text goes directly to insertText:replacementRange:. |
| 646 - (void)insertText:(id)text { | 646 - (void)insertText:(id)text { |
| 647 [self insertText:text replacementRange:NSMakeRange(NSNotFound, 0)]; | 647 [self insertText:text replacementRange:NSMakeRange(NSNotFound, 0)]; |
| 648 } | 648 } |
| 649 | 649 |
| 650 // Selection movement and scrolling. | 650 // Selection movement and scrolling. |
| 651 | 651 |
| 652 - (void)moveForward:(id)sender { |
| 653 IsTextRTL(textInputClient_) ? [self moveLeft:sender] |
| 654 : [self moveRight:sender]; |
| 655 } |
| 656 |
| 652 - (void)moveRight:(id)sender { | 657 - (void)moveRight:(id)sender { |
| 653 [self handleAction:IDS_MOVE_RIGHT | 658 [self handleAction:IDS_MOVE_RIGHT |
| 654 keyCode:ui::VKEY_RIGHT | 659 keyCode:ui::VKEY_RIGHT |
| 655 domCode:ui::DomCode::ARROW_RIGHT | 660 domCode:ui::DomCode::ARROW_RIGHT |
| 656 eventFlags:0]; | 661 eventFlags:0]; |
| 657 } | 662 } |
| 658 | 663 |
| 664 - (void)moveBackward:(id)sender { |
| 665 IsTextRTL(textInputClient_) ? [self moveRight:sender] |
| 666 : [self moveLeft:sender]; |
| 667 } |
| 668 |
| 659 - (void)moveLeft:(id)sender { | 669 - (void)moveLeft:(id)sender { |
| 660 [self handleAction:IDS_MOVE_LEFT | 670 [self handleAction:IDS_MOVE_LEFT |
| 661 keyCode:ui::VKEY_LEFT | 671 keyCode:ui::VKEY_LEFT |
| 662 domCode:ui::DomCode::ARROW_LEFT | 672 domCode:ui::DomCode::ARROW_LEFT |
| 663 eventFlags:0]; | 673 eventFlags:0]; |
| 664 } | 674 } |
| 665 | 675 |
| 666 - (void)moveUp:(id)sender { | 676 - (void)moveUp:(id)sender { |
| 667 [self handleAction:0 | 677 [self handleAction:IDS_MOVE_TO_BEGINNING_OF_LINE |
| 668 keyCode:ui::VKEY_UP | 678 keyCode:ui::VKEY_UP |
| 669 domCode:ui::DomCode::ARROW_UP | 679 domCode:ui::DomCode::ARROW_UP |
| 670 eventFlags:0]; | 680 eventFlags:0]; |
| 671 } | 681 } |
| 672 | 682 |
| 673 - (void)moveDown:(id)sender { | 683 - (void)moveDown:(id)sender { |
| 674 [self handleAction:0 | 684 [self handleAction:IDS_MOVE_TO_END_OF_LINE |
| 675 keyCode:ui::VKEY_DOWN | 685 keyCode:ui::VKEY_DOWN |
| 676 domCode:ui::DomCode::ARROW_DOWN | 686 domCode:ui::DomCode::ARROW_DOWN |
| 677 eventFlags:0]; | 687 eventFlags:0]; |
| 678 } | 688 } |
| 679 | 689 |
| 690 - (void)moveWordForward:(id)sender { |
| 691 IsTextRTL(textInputClient_) ? [self moveWordLeft:sender] |
| 692 : [self moveWordRight:sender]; |
| 693 } |
| 694 |
| 695 - (void)moveWordBackward:(id)sender { |
| 696 IsTextRTL(textInputClient_) ? [self moveWordRight:sender] |
| 697 : [self moveWordLeft:sender]; |
| 698 } |
| 699 |
| 700 - (void)moveToBeginningOfLine:(id)sender { |
| 701 [self handleAction:IDS_MOVE_TO_BEGINNING_OF_LINE |
| 702 keyCode:ui::VKEY_HOME |
| 703 domCode:ui::DomCode::HOME |
| 704 eventFlags:0]; |
| 705 } |
| 706 |
| 707 - (void)moveToEndOfLine:(id)sender { |
| 708 [self handleAction:IDS_MOVE_TO_END_OF_LINE |
| 709 keyCode:ui::VKEY_END |
| 710 domCode:ui::DomCode::END |
| 711 eventFlags:0]; |
| 712 } |
| 713 |
| 714 - (void)moveToBeginningOfParagraph:(id)sender { |
| 715 [self moveToBeginningOfLine:sender]; |
| 716 } |
| 717 |
| 718 - (void)moveToEndOfParagraph:(id)sender { |
| 719 [self moveToEndOfLine:sender]; |
| 720 } |
| 721 |
| 722 - (void)moveToEndOfDocument:(id)sender { |
| 723 [self handleAction:IDS_MOVE_TO_END_OF_LINE |
| 724 keyCode:ui::VKEY_END |
| 725 domCode:ui::DomCode::END |
| 726 eventFlags:ui::EF_CONTROL_DOWN]; |
| 727 } |
| 728 |
| 729 - (void)moveToBeginningOfDocument:(id)sender { |
| 730 [self handleAction:IDS_MOVE_TO_BEGINNING_OF_LINE |
| 731 keyCode:ui::VKEY_HOME |
| 732 domCode:ui::DomCode::HOME |
| 733 eventFlags:ui::EF_CONTROL_DOWN]; |
| 734 } |
| 735 |
| 736 - (void)pageDown:(id)sender { |
| 737 [self handleAction:IDS_MOVE_TO_END_OF_LINE |
| 738 keyCode:ui::VKEY_NEXT |
| 739 domCode:ui::DomCode::PAGE_DOWN |
| 740 eventFlags:0]; |
| 741 } |
| 742 |
| 743 - (void)pageUp:(id)sender { |
| 744 [self handleAction:IDS_MOVE_TO_BEGINNING_OF_LINE |
| 745 keyCode:ui::VKEY_PRIOR |
| 746 domCode:ui::DomCode::PAGE_UP |
| 747 eventFlags:0]; |
| 748 } |
| 749 |
| 750 - (void)moveBackwardAndModifySelection:(id)sender { |
| 751 IsTextRTL(textInputClient_) ? [self moveRightAndModifySelection:sender] |
| 752 : [self moveLeftAndModifySelection:sender]; |
| 753 } |
| 754 |
| 755 - (void)moveForwardAndModifySelection:(id)sender { |
| 756 IsTextRTL(textInputClient_) ? [self moveLeftAndModifySelection:sender] |
| 757 : [self moveRightAndModifySelection:sender]; |
| 758 } |
| 759 |
| 760 - (void)moveWordForwardAndModifySelection:(id)sender { |
| 761 IsTextRTL(textInputClient_) ? [self moveWordLeftAndModifySelection:sender] |
| 762 : [self moveWordRightAndModifySelection:sender]; |
| 763 } |
| 764 |
| 765 - (void)moveWordBackwardAndModifySelection:(id)sender { |
| 766 IsTextRTL(textInputClient_) ? [self moveWordRightAndModifySelection:sender] |
| 767 : [self moveWordLeftAndModifySelection:sender]; |
| 768 } |
| 769 |
| 770 - (void)moveUpAndModifySelection:(id)sender { |
| 771 [self handleAction:IDS_MOVE_TO_BEGINNING_OF_LINE_AND_MODIFY_SELECTION |
| 772 keyCode:ui::VKEY_UP |
| 773 domCode:ui::DomCode::ARROW_UP |
| 774 eventFlags:ui::EF_SHIFT_DOWN]; |
| 775 } |
| 776 |
| 777 - (void)moveDownAndModifySelection:(id)sender { |
| 778 [self handleAction:IDS_MOVE_TO_END_OF_LINE_AND_MODIFY_SELECTION |
| 779 keyCode:ui::VKEY_DOWN |
| 780 domCode:ui::DomCode::ARROW_DOWN |
| 781 eventFlags:ui::EF_SHIFT_DOWN]; |
| 782 } |
| 783 |
| 784 - (void)moveToBeginningOfLineAndModifySelection:(id)sender { |
| 785 [self handleAction:IDS_MOVE_TO_BEGINNING_OF_LINE_AND_MODIFY_SELECTION |
| 786 keyCode:ui::VKEY_HOME |
| 787 domCode:ui::DomCode::HOME |
| 788 eventFlags:ui::EF_SHIFT_DOWN]; |
| 789 } |
| 790 |
| 791 - (void)moveToEndOfLineAndModifySelection:(id)sender { |
| 792 [self handleAction:IDS_MOVE_TO_END_OF_LINE_AND_MODIFY_SELECTION |
| 793 keyCode:ui::VKEY_END |
| 794 domCode:ui::DomCode::END |
| 795 eventFlags:ui::EF_SHIFT_DOWN]; |
| 796 } |
| 797 |
| 798 - (void)moveToBeginningOfParagraphAndModifySelection:(id)sender { |
| 799 [self moveToBeginningOfLineAndModifySelection:sender]; |
| 800 } |
| 801 |
| 802 - (void)moveToEndOfParagraphAndModifySelection:(id)sender { |
| 803 [self moveToEndOfLineAndModifySelection:sender]; |
| 804 } |
| 805 |
| 806 - (void)moveToEndOfDocumentAndModifySelection:(id)sender { |
| 807 [self handleAction:IDS_MOVE_TO_END_OF_LINE_AND_MODIFY_SELECTION |
| 808 keyCode:ui::VKEY_END |
| 809 domCode:ui::DomCode::END |
| 810 eventFlags:ui::EF_CONTROL_DOWN | ui::EF_SHIFT_DOWN]; |
| 811 } |
| 812 |
| 813 - (void)moveToBeginningOfDocumentAndModifySelection:(id)sender { |
| 814 [self handleAction:IDS_MOVE_TO_BEGINNING_OF_LINE_AND_MODIFY_SELECTION |
| 815 keyCode:ui::VKEY_HOME |
| 816 domCode:ui::DomCode::HOME |
| 817 eventFlags:ui::EF_CONTROL_DOWN | ui::EF_SHIFT_DOWN]; |
| 818 } |
| 819 |
| 820 - (void)pageDownAndModifySelection:(id)sender { |
| 821 [self handleAction:IDS_MOVE_TO_END_OF_LINE_AND_MODIFY_SELECTION |
| 822 keyCode:ui::VKEY_NEXT |
| 823 domCode:ui::DomCode::PAGE_DOWN |
| 824 eventFlags:ui::EF_SHIFT_DOWN]; |
| 825 } |
| 826 |
| 827 - (void)pageUpAndModifySelection:(id)sender { |
| 828 [self handleAction:IDS_MOVE_TO_BEGINNING_OF_LINE_AND_MODIFY_SELECTION |
| 829 keyCode:ui::VKEY_PRIOR |
| 830 domCode:ui::DomCode::PAGE_UP |
| 831 eventFlags:ui::EF_SHIFT_DOWN]; |
| 832 } |
| 833 |
| 834 - (void)moveParagraphForwardAndModifySelection:(id)sender { |
| 835 [self handleAction:IDS_MOVE_TO_END_OF_LINE_AND_MODIFY_SELECTION |
| 836 keyCode:ui::VKEY_DOWN |
| 837 domCode:ui::DomCode::ARROW_DOWN |
| 838 eventFlags:ui::EF_CONTROL_DOWN | ui::EF_SHIFT_DOWN]; |
| 839 } |
| 840 |
| 841 - (void)moveParagraphBackwardAndModifySelection:(id)sender { |
| 842 [self handleAction:IDS_MOVE_TO_BEGINNING_OF_LINE_AND_MODIFY_SELECTION |
| 843 keyCode:ui::VKEY_UP |
| 844 domCode:ui::DomCode::ARROW_UP |
| 845 eventFlags:ui::EF_CONTROL_DOWN | ui::EF_SHIFT_DOWN]; |
| 846 } |
| 847 |
| 680 - (void)moveWordRight:(id)sender { | 848 - (void)moveWordRight:(id)sender { |
| 681 [self handleAction:IDS_MOVE_WORD_RIGHT | 849 [self handleAction:IDS_MOVE_WORD_RIGHT |
| 682 keyCode:ui::VKEY_RIGHT | 850 keyCode:ui::VKEY_RIGHT |
| 683 domCode:ui::DomCode::ARROW_RIGHT | 851 domCode:ui::DomCode::ARROW_RIGHT |
| 684 eventFlags:ui::EF_CONTROL_DOWN]; | 852 eventFlags:ui::EF_CONTROL_DOWN]; |
| 685 } | 853 } |
| 686 | 854 |
| 687 - (void)moveWordLeft:(id)sender { | 855 - (void)moveWordLeft:(id)sender { |
| 688 [self handleAction:IDS_MOVE_WORD_LEFT | 856 [self handleAction:IDS_MOVE_WORD_LEFT |
| 689 keyCode:ui::VKEY_LEFT | 857 keyCode:ui::VKEY_LEFT |
| 690 domCode:ui::DomCode::ARROW_LEFT | 858 domCode:ui::DomCode::ARROW_LEFT |
| 691 eventFlags:ui::EF_CONTROL_DOWN]; | 859 eventFlags:ui::EF_CONTROL_DOWN]; |
| 692 } | 860 } |
| 693 | 861 |
| 694 - (void)moveLeftAndModifySelection:(id)sender { | |
| 695 [self handleAction:IDS_MOVE_LEFT_AND_MODIFY_SELECTION | |
| 696 keyCode:ui::VKEY_LEFT | |
| 697 domCode:ui::DomCode::ARROW_LEFT | |
| 698 eventFlags:ui::EF_SHIFT_DOWN]; | |
| 699 } | |
| 700 | |
| 701 - (void)moveRightAndModifySelection:(id)sender { | 862 - (void)moveRightAndModifySelection:(id)sender { |
| 702 [self handleAction:IDS_MOVE_RIGHT_AND_MODIFY_SELECTION | 863 [self handleAction:IDS_MOVE_RIGHT_AND_MODIFY_SELECTION |
| 703 keyCode:ui::VKEY_RIGHT | 864 keyCode:ui::VKEY_RIGHT |
| 704 domCode:ui::DomCode::ARROW_RIGHT | 865 domCode:ui::DomCode::ARROW_RIGHT |
| 705 eventFlags:ui::EF_SHIFT_DOWN]; | 866 eventFlags:ui::EF_SHIFT_DOWN]; |
| 706 } | 867 } |
| 707 | 868 |
| 869 - (void)moveLeftAndModifySelection:(id)sender { |
| 870 [self handleAction:IDS_MOVE_LEFT_AND_MODIFY_SELECTION |
| 871 keyCode:ui::VKEY_LEFT |
| 872 domCode:ui::DomCode::ARROW_LEFT |
| 873 eventFlags:ui::EF_SHIFT_DOWN]; |
| 874 } |
| 875 |
| 708 - (void)moveWordRightAndModifySelection:(id)sender { | 876 - (void)moveWordRightAndModifySelection:(id)sender { |
| 709 [self handleAction:IDS_MOVE_WORD_RIGHT_AND_MODIFY_SELECTION | 877 [self handleAction:IDS_MOVE_WORD_RIGHT_AND_MODIFY_SELECTION |
| 710 keyCode:ui::VKEY_RIGHT | 878 keyCode:ui::VKEY_RIGHT |
| 711 domCode:ui::DomCode::ARROW_RIGHT | 879 domCode:ui::DomCode::ARROW_RIGHT |
| 712 eventFlags:ui::EF_CONTROL_DOWN | ui::EF_SHIFT_DOWN]; | 880 eventFlags:ui::EF_CONTROL_DOWN | ui::EF_SHIFT_DOWN]; |
| 713 } | 881 } |
| 714 | 882 |
| 715 - (void)moveWordLeftAndModifySelection:(id)sender { | 883 - (void)moveWordLeftAndModifySelection:(id)sender { |
| 716 [self handleAction:IDS_MOVE_WORD_LEFT_AND_MODIFY_SELECTION | 884 [self handleAction:IDS_MOVE_WORD_LEFT_AND_MODIFY_SELECTION |
| 717 keyCode:ui::VKEY_LEFT | 885 keyCode:ui::VKEY_LEFT |
| 718 domCode:ui::DomCode::ARROW_LEFT | 886 domCode:ui::DomCode::ARROW_LEFT |
| 719 eventFlags:ui::EF_CONTROL_DOWN | ui::EF_SHIFT_DOWN]; | 887 eventFlags:ui::EF_CONTROL_DOWN | ui::EF_SHIFT_DOWN]; |
| 720 } | 888 } |
| 721 | 889 |
| 722 - (void)moveToLeftEndOfLine:(id)sender { | 890 - (void)moveToLeftEndOfLine:(id)sender { |
| 723 [self handleAction:IDS_MOVE_TO_BEGINNING_OF_LINE | 891 IsTextRTL(textInputClient_) ? [self moveToEndOfLine:sender] |
| 724 keyCode:ui::VKEY_HOME | 892 : [self moveToBeginningOfLine:sender]; |
| 725 domCode:ui::DomCode::HOME | |
| 726 eventFlags:0]; | |
| 727 } | 893 } |
| 728 | 894 |
| 729 - (void)moveToRightEndOfLine:(id)sender { | 895 - (void)moveToRightEndOfLine:(id)sender { |
| 730 [self handleAction:IDS_MOVE_TO_END_OF_LINE | 896 IsTextRTL(textInputClient_) ? [self moveToBeginningOfLine:sender] |
| 731 keyCode:ui::VKEY_END | 897 : [self moveToEndOfLine:sender]; |
| 732 domCode:ui::DomCode::END | |
| 733 eventFlags:0]; | |
| 734 } | 898 } |
| 735 | 899 |
| 736 - (void)moveToLeftEndOfLineAndModifySelection:(id)sender { | 900 - (void)moveToLeftEndOfLineAndModifySelection:(id)sender { |
| 737 [self handleAction:IDS_MOVE_TO_BEGINNING_OF_LINE_AND_MODIFY_SELECTION | 901 IsTextRTL(textInputClient_) |
| 738 keyCode:ui::VKEY_HOME | 902 ? [self moveToEndOfLineAndModifySelection:sender] |
| 739 domCode:ui::DomCode::HOME | 903 : [self moveToBeginningOfLineAndModifySelection:sender]; |
| 740 eventFlags:ui::EF_SHIFT_DOWN]; | |
| 741 } | 904 } |
| 742 | 905 |
| 743 - (void)moveToRightEndOfLineAndModifySelection:(id)sender { | 906 - (void)moveToRightEndOfLineAndModifySelection:(id)sender { |
| 744 [self handleAction:IDS_MOVE_TO_END_OF_LINE_AND_MODIFY_SELECTION | 907 IsTextRTL(textInputClient_) |
| 745 keyCode:ui::VKEY_END | 908 ? [self moveToBeginningOfLineAndModifySelection:sender] |
| 746 domCode:ui::DomCode::END | 909 : [self moveToEndOfLineAndModifySelection:sender]; |
| 747 eventFlags:ui::EF_SHIFT_DOWN]; | |
| 748 } | 910 } |
| 749 | 911 |
| 750 // Deletions. | 912 // Deletions. |
| 751 | 913 |
| 752 - (void)deleteForward:(id)sender { | 914 - (void)deleteForward:(id)sender { |
| 753 [self handleAction:IDS_DELETE_FORWARD | 915 [self handleAction:IDS_DELETE_FORWARD |
| 754 keyCode:ui::VKEY_DELETE | 916 keyCode:ui::VKEY_DELETE |
| 755 domCode:ui::DomCode::DEL | 917 domCode:ui::DomCode::DEL |
| 756 eventFlags:0]; | 918 eventFlags:0]; |
| 757 } | 919 } |
| (...skipping 265 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1023 } | 1185 } |
| 1024 | 1186 |
| 1025 return [super accessibilityAttributeValue:attribute]; | 1187 return [super accessibilityAttributeValue:attribute]; |
| 1026 } | 1188 } |
| 1027 | 1189 |
| 1028 - (id)accessibilityHitTest:(NSPoint)point { | 1190 - (id)accessibilityHitTest:(NSPoint)point { |
| 1029 return [hostedView_->GetNativeViewAccessible() accessibilityHitTest:point]; | 1191 return [hostedView_->GetNativeViewAccessible() accessibilityHitTest:point]; |
| 1030 } | 1192 } |
| 1031 | 1193 |
| 1032 @end | 1194 @end |
| OLD | NEW |