OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2010, 2011 Apple Inc. All rights reserved. | 2 * Copyright (C) 2010, 2011 Apple Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
6 * are met: | 6 * are met: |
7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
58 } | 58 } |
59 | 59 |
60 static bool supportsContentAreaScrolledInDirection() | 60 static bool supportsContentAreaScrolledInDirection() |
61 { | 61 { |
62 static bool globalSupportsContentAreaScrolledInDirection = [NSClassFromStrin
g(@"NSScrollerImpPair") instancesRespondToSelector:@selector(contentAreaScrolled
InDirection:)]; | 62 static bool globalSupportsContentAreaScrolledInDirection = [NSClassFromStrin
g(@"NSScrollerImpPair") instancesRespondToSelector:@selector(contentAreaScrolled
InDirection:)]; |
63 return globalSupportsContentAreaScrolledInDirection; | 63 return globalSupportsContentAreaScrolledInDirection; |
64 } | 64 } |
65 | 65 |
66 static ScrollbarThemeMacOverlayAPI* macOverlayScrollbarTheme() | 66 static ScrollbarThemeMacOverlayAPI* macOverlayScrollbarTheme() |
67 { | 67 { |
68 RELEASE_ASSERT_WITH_SECURITY_IMPLICATION(isScrollbarOverlayAPIAvailable()); | 68 RELEASE_ASSERT_WITH_SECURITY_IMPLICATION(ScrollbarThemeMacCommon::isOverlayA
PIAvailable()); |
69 ScrollbarTheme* scrollbarTheme = ScrollbarTheme::theme(); | 69 ScrollbarTheme* scrollbarTheme = ScrollbarTheme::theme(); |
70 return !scrollbarTheme->isMockTheme() ? static_cast<ScrollbarThemeMacOverlay
API*>(scrollbarTheme) : 0; | 70 return !scrollbarTheme->isMockTheme() ? static_cast<ScrollbarThemeMacOverlay
API*>(scrollbarTheme) : 0; |
71 } | 71 } |
72 | 72 |
73 static ScrollbarPainter scrollbarPainterForScrollbar(Scrollbar* scrollbar) | 73 static ScrollbarPainter scrollbarPainterForScrollbar(Scrollbar* scrollbar) |
74 { | 74 { |
75 if (ScrollbarThemeMacOverlayAPI* scrollbarTheme = macOverlayScrollbarTheme()
) | 75 if (ScrollbarThemeMacOverlayAPI* scrollbarTheme = macOverlayScrollbarTheme()
) |
76 return scrollbarTheme->painterForScrollbar(scrollbar); | 76 return scrollbarTheme->painterForScrollbar(scrollbar); |
77 | 77 |
78 return nil; | 78 return nil; |
(...skipping 514 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
593 #if USE(RUBBER_BANDING) | 593 #if USE(RUBBER_BANDING) |
594 , m_scrollElasticityController(this) | 594 , m_scrollElasticityController(this) |
595 , m_snapRubberBandTimer(this, &ScrollAnimatorMac::snapRubberBandTimerFired) | 595 , m_snapRubberBandTimer(this, &ScrollAnimatorMac::snapRubberBandTimerFired) |
596 #endif | 596 #endif |
597 , m_haveScrolledSincePageLoad(false) | 597 , m_haveScrolledSincePageLoad(false) |
598 , m_needsScrollerStyleUpdate(false) | 598 , m_needsScrollerStyleUpdate(false) |
599 { | 599 { |
600 m_scrollAnimationHelperDelegate.adoptNS([[WebScrollAnimationHelperDelegate a
lloc] initWithScrollAnimator:this]); | 600 m_scrollAnimationHelperDelegate.adoptNS([[WebScrollAnimationHelperDelegate a
lloc] initWithScrollAnimator:this]); |
601 m_scrollAnimationHelper.adoptNS([[NSClassFromString(@"NSScrollAnimationHelpe
r") alloc] initWithDelegate:m_scrollAnimationHelperDelegate.get()]); | 601 m_scrollAnimationHelper.adoptNS([[NSClassFromString(@"NSScrollAnimationHelpe
r") alloc] initWithDelegate:m_scrollAnimationHelperDelegate.get()]); |
602 | 602 |
603 if (isScrollbarOverlayAPIAvailable()) { | 603 if (ScrollbarThemeMacCommon::isOverlayAPIAvailable()) { |
604 m_scrollbarPainterControllerDelegate.adoptNS([[WebScrollbarPainterContro
llerDelegate alloc] initWithScrollableArea:scrollableArea]); | 604 m_scrollbarPainterControllerDelegate.adoptNS([[WebScrollbarPainterContro
llerDelegate alloc] initWithScrollableArea:scrollableArea]); |
605 m_scrollbarPainterController = [[[NSClassFromString(@"NSScrollerImpPair"
) alloc] init] autorelease]; | 605 m_scrollbarPainterController = [[[NSClassFromString(@"NSScrollerImpPair"
) alloc] init] autorelease]; |
606 [m_scrollbarPainterController.get() setDelegate:m_scrollbarPainterContro
llerDelegate.get()]; | 606 [m_scrollbarPainterController.get() setDelegate:m_scrollbarPainterContro
llerDelegate.get()]; |
607 [m_scrollbarPainterController.get() setScrollerStyle:recommendedScroller
Style()]; | 607 [m_scrollbarPainterController.get() setScrollerStyle:ScrollbarThemeMacCo
mmon::recommendedScrollerStyle()]; |
608 } | 608 } |
609 } | 609 } |
610 | 610 |
611 ScrollAnimatorMac::~ScrollAnimatorMac() | 611 ScrollAnimatorMac::~ScrollAnimatorMac() |
612 { | 612 { |
613 if (isScrollbarOverlayAPIAvailable()) { | 613 if (ScrollbarThemeMacCommon::isOverlayAPIAvailable()) { |
614 BEGIN_BLOCK_OBJC_EXCEPTIONS; | 614 BEGIN_BLOCK_OBJC_EXCEPTIONS; |
615 [m_scrollbarPainterControllerDelegate.get() invalidate]; | 615 [m_scrollbarPainterControllerDelegate.get() invalidate]; |
616 [m_scrollbarPainterController.get() setDelegate:nil]; | 616 [m_scrollbarPainterController.get() setDelegate:nil]; |
617 [m_horizontalScrollbarPainterDelegate.get() invalidate]; | 617 [m_horizontalScrollbarPainterDelegate.get() invalidate]; |
618 [m_verticalScrollbarPainterDelegate.get() invalidate]; | 618 [m_verticalScrollbarPainterDelegate.get() invalidate]; |
619 [m_scrollAnimationHelperDelegate.get() invalidate]; | 619 [m_scrollAnimationHelperDelegate.get() invalidate]; |
620 END_BLOCK_OBJC_EXCEPTIONS; | 620 END_BLOCK_OBJC_EXCEPTIONS; |
621 } | 621 } |
622 } | 622 } |
623 | 623 |
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
726 void ScrollAnimatorMac::notifyPositionChanged(const FloatSize& delta) | 726 void ScrollAnimatorMac::notifyPositionChanged(const FloatSize& delta) |
727 { | 727 { |
728 notifyContentAreaScrolled(delta); | 728 notifyContentAreaScrolled(delta); |
729 ScrollAnimator::notifyPositionChanged(delta); | 729 ScrollAnimator::notifyPositionChanged(delta); |
730 } | 730 } |
731 | 731 |
732 void ScrollAnimatorMac::contentAreaWillPaint() const | 732 void ScrollAnimatorMac::contentAreaWillPaint() const |
733 { | 733 { |
734 if (!scrollableArea()->scrollbarsCanBeActive()) | 734 if (!scrollableArea()->scrollbarsCanBeActive()) |
735 return; | 735 return; |
736 if (isScrollbarOverlayAPIAvailable()) | 736 if (ScrollbarThemeMacCommon::isOverlayAPIAvailable()) |
737 [m_scrollbarPainterController.get() contentAreaWillDraw]; | 737 [m_scrollbarPainterController.get() contentAreaWillDraw]; |
738 } | 738 } |
739 | 739 |
740 void ScrollAnimatorMac::mouseEnteredContentArea() const | 740 void ScrollAnimatorMac::mouseEnteredContentArea() const |
741 { | 741 { |
742 if (!scrollableArea()->scrollbarsCanBeActive()) | 742 if (!scrollableArea()->scrollbarsCanBeActive()) |
743 return; | 743 return; |
744 if (isScrollbarOverlayAPIAvailable()) | 744 if (ScrollbarThemeMacCommon::isOverlayAPIAvailable()) |
745 [m_scrollbarPainterController.get() mouseEnteredContentArea]; | 745 [m_scrollbarPainterController.get() mouseEnteredContentArea]; |
746 } | 746 } |
747 | 747 |
748 void ScrollAnimatorMac::mouseExitedContentArea() const | 748 void ScrollAnimatorMac::mouseExitedContentArea() const |
749 { | 749 { |
750 if (!scrollableArea()->scrollbarsCanBeActive()) | 750 if (!scrollableArea()->scrollbarsCanBeActive()) |
751 return; | 751 return; |
752 if (isScrollbarOverlayAPIAvailable()) | 752 if (ScrollbarThemeMacCommon::isOverlayAPIAvailable()) |
753 [m_scrollbarPainterController.get() mouseExitedContentArea]; | 753 [m_scrollbarPainterController.get() mouseExitedContentArea]; |
754 } | 754 } |
755 | 755 |
756 void ScrollAnimatorMac::mouseMovedInContentArea() const | 756 void ScrollAnimatorMac::mouseMovedInContentArea() const |
757 { | 757 { |
758 if (!scrollableArea()->scrollbarsCanBeActive()) | 758 if (!scrollableArea()->scrollbarsCanBeActive()) |
759 return; | 759 return; |
760 if (isScrollbarOverlayAPIAvailable()) | 760 if (ScrollbarThemeMacCommon::isOverlayAPIAvailable()) |
761 [m_scrollbarPainterController.get() mouseMovedInContentArea]; | 761 [m_scrollbarPainterController.get() mouseMovedInContentArea]; |
762 } | 762 } |
763 | 763 |
764 void ScrollAnimatorMac::mouseEnteredScrollbar(Scrollbar* scrollbar) const | 764 void ScrollAnimatorMac::mouseEnteredScrollbar(Scrollbar* scrollbar) const |
765 { | 765 { |
766 // At this time, only legacy scrollbars needs to send notifications here. | 766 // At this time, only legacy scrollbars needs to send notifications here. |
767 if (recommendedScrollerStyle() != NSScrollerStyleLegacy) | 767 if (ScrollbarThemeMacCommon::recommendedScrollerStyle() != NSScrollerStyleLe
gacy) |
768 return; | 768 return; |
769 | 769 |
770 if (!scrollableArea()->scrollbarsCanBeActive()) | 770 if (!scrollableArea()->scrollbarsCanBeActive()) |
771 return; | 771 return; |
772 | 772 |
773 if (isScrollbarOverlayAPIAvailable()) { | 773 if (ScrollbarThemeMacCommon::isOverlayAPIAvailable()) { |
774 if (!supportsUIStateTransitionProgress()) | 774 if (!supportsUIStateTransitionProgress()) |
775 return; | 775 return; |
776 if (ScrollbarPainter painter = scrollbarPainterForScrollbar(scrollbar)) | 776 if (ScrollbarPainter painter = scrollbarPainterForScrollbar(scrollbar)) |
777 [painter mouseEnteredScroller]; | 777 [painter mouseEnteredScroller]; |
778 } | 778 } |
779 } | 779 } |
780 | 780 |
781 void ScrollAnimatorMac::mouseExitedScrollbar(Scrollbar* scrollbar) const | 781 void ScrollAnimatorMac::mouseExitedScrollbar(Scrollbar* scrollbar) const |
782 { | 782 { |
783 // At this time, only legacy scrollbars needs to send notifications here. | 783 // At this time, only legacy scrollbars needs to send notifications here. |
784 if (recommendedScrollerStyle() != NSScrollerStyleLegacy) | 784 if (ScrollbarThemeMacCommon::recommendedScrollerStyle() != NSScrollerStyleLe
gacy) |
785 return; | 785 return; |
786 | 786 |
787 if (!scrollableArea()->scrollbarsCanBeActive()) | 787 if (!scrollableArea()->scrollbarsCanBeActive()) |
788 return; | 788 return; |
789 | 789 |
790 if (isScrollbarOverlayAPIAvailable()) { | 790 if (ScrollbarThemeMacCommon::isOverlayAPIAvailable()) { |
791 if (!supportsUIStateTransitionProgress()) | 791 if (!supportsUIStateTransitionProgress()) |
792 return; | 792 return; |
793 if (ScrollbarPainter painter = scrollbarPainterForScrollbar(scrollbar)) | 793 if (ScrollbarPainter painter = scrollbarPainterForScrollbar(scrollbar)) |
794 [painter mouseExitedScroller]; | 794 [painter mouseExitedScroller]; |
795 } | 795 } |
796 } | 796 } |
797 | 797 |
798 void ScrollAnimatorMac::willStartLiveResize() | 798 void ScrollAnimatorMac::willStartLiveResize() |
799 { | 799 { |
800 if (!scrollableArea()->scrollbarsCanBeActive()) | 800 if (!scrollableArea()->scrollbarsCanBeActive()) |
801 return; | 801 return; |
802 if (isScrollbarOverlayAPIAvailable()) | 802 if (ScrollbarThemeMacCommon::isOverlayAPIAvailable()) |
803 [m_scrollbarPainterController.get() startLiveResize]; | 803 [m_scrollbarPainterController.get() startLiveResize]; |
804 } | 804 } |
805 | 805 |
806 void ScrollAnimatorMac::contentsResized() const | 806 void ScrollAnimatorMac::contentsResized() const |
807 { | 807 { |
808 if (!scrollableArea()->scrollbarsCanBeActive()) | 808 if (!scrollableArea()->scrollbarsCanBeActive()) |
809 return; | 809 return; |
810 if (isScrollbarOverlayAPIAvailable()) | 810 if (ScrollbarThemeMacCommon::isOverlayAPIAvailable()) |
811 [m_scrollbarPainterController.get() contentAreaDidResize]; | 811 [m_scrollbarPainterController.get() contentAreaDidResize]; |
812 } | 812 } |
813 | 813 |
814 void ScrollAnimatorMac::willEndLiveResize() | 814 void ScrollAnimatorMac::willEndLiveResize() |
815 { | 815 { |
816 if (!scrollableArea()->scrollbarsCanBeActive()) | 816 if (!scrollableArea()->scrollbarsCanBeActive()) |
817 return; | 817 return; |
818 if (isScrollbarOverlayAPIAvailable()) | 818 if (ScrollbarThemeMacCommon::isOverlayAPIAvailable()) |
819 [m_scrollbarPainterController.get() endLiveResize]; | 819 [m_scrollbarPainterController.get() endLiveResize]; |
820 } | 820 } |
821 | 821 |
822 void ScrollAnimatorMac::contentAreaDidShow() const | 822 void ScrollAnimatorMac::contentAreaDidShow() const |
823 { | 823 { |
824 if (!scrollableArea()->scrollbarsCanBeActive()) | 824 if (!scrollableArea()->scrollbarsCanBeActive()) |
825 return; | 825 return; |
826 if (isScrollbarOverlayAPIAvailable()) | 826 if (ScrollbarThemeMacCommon::isOverlayAPIAvailable()) |
827 [m_scrollbarPainterController.get() windowOrderedIn]; | 827 [m_scrollbarPainterController.get() windowOrderedIn]; |
828 } | 828 } |
829 | 829 |
830 void ScrollAnimatorMac::contentAreaDidHide() const | 830 void ScrollAnimatorMac::contentAreaDidHide() const |
831 { | 831 { |
832 if (!scrollableArea()->scrollbarsCanBeActive()) | 832 if (!scrollableArea()->scrollbarsCanBeActive()) |
833 return; | 833 return; |
834 if (isScrollbarOverlayAPIAvailable()) | 834 if (ScrollbarThemeMacCommon::isOverlayAPIAvailable()) |
835 [m_scrollbarPainterController.get() windowOrderedOut]; | 835 [m_scrollbarPainterController.get() windowOrderedOut]; |
836 } | 836 } |
837 | 837 |
838 void ScrollAnimatorMac::didBeginScrollGesture() const | 838 void ScrollAnimatorMac::didBeginScrollGesture() const |
839 { | 839 { |
840 if (!scrollableArea()->scrollbarsCanBeActive()) | 840 if (!scrollableArea()->scrollbarsCanBeActive()) |
841 return; | 841 return; |
842 if (isScrollbarOverlayAPIAvailable()) | 842 if (ScrollbarThemeMacCommon::isOverlayAPIAvailable()) |
843 [m_scrollbarPainterController.get() beginScrollGesture]; | 843 [m_scrollbarPainterController.get() beginScrollGesture]; |
844 } | 844 } |
845 | 845 |
846 void ScrollAnimatorMac::didEndScrollGesture() const | 846 void ScrollAnimatorMac::didEndScrollGesture() const |
847 { | 847 { |
848 if (!scrollableArea()->scrollbarsCanBeActive()) | 848 if (!scrollableArea()->scrollbarsCanBeActive()) |
849 return; | 849 return; |
850 if (isScrollbarOverlayAPIAvailable()) | 850 if (ScrollbarThemeMacCommon::isOverlayAPIAvailable()) |
851 [m_scrollbarPainterController.get() endScrollGesture]; | 851 [m_scrollbarPainterController.get() endScrollGesture]; |
852 } | 852 } |
853 | 853 |
854 void ScrollAnimatorMac::mayBeginScrollGesture() const | 854 void ScrollAnimatorMac::mayBeginScrollGesture() const |
855 { | 855 { |
856 if (!scrollableArea()->scrollbarsCanBeActive()) | 856 if (!scrollableArea()->scrollbarsCanBeActive()) |
857 return; | 857 return; |
858 if (!isScrollbarOverlayAPIAvailable()) | 858 if (!ScrollbarThemeMacCommon::isOverlayAPIAvailable()) |
859 return; | 859 return; |
860 | 860 |
861 [m_scrollbarPainterController.get() beginScrollGesture]; | 861 [m_scrollbarPainterController.get() beginScrollGesture]; |
862 [m_scrollbarPainterController.get() contentAreaScrolled]; | 862 [m_scrollbarPainterController.get() contentAreaScrolled]; |
863 } | 863 } |
864 | 864 |
865 void ScrollAnimatorMac::finishCurrentScrollAnimations() | 865 void ScrollAnimatorMac::finishCurrentScrollAnimations() |
866 { | 866 { |
867 if (isScrollbarOverlayAPIAvailable()) { | 867 if (ScrollbarThemeMacCommon::isOverlayAPIAvailable()) { |
868 [m_scrollbarPainterController.get() hideOverlayScrollers]; | 868 [m_scrollbarPainterController.get() hideOverlayScrollers]; |
869 } | 869 } |
870 } | 870 } |
871 | 871 |
872 void ScrollAnimatorMac::didAddVerticalScrollbar(Scrollbar* scrollbar) | 872 void ScrollAnimatorMac::didAddVerticalScrollbar(Scrollbar* scrollbar) |
873 { | 873 { |
874 if (!isScrollbarOverlayAPIAvailable()) | 874 if (!ScrollbarThemeMacCommon::isOverlayAPIAvailable()) |
875 return; | 875 return; |
876 | 876 |
877 ScrollbarPainter painter = scrollbarPainterForScrollbar(scrollbar); | 877 ScrollbarPainter painter = scrollbarPainterForScrollbar(scrollbar); |
878 if (!painter) | 878 if (!painter) |
879 return; | 879 return; |
880 | 880 |
881 ASSERT(!m_verticalScrollbarPainterDelegate); | 881 ASSERT(!m_verticalScrollbarPainterDelegate); |
882 m_verticalScrollbarPainterDelegate.adoptNS([[WebScrollbarPainterDelegate all
oc] initWithScrollbar:scrollbar]); | 882 m_verticalScrollbarPainterDelegate.adoptNS([[WebScrollbarPainterDelegate all
oc] initWithScrollbar:scrollbar]); |
883 | 883 |
884 [painter setDelegate:m_verticalScrollbarPainterDelegate.get()]; | 884 [painter setDelegate:m_verticalScrollbarPainterDelegate.get()]; |
885 [m_scrollbarPainterController.get() setVerticalScrollerImp:painter]; | 885 [m_scrollbarPainterController.get() setVerticalScrollerImp:painter]; |
886 if (scrollableArea()->inLiveResize()) | 886 if (scrollableArea()->inLiveResize()) |
887 [painter setKnobAlpha:1]; | 887 [painter setKnobAlpha:1]; |
888 } | 888 } |
889 | 889 |
890 void ScrollAnimatorMac::willRemoveVerticalScrollbar(Scrollbar* scrollbar) | 890 void ScrollAnimatorMac::willRemoveVerticalScrollbar(Scrollbar* scrollbar) |
891 { | 891 { |
892 if (!isScrollbarOverlayAPIAvailable()) | 892 if (!ScrollbarThemeMacCommon::isOverlayAPIAvailable()) |
893 return; | 893 return; |
894 | 894 |
895 ScrollbarPainter painter = scrollbarPainterForScrollbar(scrollbar); | 895 ScrollbarPainter painter = scrollbarPainterForScrollbar(scrollbar); |
896 if (!painter) | 896 if (!painter) |
897 return; | 897 return; |
898 | 898 |
899 ASSERT(m_verticalScrollbarPainterDelegate); | 899 ASSERT(m_verticalScrollbarPainterDelegate); |
900 [m_verticalScrollbarPainterDelegate.get() invalidate]; | 900 [m_verticalScrollbarPainterDelegate.get() invalidate]; |
901 m_verticalScrollbarPainterDelegate = nullptr; | 901 m_verticalScrollbarPainterDelegate = nullptr; |
902 | 902 |
903 [painter setDelegate:nil]; | 903 [painter setDelegate:nil]; |
904 [m_scrollbarPainterController.get() setVerticalScrollerImp:nil]; | 904 [m_scrollbarPainterController.get() setVerticalScrollerImp:nil]; |
905 } | 905 } |
906 | 906 |
907 void ScrollAnimatorMac::didAddHorizontalScrollbar(Scrollbar* scrollbar) | 907 void ScrollAnimatorMac::didAddHorizontalScrollbar(Scrollbar* scrollbar) |
908 { | 908 { |
909 if (!isScrollbarOverlayAPIAvailable()) | 909 if (!ScrollbarThemeMacCommon::isOverlayAPIAvailable()) |
910 return; | 910 return; |
911 | 911 |
912 ScrollbarPainter painter = scrollbarPainterForScrollbar(scrollbar); | 912 ScrollbarPainter painter = scrollbarPainterForScrollbar(scrollbar); |
913 if (!painter) | 913 if (!painter) |
914 return; | 914 return; |
915 | 915 |
916 ASSERT(!m_horizontalScrollbarPainterDelegate); | 916 ASSERT(!m_horizontalScrollbarPainterDelegate); |
917 m_horizontalScrollbarPainterDelegate.adoptNS([[WebScrollbarPainterDelegate a
lloc] initWithScrollbar:scrollbar]); | 917 m_horizontalScrollbarPainterDelegate.adoptNS([[WebScrollbarPainterDelegate a
lloc] initWithScrollbar:scrollbar]); |
918 | 918 |
919 [painter setDelegate:m_horizontalScrollbarPainterDelegate.get()]; | 919 [painter setDelegate:m_horizontalScrollbarPainterDelegate.get()]; |
920 [m_scrollbarPainterController.get() setHorizontalScrollerImp:painter]; | 920 [m_scrollbarPainterController.get() setHorizontalScrollerImp:painter]; |
921 if (scrollableArea()->inLiveResize()) | 921 if (scrollableArea()->inLiveResize()) |
922 [painter setKnobAlpha:1]; | 922 [painter setKnobAlpha:1]; |
923 } | 923 } |
924 | 924 |
925 void ScrollAnimatorMac::willRemoveHorizontalScrollbar(Scrollbar* scrollbar) | 925 void ScrollAnimatorMac::willRemoveHorizontalScrollbar(Scrollbar* scrollbar) |
926 { | 926 { |
927 if (!isScrollbarOverlayAPIAvailable()) | 927 if (!ScrollbarThemeMacCommon::isOverlayAPIAvailable()) |
928 return; | 928 return; |
929 | 929 |
930 ScrollbarPainter painter = scrollbarPainterForScrollbar(scrollbar); | 930 ScrollbarPainter painter = scrollbarPainterForScrollbar(scrollbar); |
931 if (!painter) | 931 if (!painter) |
932 return; | 932 return; |
933 | 933 |
934 ASSERT(m_horizontalScrollbarPainterDelegate); | 934 ASSERT(m_horizontalScrollbarPainterDelegate); |
935 [m_horizontalScrollbarPainterDelegate.get() invalidate]; | 935 [m_horizontalScrollbarPainterDelegate.get() invalidate]; |
936 m_horizontalScrollbarPainterDelegate = nullptr; | 936 m_horizontalScrollbarPainterDelegate = nullptr; |
937 | 937 |
938 [painter setDelegate:nil]; | 938 [painter setDelegate:nil]; |
939 [m_scrollbarPainterController.get() setHorizontalScrollerImp:nil]; | 939 [m_scrollbarPainterController.get() setHorizontalScrollerImp:nil]; |
940 } | 940 } |
941 | 941 |
942 bool ScrollAnimatorMac::shouldScrollbarParticipateInHitTesting(Scrollbar* scroll
bar) | 942 bool ScrollAnimatorMac::shouldScrollbarParticipateInHitTesting(Scrollbar* scroll
bar) |
943 { | 943 { |
944 // Non-overlay scrollbars should always participate in hit testing. | 944 // Non-overlay scrollbars should always participate in hit testing. |
945 if (recommendedScrollerStyle() != NSScrollerStyleOverlay) | 945 if (ScrollbarThemeMacCommon::recommendedScrollerStyle() != NSScrollerStyleOv
erlay) |
946 return true; | 946 return true; |
947 | 947 |
948 if (!isScrollbarOverlayAPIAvailable()) | 948 if (!ScrollbarThemeMacCommon::isOverlayAPIAvailable()) |
949 return true; | 949 return true; |
950 | 950 |
951 if (scrollbar->isAlphaLocked()) | 951 if (scrollbar->isAlphaLocked()) |
952 return true; | 952 return true; |
953 | 953 |
954 // Overlay scrollbars should participate in hit testing whenever they are at
all visible. | 954 // Overlay scrollbars should participate in hit testing whenever they are at
all visible. |
955 ScrollbarPainter painter = scrollbarPainterForScrollbar(scrollbar); | 955 ScrollbarPainter painter = scrollbarPainterForScrollbar(scrollbar); |
956 if (!painter) | 956 if (!painter) |
957 return false; | 957 return false; |
958 return [painter knobAlpha] > 0; | 958 return [painter knobAlpha] > 0; |
959 } | 959 } |
960 | 960 |
961 void ScrollAnimatorMac::notifyContentAreaScrolled(const FloatSize& delta) | 961 void ScrollAnimatorMac::notifyContentAreaScrolled(const FloatSize& delta) |
962 { | 962 { |
963 if (!isScrollbarOverlayAPIAvailable()) | 963 if (!ScrollbarThemeMacCommon::isOverlayAPIAvailable()) |
964 return; | 964 return; |
965 | 965 |
966 // This function is called when a page is going into the page cache, but the
page | 966 // This function is called when a page is going into the page cache, but the
page |
967 // isn't really scrolling in that case. We should only pass the message on t
o the | 967 // isn't really scrolling in that case. We should only pass the message on t
o the |
968 // ScrollbarPainterController when we're really scrolling on an active page. | 968 // ScrollbarPainterController when we're really scrolling on an active page. |
969 if (scrollableArea()->scrollbarsCanBeActive()) | 969 if (scrollableArea()->scrollbarsCanBeActive()) |
970 sendContentAreaScrolledSoon(delta); | 970 sendContentAreaScrolledSoon(delta); |
971 } | 971 } |
972 | 972 |
973 void ScrollAnimatorMac::cancelAnimations() | 973 void ScrollAnimatorMac::cancelAnimations() |
974 { | 974 { |
975 m_haveScrolledSincePageLoad = false; | 975 m_haveScrolledSincePageLoad = false; |
976 | 976 |
977 if (isScrollbarOverlayAPIAvailable()) { | 977 if (ScrollbarThemeMacCommon::isOverlayAPIAvailable()) { |
978 if (scrollbarPaintTimerIsActive()) | 978 if (scrollbarPaintTimerIsActive()) |
979 stopScrollbarPaintTimer(); | 979 stopScrollbarPaintTimer(); |
980 [m_horizontalScrollbarPainterDelegate.get() cancelAnimations]; | 980 [m_horizontalScrollbarPainterDelegate.get() cancelAnimations]; |
981 [m_verticalScrollbarPainterDelegate.get() cancelAnimations]; | 981 [m_verticalScrollbarPainterDelegate.get() cancelAnimations]; |
982 } | 982 } |
983 } | 983 } |
984 | 984 |
985 void ScrollAnimatorMac::handleWheelEventPhase(PlatformWheelEventPhase phase) | 985 void ScrollAnimatorMac::handleWheelEventPhase(PlatformWheelEventPhase phase) |
986 { | 986 { |
987 // This may not have been set to true yet if the wheel event was handled by
the ScrollingTree, | 987 // This may not have been set to true yet if the wheel event was handled by
the ScrollingTree, |
(...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1155 } | 1155 } |
1156 | 1156 |
1157 void ScrollAnimatorMac::snapRubberBandTimerFired(Timer<ScrollAnimatorMac>*) | 1157 void ScrollAnimatorMac::snapRubberBandTimerFired(Timer<ScrollAnimatorMac>*) |
1158 { | 1158 { |
1159 m_scrollElasticityController.snapRubberBandTimerFired(); | 1159 m_scrollElasticityController.snapRubberBandTimerFired(); |
1160 } | 1160 } |
1161 #endif | 1161 #endif |
1162 | 1162 |
1163 void ScrollAnimatorMac::setIsActive() | 1163 void ScrollAnimatorMac::setIsActive() |
1164 { | 1164 { |
1165 if (!isScrollbarOverlayAPIAvailable()) | 1165 if (!ScrollbarThemeMacCommon::isOverlayAPIAvailable()) |
1166 return; | 1166 return; |
1167 | 1167 |
1168 if (!m_needsScrollerStyleUpdate) | 1168 if (!m_needsScrollerStyleUpdate) |
1169 return; | 1169 return; |
1170 | 1170 |
1171 updateScrollerStyle(); | 1171 updateScrollerStyle(); |
1172 } | 1172 } |
1173 | 1173 |
1174 void ScrollAnimatorMac::updateScrollerStyle() | 1174 void ScrollAnimatorMac::updateScrollerStyle() |
1175 { | 1175 { |
1176 if (!isScrollbarOverlayAPIAvailable()) | 1176 if (!ScrollbarThemeMacCommon::isOverlayAPIAvailable()) |
1177 return; | 1177 return; |
1178 | 1178 |
1179 if (!scrollableArea()->scrollbarsCanBeActive()) { | 1179 if (!scrollableArea()->scrollbarsCanBeActive()) { |
1180 m_needsScrollerStyleUpdate = true; | 1180 m_needsScrollerStyleUpdate = true; |
1181 return; | 1181 return; |
1182 } | 1182 } |
1183 | 1183 |
1184 ScrollbarThemeMacOverlayAPI* macTheme = macOverlayScrollbarTheme(); | 1184 ScrollbarThemeMacOverlayAPI* macTheme = macOverlayScrollbarTheme(); |
1185 if (!macTheme) { | 1185 if (!macTheme) { |
1186 m_needsScrollerStyleUpdate = false; | 1186 m_needsScrollerStyleUpdate = false; |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1242 return m_initialScrollbarPaintTimer.isActive(); | 1242 return m_initialScrollbarPaintTimer.isActive(); |
1243 } | 1243 } |
1244 | 1244 |
1245 void ScrollAnimatorMac::stopScrollbarPaintTimer() | 1245 void ScrollAnimatorMac::stopScrollbarPaintTimer() |
1246 { | 1246 { |
1247 m_initialScrollbarPaintTimer.stop(); | 1247 m_initialScrollbarPaintTimer.stop(); |
1248 } | 1248 } |
1249 | 1249 |
1250 void ScrollAnimatorMac::initialScrollbarPaintTimerFired(Timer<ScrollAnimatorMac>
*) | 1250 void ScrollAnimatorMac::initialScrollbarPaintTimerFired(Timer<ScrollAnimatorMac>
*) |
1251 { | 1251 { |
1252 if (isScrollbarOverlayAPIAvailable()) { | 1252 if (ScrollbarThemeMacCommon::isOverlayAPIAvailable()) { |
1253 // To force the scrollbars to flash, we have to call hide first. Otherwi
se, the ScrollbarPainterController | 1253 // To force the scrollbars to flash, we have to call hide first. Otherwi
se, the ScrollbarPainterController |
1254 // might think that the scrollbars are already showing and bail early. | 1254 // might think that the scrollbars are already showing and bail early. |
1255 [m_scrollbarPainterController.get() hideOverlayScrollers]; | 1255 [m_scrollbarPainterController.get() hideOverlayScrollers]; |
1256 [m_scrollbarPainterController.get() flashScrollers]; | 1256 [m_scrollbarPainterController.get() flashScrollers]; |
1257 } | 1257 } |
1258 } | 1258 } |
1259 | 1259 |
1260 void ScrollAnimatorMac::sendContentAreaScrolledSoon(const FloatSize& delta) | 1260 void ScrollAnimatorMac::sendContentAreaScrolledSoon(const FloatSize& delta) |
1261 { | 1261 { |
1262 m_contentAreaScrolledTimerScrollDelta = delta; | 1262 m_contentAreaScrolledTimerScrollDelta = delta; |
(...skipping 17 matching lines...) Expand all Loading... |
1280 if (Scrollbar* verticalScrollbar = m_scrollableArea->verticalScrollbar()) | 1280 if (Scrollbar* verticalScrollbar = m_scrollableArea->verticalScrollbar()) |
1281 rectInViewCoordinates = verticalScrollbar->convertToContainingView(scrol
lerThumb); | 1281 rectInViewCoordinates = verticalScrollbar->convertToContainingView(scrol
lerThumb); |
1282 | 1282 |
1283 if (rectInViewCoordinates == m_visibleScrollerThumbRect) | 1283 if (rectInViewCoordinates == m_visibleScrollerThumbRect) |
1284 return; | 1284 return; |
1285 | 1285 |
1286 m_visibleScrollerThumbRect = rectInViewCoordinates; | 1286 m_visibleScrollerThumbRect = rectInViewCoordinates; |
1287 } | 1287 } |
1288 | 1288 |
1289 bool ScrollAnimatorMac::canUseCoordinatedScrollbar() { | 1289 bool ScrollAnimatorMac::canUseCoordinatedScrollbar() { |
1290 return isScrollbarOverlayAPIAvailable(); | 1290 return ScrollbarThemeMacCommon::isOverlayAPIAvailable(); |
1291 } | 1291 } |
1292 | 1292 |
1293 } // namespace WebCore | 1293 } // namespace WebCore |
OLD | NEW |