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: 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
« no previous file with comments | « no previous file | ui/views/cocoa/bridged_native_widget_unittest.mm » ('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 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]
karandeepb 2016/05/16 00:11:08 I think that I should add a GetTextDirection() pub
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
676 // Todo ask if should use IDS_MOVE_UP.
666 - (void)moveUp:(id)sender { 677 - (void)moveUp:(id)sender {
karandeepb 2016/05/16 00:11:08 Should I use the command IDS_MOVE_UP and only enab
667 [self handleAction:0 678 [self handleAction:IDS_MOVE_TO_BEGINNING_OF_LINE
668 keyCode:ui::VKEY_UP 679 keyCode:ui::VKEY_UP
669 domCode:ui::DomCode::ARROW_UP 680 domCode:ui::DomCode::ARROW_UP
670 eventFlags:0]; 681 eventFlags:0];
671 } 682 }
672 683
673 - (void)moveDown:(id)sender { 684 - (void)moveDown:(id)sender {
674 [self handleAction:0 685 [self handleAction:IDS_MOVE_TO_END_OF_LINE
675 keyCode:ui::VKEY_DOWN 686 keyCode:ui::VKEY_DOWN
676 domCode:ui::DomCode::ARROW_DOWN 687 domCode:ui::DomCode::ARROW_DOWN
677 eventFlags:0]; 688 eventFlags:0];
678 } 689 }
679 690
691 - (void)moveWordForward:(nullable id)sender {
692 IsTextRTL(textInputClient_) ? [self moveWordLeft:sender]
693 : [self moveWordRight:sender];
694 }
695
696 - (void)moveWordBackward:(nullable id)sender {
697 IsTextRTL(textInputClient_) ? [self moveWordRight:sender]
698 : [self moveWordLeft:sender];
699 }
700
701 - (void)moveToBeginningOfLine:(nullable id)sender {
702 [self handleAction:IDS_MOVE_TO_BEGINNING_OF_LINE
703 keyCode:ui::VKEY_HOME
704 domCode:ui::DomCode::HOME
705 eventFlags:0];
706 }
707
708 - (void)moveToEndOfLine:(nullable id)sender {
709 [self handleAction:IDS_MOVE_TO_END_OF_LINE
710 keyCode:ui::VKEY_END
711 domCode:ui::DomCode::END
712 eventFlags:0];
713 }
714
715 - (void)moveToBeginningOfParagraph:(nullable id)sender {
716 [self moveToBeginningOfLine:sender];
717 }
718
719 - (void)moveToEndOfParagraph:(nullable id)sender {
720 [self moveToEndOfLine:sender];
721 }
722
723 - (void)moveToEndOfDocument:(nullable id)sender {
724 [self moveToEndOfLine:sender];
725 }
726
727 - (void)moveToBeginningOfDocument:(nullable id)sender {
728 [self moveToBeginningOfLine:sender];
729 }
730
731 - (void)pageDown:(nullable id)sender {
732 [self handleAction:IDS_MOVE_TO_END_OF_LINE
733 keyCode:ui::VKEY_NEXT
734 domCode:ui::DomCode::PAGE_DOWN
735 eventFlags:0];
736 }
737
738 - (void)pageUp:(nullable id)sender {
739 [self handleAction:IDS_MOVE_TO_BEGINNING_OF_LINE
740 keyCode:ui::VKEY_PRIOR
741 domCode:ui::DomCode::PAGE_UP
742 eventFlags:0];
743 }
744
745 - (void)moveBackwardAndModifySelection:(nullable id)sender {
746 IsTextRTL(textInputClient_) ? [self moveRightAndModifySelection:sender]
747 : [self moveLeftAndModifySelection:sender];
748 }
749
750 - (void)moveForwardAndModifySelection:(nullable id)sender {
751 IsTextRTL(textInputClient_) ? [self moveLeftAndModifySelection:sender]
752 : [self moveRightAndModifySelection:sender];
753 }
754
755 - (void)moveWordForwardAndModifySelection:(nullable id)sender {
756 IsTextRTL(textInputClient_) ? [self moveWordLeftAndModifySelection:sender]
757 : [self moveWordRightAndModifySelection:sender];
758 }
759
760 - (void)moveWordBackwardAndModifySelection:(nullable id)sender {
761 IsTextRTL(textInputClient_) ? [self moveWordRightAndModifySelection:sender]
762 : [self moveWordLeftAndModifySelection:sender];
763 }
764
765 - (void)moveUpAndModifySelection:(nullable id)sender {
766 [self moveToBeginningOfLineAndModifySelection:sender];
767 }
768
769 - (void)moveDownAndModifySelection:(nullable id)sender {
770 [self moveToEndOfLineAndModifySelection:sender];
771 }
772
773 - (void)moveToBeginningOfLineAndModifySelection:(nullable id)sender {
774 [self handleAction:IDS_MOVE_TO_BEGINNING_OF_LINE_AND_MODIFY_SELECTION
775 keyCode:ui::VKEY_HOME
776 domCode:ui::DomCode::HOME
777 eventFlags:ui::EF_SHIFT_DOWN];
778 }
779
780 - (void)moveToEndOfLineAndModifySelection:(nullable id)sender {
781 [self handleAction:IDS_MOVE_TO_END_OF_LINE_AND_MODIFY_SELECTION
782 keyCode:ui::VKEY_END
783 domCode:ui::DomCode::END
784 eventFlags:ui::EF_SHIFT_DOWN];
785 }
786
787 - (void)moveToBeginningOfParagraphAndModifySelection:(nullable id)sender {
788 [self moveToBeginningOfLineAndModifySelection:sender];
789 }
790
791 - (void)moveToEndOfParagraphAndModifySelection:(nullable id)sender {
792 [self moveToEndOfLineAndModifySelection:sender];
793 }
794
795 - (void)moveToEndOfDocumentAndModifySelection:(nullable id)sender {
796 [self moveToEndOfLineAndModifySelection:sender];
797 }
798
799 - (void)moveToBeginningOfDocumentAndModifySelection:(nullable id)sender {
800 [self moveToBeginningOfLineAndModifySelection:sender];
801 }
802
803 // Not sure if keycodes are to be added, can use
804 // https://code.google.com/p/chromium/codesearch#chromium/src/third_party/WebKit /Source/core/editing/EditingBehavior.cpp
805 - (void)pageDownAndModifySelection:(nullable id)sender {
806 [self moveToEndOfLineAndModifySelection:sender];
807 }
808
809 - (void)pageUpAndModifySelection:(nullable id)sender {
810 [self moveToBeginningOfLineAndModifySelection:sender];
811 }
812
813 - (void)moveParagraphForwardAndModifySelection:(nullable id)sender {
814 [self moveToEndOfLineAndModifySelection:sender];
815 }
816
817 - (void)moveParagraphBackwardAndModifySelection:(nullable id)sender {
818 [self moveToBeginningOfLineAndModifySelection:sender];
819 }
820
680 - (void)moveWordRight:(id)sender { 821 - (void)moveWordRight:(id)sender {
681 [self handleAction:IDS_MOVE_WORD_RIGHT 822 [self handleAction:IDS_MOVE_WORD_RIGHT
682 keyCode:ui::VKEY_RIGHT 823 keyCode:ui::VKEY_RIGHT
683 domCode:ui::DomCode::ARROW_RIGHT 824 domCode:ui::DomCode::ARROW_RIGHT
684 eventFlags:ui::EF_CONTROL_DOWN]; 825 eventFlags:ui::EF_CONTROL_DOWN];
685 } 826 }
686 827
687 - (void)moveWordLeft:(id)sender { 828 - (void)moveWordLeft:(nullable id)sender {
688 [self handleAction:IDS_MOVE_WORD_LEFT 829 [self handleAction:IDS_MOVE_WORD_LEFT
689 keyCode:ui::VKEY_LEFT 830 keyCode:ui::VKEY_LEFT
690 domCode:ui::DomCode::ARROW_LEFT 831 domCode:ui::DomCode::ARROW_LEFT
691 eventFlags:ui::EF_CONTROL_DOWN]; 832 eventFlags:ui::EF_CONTROL_DOWN];
692 } 833 }
693 834
694 - (void)moveLeftAndModifySelection:(id)sender { 835 - (void)moveRightAndModifySelection:(nullable id)sender {
836 [self handleAction:IDS_MOVE_RIGHT_AND_MODIFY_SELECTION
837 keyCode:ui::VKEY_RIGHT
838 domCode:ui::DomCode::ARROW_RIGHT
839 eventFlags:ui::EF_SHIFT_DOWN];
840 }
841
842 - (void)moveLeftAndModifySelection:(nullable id)sender {
695 [self handleAction:IDS_MOVE_LEFT_AND_MODIFY_SELECTION 843 [self handleAction:IDS_MOVE_LEFT_AND_MODIFY_SELECTION
696 keyCode:ui::VKEY_LEFT 844 keyCode:ui::VKEY_LEFT
697 domCode:ui::DomCode::ARROW_LEFT 845 domCode:ui::DomCode::ARROW_LEFT
698 eventFlags:ui::EF_SHIFT_DOWN]; 846 eventFlags:ui::EF_SHIFT_DOWN];
699 } 847 }
700 848
701 - (void)moveRightAndModifySelection:(id)sender { 849 - (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 850 [self handleAction:IDS_MOVE_WORD_RIGHT_AND_MODIFY_SELECTION
710 keyCode:ui::VKEY_RIGHT 851 keyCode:ui::VKEY_RIGHT
711 domCode:ui::DomCode::ARROW_RIGHT 852 domCode:ui::DomCode::ARROW_RIGHT
712 eventFlags:ui::EF_CONTROL_DOWN | ui::EF_SHIFT_DOWN]; 853 eventFlags:ui::EF_CONTROL_DOWN | ui::EF_SHIFT_DOWN];
713 } 854 }
714 855
715 - (void)moveWordLeftAndModifySelection:(id)sender { 856 - (void)moveWordLeftAndModifySelection:(nullable id)sender {
716 [self handleAction:IDS_MOVE_WORD_LEFT_AND_MODIFY_SELECTION 857 [self handleAction:IDS_MOVE_WORD_LEFT_AND_MODIFY_SELECTION
717 keyCode:ui::VKEY_LEFT 858 keyCode:ui::VKEY_LEFT
718 domCode:ui::DomCode::ARROW_LEFT 859 domCode:ui::DomCode::ARROW_LEFT
719 eventFlags:ui::EF_CONTROL_DOWN | ui::EF_SHIFT_DOWN]; 860 eventFlags:ui::EF_CONTROL_DOWN | ui::EF_SHIFT_DOWN];
720 } 861 }
721 862
722 - (void)moveToLeftEndOfLine:(id)sender { 863 - (void)moveToLeftEndOfLine:(nullable id)sender {
723 [self handleAction:IDS_MOVE_TO_BEGINNING_OF_LINE 864 IsTextRTL(textInputClient_) ? [self moveToEndOfLine:sender]
724 keyCode:ui::VKEY_HOME 865 : [self moveToBeginningOfLine:sender];
725 domCode:ui::DomCode::HOME
726 eventFlags:0];
727 } 866 }
728 867
729 - (void)moveToRightEndOfLine:(id)sender { 868 - (void)moveToRightEndOfLine:(nullable id)sender {
730 [self handleAction:IDS_MOVE_TO_END_OF_LINE 869 IsTextRTL(textInputClient_) ? [self moveToBeginningOfLine:sender]
731 keyCode:ui::VKEY_END 870 : [self moveToEndOfLine:sender];
732 domCode:ui::DomCode::END
733 eventFlags:0];
734 } 871 }
735 872
736 - (void)moveToLeftEndOfLineAndModifySelection:(id)sender { 873 - (void)moveToLeftEndOfLineAndModifySelection:(nullable id)sender {
737 [self handleAction:IDS_MOVE_TO_BEGINNING_OF_LINE_AND_MODIFY_SELECTION 874 IsTextRTL(textInputClient_)
738 keyCode:ui::VKEY_HOME 875 ? [self moveToEndOfLineAndModifySelection:sender]
739 domCode:ui::DomCode::HOME 876 : [self moveToBeginningOfLineAndModifySelection:sender];
740 eventFlags:ui::EF_SHIFT_DOWN];
741 } 877 }
742 878
743 - (void)moveToRightEndOfLineAndModifySelection:(id)sender { 879 - (void)moveToRightEndOfLineAndModifySelection:(nullable id)sender {
744 [self handleAction:IDS_MOVE_TO_END_OF_LINE_AND_MODIFY_SELECTION 880 IsTextRTL(textInputClient_)
745 keyCode:ui::VKEY_END 881 ? [self moveToBeginningOfLineAndModifySelection:sender]
746 domCode:ui::DomCode::END 882 : [self moveToEndOfLineAndModifySelection:sender];
747 eventFlags:ui::EF_SHIFT_DOWN];
748 } 883 }
749 884
750 // Deletions. 885 // Deletions.
751 886
752 - (void)deleteForward:(id)sender { 887 - (void)deleteForward:(id)sender {
753 [self handleAction:IDS_DELETE_FORWARD 888 [self handleAction:IDS_DELETE_FORWARD
754 keyCode:ui::VKEY_DELETE 889 keyCode:ui::VKEY_DELETE
755 domCode:ui::DomCode::DEL 890 domCode:ui::DomCode::DEL
756 eventFlags:0]; 891 eventFlags:0];
757 } 892 }
(...skipping 265 matching lines...) Expand 10 before | Expand all | Expand 10 after
1023 } 1158 }
1024 1159
1025 return [super accessibilityAttributeValue:attribute]; 1160 return [super accessibilityAttributeValue:attribute];
1026 } 1161 }
1027 1162
1028 - (id)accessibilityHitTest:(NSPoint)point { 1163 - (id)accessibilityHitTest:(NSPoint)point {
1029 return [hostedView_->GetNativeViewAccessible() accessibilityHitTest:point]; 1164 return [hostedView_->GetNativeViewAccessible() accessibilityHitTest:point];
1030 } 1165 }
1031 1166
1032 @end 1167 @end
OLDNEW
« no previous file with comments | « no previous file | ui/views/cocoa/bridged_native_widget_unittest.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698