OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All rights
reserved. | 2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All rights
reserved. |
3 * | 3 * |
4 * Portions are Copyright (C) 1998 Netscape Communications Corporation. | 4 * Portions are Copyright (C) 1998 Netscape Communications Corporation. |
5 * | 5 * |
6 * Other contributors: | 6 * Other contributors: |
7 * Robert O'Callahan <roc+@cs.cmu.edu> | 7 * Robert O'Callahan <roc+@cs.cmu.edu> |
8 * David Baron <dbaron@fas.harvard.edu> | 8 * David Baron <dbaron@fas.harvard.edu> |
9 * Christian Biesinger <cbiesinger@web.de> | 9 * Christian Biesinger <cbiesinger@web.de> |
10 * Randall Jesup <rjesup@wgate.com> | 10 * Randall Jesup <rjesup@wgate.com> |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
53 #include "core/html/HTMLFrameOwnerElement.h" | 53 #include "core/html/HTMLFrameOwnerElement.h" |
54 #include "core/inspector/InspectorInstrumentation.h" | 54 #include "core/inspector/InspectorInstrumentation.h" |
55 #include "core/inspector/InspectorTraceEvents.h" | 55 #include "core/inspector/InspectorTraceEvents.h" |
56 #include "core/page/EventHandler.h" | 56 #include "core/page/EventHandler.h" |
57 #include "core/page/FocusController.h" | 57 #include "core/page/FocusController.h" |
58 #include "core/page/Page.h" | 58 #include "core/page/Page.h" |
59 #include "core/page/scrolling/ScrollingCoordinator.h" | 59 #include "core/page/scrolling/ScrollingCoordinator.h" |
60 #include "core/rendering/RenderGeometryMap.h" | 60 #include "core/rendering/RenderGeometryMap.h" |
61 #include "core/rendering/RenderScrollbar.h" | 61 #include "core/rendering/RenderScrollbar.h" |
62 #include "core/rendering/RenderScrollbarPart.h" | 62 #include "core/rendering/RenderScrollbarPart.h" |
| 63 #include "core/rendering/RenderTheme.h" |
63 #include "core/rendering/RenderView.h" | 64 #include "core/rendering/RenderView.h" |
64 #include "core/rendering/compositing/CompositedLayerMapping.h" | 65 #include "core/rendering/compositing/CompositedLayerMapping.h" |
65 #include "core/rendering/compositing/RenderLayerCompositor.h" | 66 #include "core/rendering/compositing/RenderLayerCompositor.h" |
66 #include "platform/PlatformGestureEvent.h" | 67 #include "platform/PlatformGestureEvent.h" |
67 #include "platform/PlatformMouseEvent.h" | 68 #include "platform/PlatformMouseEvent.h" |
68 #include "platform/graphics/GraphicsContextStateSaver.h" | 69 #include "platform/graphics/GraphicsContextStateSaver.h" |
69 #include "platform/graphics/GraphicsLayer.h" | 70 #include "platform/graphics/GraphicsLayer.h" |
70 #include "platform/scroll/ScrollAnimator.h" | 71 #include "platform/scroll/ScrollAnimator.h" |
71 #include "platform/scroll/ScrollbarTheme.h" | 72 #include "platform/scroll/ScrollbarTheme.h" |
72 #include "public/platform/Platform.h" | 73 #include "public/platform/Platform.h" |
(...skipping 481 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
554 | 555 |
555 void RenderLayerScrollableArea::scrollToOffset(const IntSize& scrollOffset, Scro
llOffsetClamping clamp) | 556 void RenderLayerScrollableArea::scrollToOffset(const IntSize& scrollOffset, Scro
llOffsetClamping clamp) |
556 { | 557 { |
557 IntSize newScrollOffset = clamp == ScrollOffsetClamped ? clampScrollOffset(s
crollOffset) : scrollOffset; | 558 IntSize newScrollOffset = clamp == ScrollOffsetClamped ? clampScrollOffset(s
crollOffset) : scrollOffset; |
558 if (newScrollOffset != adjustedScrollOffset()) | 559 if (newScrollOffset != adjustedScrollOffset()) |
559 scrollToOffsetWithoutAnimation(-scrollOrigin() + newScrollOffset); | 560 scrollToOffsetWithoutAnimation(-scrollOrigin() + newScrollOffset); |
560 } | 561 } |
561 | 562 |
562 void RenderLayerScrollableArea::updateAfterLayout() | 563 void RenderLayerScrollableArea::updateAfterLayout() |
563 { | 564 { |
564 // List box parts handle the scrollbars by themselves so we have nothing to
do. | |
565 if (box().style()->appearance() == ListboxPart) | |
566 return; | |
567 | |
568 m_scrollDimensionsDirty = true; | 565 m_scrollDimensionsDirty = true; |
569 IntSize originalScrollOffset = adjustedScrollOffset(); | 566 IntSize originalScrollOffset = adjustedScrollOffset(); |
570 | 567 |
571 computeScrollDimensions(); | 568 computeScrollDimensions(); |
572 | 569 |
573 if (!box().isMarquee()) { | 570 if (!box().isMarquee()) { |
574 // Layout may cause us to be at an invalid scroll position. In this case
we need | 571 // Layout may cause us to be at an invalid scroll position. In this case
we need |
575 // to pull our scroll offsets back to the max (or push them up to the mi
n). | 572 // to pull our scroll offsets back to the max (or push them up to the mi
n). |
576 IntSize clampedScrollOffset = clampScrollOffset(adjustedScrollOffset()); | 573 IntSize clampedScrollOffset = clampScrollOffset(adjustedScrollOffset()); |
577 if (clampedScrollOffset != adjustedScrollOffset()) | 574 if (clampedScrollOffset != adjustedScrollOffset()) |
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
679 return overflow == OSCROLL; | 676 return overflow == OSCROLL; |
680 } | 677 } |
681 | 678 |
682 static bool overflowDefinesAutomaticScrollbar(EOverflow overflow) | 679 static bool overflowDefinesAutomaticScrollbar(EOverflow overflow) |
683 { | 680 { |
684 return overflow == OAUTO || overflow == OOVERLAY; | 681 return overflow == OAUTO || overflow == OOVERLAY; |
685 } | 682 } |
686 | 683 |
687 void RenderLayerScrollableArea::updateAfterStyleChange(const RenderStyle* oldSty
le) | 684 void RenderLayerScrollableArea::updateAfterStyleChange(const RenderStyle* oldSty
le) |
688 { | 685 { |
689 // List box parts handle the scrollbars by themselves so we have nothing to
do. | |
690 if (box().style()->appearance() == ListboxPart) | |
691 return; | |
692 | |
693 // RenderView shouldn't provide scrollbars on its own. | 686 // RenderView shouldn't provide scrollbars on its own. |
694 if (box().isRenderView()) | 687 if (box().isRenderView()) |
695 return; | 688 return; |
696 | 689 |
697 if (!m_scrollDimensionsDirty) | 690 if (!m_scrollDimensionsDirty) |
698 updateScrollableAreaSet(hasScrollableHorizontalOverflow() || hasScrollab
leVerticalOverflow()); | 691 updateScrollableAreaSet(hasScrollableHorizontalOverflow() || hasScrollab
leVerticalOverflow()); |
699 | 692 |
700 EOverflow overflowX = box().style()->overflowX(); | 693 EOverflow overflowX = box().style()->overflowX(); |
701 EOverflow overflowY = box().style()->overflowY(); | 694 EOverflow overflowY = box().style()->overflowY(); |
702 | 695 |
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
830 } | 823 } |
831 | 824 |
832 PassRefPtr<Scrollbar> RenderLayerScrollableArea::createScrollbar(ScrollbarOrient
ation orientation) | 825 PassRefPtr<Scrollbar> RenderLayerScrollableArea::createScrollbar(ScrollbarOrient
ation orientation) |
833 { | 826 { |
834 RefPtr<Scrollbar> widget; | 827 RefPtr<Scrollbar> widget; |
835 RenderObject* actualRenderer = rendererForScrollbar(box()); | 828 RenderObject* actualRenderer = rendererForScrollbar(box()); |
836 bool hasCustomScrollbarStyle = actualRenderer->isBox() && actualRenderer->st
yle()->hasPseudoStyle(SCROLLBAR); | 829 bool hasCustomScrollbarStyle = actualRenderer->isBox() && actualRenderer->st
yle()->hasPseudoStyle(SCROLLBAR); |
837 if (hasCustomScrollbarStyle) { | 830 if (hasCustomScrollbarStyle) { |
838 widget = RenderScrollbar::createCustomScrollbar(this, orientation, actua
lRenderer->node()); | 831 widget = RenderScrollbar::createCustomScrollbar(this, orientation, actua
lRenderer->node()); |
839 } else { | 832 } else { |
840 widget = Scrollbar::create(this, orientation, RegularScrollbar); | 833 ScrollbarControlSize scrollbarSize = RegularScrollbar; |
| 834 if (actualRenderer->style()->hasAppearance()) |
| 835 scrollbarSize = RenderTheme::theme().scrollbarControlSizeForPart(act
ualRenderer->style()->appearance()); |
| 836 widget = Scrollbar::create(this, orientation, scrollbarSize); |
841 if (orientation == HorizontalScrollbar) | 837 if (orientation == HorizontalScrollbar) |
842 didAddScrollbar(widget.get(), HorizontalScrollbar); | 838 didAddScrollbar(widget.get(), HorizontalScrollbar); |
843 else | 839 else |
844 didAddScrollbar(widget.get(), VerticalScrollbar); | 840 didAddScrollbar(widget.get(), VerticalScrollbar); |
845 } | 841 } |
846 box().document().view()->addChild(widget.get()); | 842 box().document().view()->addChild(widget.get()); |
847 return widget.release(); | 843 return widget.release(); |
848 } | 844 } |
849 | 845 |
850 void RenderLayerScrollableArea::destroyScrollbar(ScrollbarOrientation orientatio
n) | 846 void RenderLayerScrollableArea::destroyScrollbar(ScrollbarOrientation orientatio
n) |
(...skipping 588 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1439 DisableCompositingQueryAsserts disabler; | 1435 DisableCompositingQueryAsserts disabler; |
1440 return layer()->hasCompositedLayerMapping() && layer()->compositedLayerMappi
ng()->scrollingLayer(); | 1436 return layer()->hasCompositedLayerMapping() && layer()->compositedLayerMappi
ng()->scrollingLayer(); |
1441 } | 1437 } |
1442 | 1438 |
1443 bool RenderLayerScrollableArea::needsCompositedScrolling() const | 1439 bool RenderLayerScrollableArea::needsCompositedScrolling() const |
1444 { | 1440 { |
1445 return scrollsOverflow() && box().view()->compositor()->acceleratedCompositi
ngForOverflowScrollEnabled(); | 1441 return scrollsOverflow() && box().view()->compositor()->acceleratedCompositi
ngForOverflowScrollEnabled(); |
1446 } | 1442 } |
1447 | 1443 |
1448 } // Namespace WebCore | 1444 } // Namespace WebCore |
OLD | NEW |