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

Side by Side Diff: ui/views/cocoa/bridged_content_view.mm

Issue 1907253002: MacViews: Implement move and move*AndModifySelection commands. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Split tests Created 4 years, 7 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 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 631 matching lines...) Expand 10 before | Expand all | Expand 10 after
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:(nullable 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:(nullable 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:(nullable id)sender {
691 IsTextRTL(textInputClient_) ? [self moveWordLeft:sender]
692 : [self moveWordRight:sender];
693 }
694
695 - (void)moveWordBackward:(nullable id)sender {
696 IsTextRTL(textInputClient_) ? [self moveWordRight:sender]
697 : [self moveWordLeft:sender];
698 }
699
700 - (void)moveToBeginningOfLine:(nullable 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:(nullable 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:(nullable id)sender {
715 [self moveToBeginningOfLine:sender];
716 }
717
718 - (void)moveToEndOfParagraph:(nullable id)sender {
719 [self moveToEndOfLine:sender];
720 }
721
722 - (void)moveToEndOfDocument:(nullable 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:(nullable 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:(nullable 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:(nullable 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:(nullable id)sender {
751 IsTextRTL(textInputClient_) ? [self moveRightAndModifySelection:sender]
752 : [self moveLeftAndModifySelection:sender];
753 }
754
755 - (void)moveForwardAndModifySelection:(nullable id)sender {
756 IsTextRTL(textInputClient_) ? [self moveLeftAndModifySelection:sender]
757 : [self moveRightAndModifySelection:sender];
758 }
759
760 - (void)moveWordForwardAndModifySelection:(nullable id)sender {
761 IsTextRTL(textInputClient_) ? [self moveWordLeftAndModifySelection:sender]
762 : [self moveWordRightAndModifySelection:sender];
763 }
764
765 - (void)moveWordBackwardAndModifySelection:(nullable id)sender {
766 IsTextRTL(textInputClient_) ? [self moveWordRightAndModifySelection:sender]
767 : [self moveWordLeftAndModifySelection:sender];
768 }
769
770 - (void)moveUpAndModifySelection:(nullable 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:(nullable 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:(nullable 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:(nullable 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:(nullable id)sender {
799 [self moveToBeginningOfLineAndModifySelection:sender];
800 }
801
802 - (void)moveToEndOfParagraphAndModifySelection:(nullable id)sender {
803 [self moveToEndOfLineAndModifySelection:sender];
804 }
805
806 - (void)moveToEndOfDocumentAndModifySelection:(nullable 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:(nullable 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:(nullable 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:(nullable 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:(nullable 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:(nullable 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:(nullable 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 { 862 - (void)moveRightAndModifySelection:(nullable id)sender {
863 [self handleAction:IDS_MOVE_RIGHT_AND_MODIFY_SELECTION
864 keyCode:ui::VKEY_RIGHT
865 domCode:ui::DomCode::ARROW_RIGHT
866 eventFlags:ui::EF_SHIFT_DOWN];
867 }
868
869 - (void)moveLeftAndModifySelection:(nullable id)sender {
695 [self handleAction:IDS_MOVE_LEFT_AND_MODIFY_SELECTION 870 [self handleAction:IDS_MOVE_LEFT_AND_MODIFY_SELECTION
696 keyCode:ui::VKEY_LEFT 871 keyCode:ui::VKEY_LEFT
697 domCode:ui::DomCode::ARROW_LEFT 872 domCode:ui::DomCode::ARROW_LEFT
698 eventFlags:ui::EF_SHIFT_DOWN]; 873 eventFlags:ui::EF_SHIFT_DOWN];
699 } 874 }
700 875
701 - (void)moveRightAndModifySelection:(id)sender { 876 - (void)moveWordRightAndModifySelection:(nullable id)sender {
702 [self handleAction:IDS_MOVE_RIGHT_AND_MODIFY_SELECTION
703 keyCode:ui::VKEY_RIGHT
704 domCode:ui::DomCode::ARROW_RIGHT
705 eventFlags:ui::EF_SHIFT_DOWN];
706 }
707
708 - (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:(nullable 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:(nullable 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:(nullable 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:(nullable 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:(nullable 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
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
OLDNEW
« no previous file with comments | « no previous file | ui/views/cocoa/bridged_native_widget_unittest.mm » ('j') | ui/views/cocoa/bridged_native_widget_unittest.mm » ('J')

Powered by Google App Engine
This is Rietveld 408576698