Index: Source/core/frame/FrameView.h |
diff --git a/Source/core/frame/FrameView.h b/Source/core/frame/FrameView.h |
index 7aa2629e8b7958744cc6537022f0a081cd2e0b87..7a8ec3ae446a75ac6236e5534ff42c39bbb75683 100644 |
--- a/Source/core/frame/FrameView.h |
+++ b/Source/core/frame/FrameView.h |
@@ -28,11 +28,17 @@ |
#include "core/frame/FrameViewAutoSizeInfo.h" |
#include "core/rendering/PaintPhase.h" |
#include "platform/RuntimeEnabledFeatures.h" |
+#include "platform/Widget.h" |
+#include "platform/geometry/IntRect.h" |
#include "platform/geometry/LayoutRect.h" |
#include "platform/graphics/Color.h" |
-#include "platform/scroll/ScrollView.h" |
+#include "platform/scroll/ScrollTypes.h" |
+#include "platform/scroll/ScrollableArea.h" |
+#include "platform/scroll/Scrollbar.h" |
#include "wtf/Forward.h" |
+#include "wtf/HashSet.h" |
#include "wtf/OwnPtr.h" |
+#include "wtf/TemporaryChange.h" |
#include "wtf/text/WTFString.h" |
namespace blink { |
@@ -58,7 +64,7 @@ struct CompositedSelectionBound; |
typedef unsigned long long DOMTimeStamp; |
// FIXME: Oilpan: move Widget (and thereby FrameView) to the heap. |
-class FrameView final : public ScrollView { |
+class FrameView final : public Widget, public ScrollableArea { |
public: |
friend class RenderView; |
friend class Internals; |
@@ -68,8 +74,6 @@ public: |
virtual ~FrameView(); |
- virtual HostWindow* hostWindow() const override; |
- |
virtual void invalidateRect(const IntRect&) override; |
virtual void setFrameRect(const IntRect&) override; |
@@ -83,11 +87,11 @@ public: |
RenderView* renderView() const; |
- virtual void setCanHaveScrollbars(bool) override; |
+ void setCanHaveScrollbars(bool); |
- virtual PassRefPtr<Scrollbar> createScrollbar(ScrollbarOrientation) override; |
+ PassRefPtr<Scrollbar> createScrollbar(ScrollbarOrientation); |
- virtual void setContentsSize(const IntSize&) override; |
+ void setContentsSize(const IntSize&); |
IntPoint clampOffsetAtScale(const IntPoint& offset, float scale) const; |
void layout(bool allowSubtree = true); |
@@ -145,19 +149,18 @@ public: |
void adjustViewSize(); |
- virtual IntRect windowClipRect(IncludeScrollbarsInRect = ExcludeScrollbars) const override; |
IntRect windowClipRectForFrameOwner(const HTMLFrameOwnerElement*) const; |
- virtual IntRect windowResizerRect() const override; |
+ IntRect windowResizerRect() const; |
- virtual float visibleContentScaleFactor() const override { return m_visibleContentScaleFactor; } |
+ float visibleContentScaleFactor() const { return m_visibleContentScaleFactor; } |
void setVisibleContentScaleFactor(float); |
- virtual float inputEventsScaleFactor() const override; |
- virtual IntSize inputEventsOffsetForEmulation() const override; |
+ float inputEventsScaleFactor() const; |
+ IntSize inputEventsOffsetForEmulation() const; |
void setInputEventsTransformForEmulation(const IntSize&, float); |
- virtual void setScrollPosition(const DoublePoint&, ScrollBehavior = ScrollBehaviorInstant) override; |
+ void setScrollPosition(const DoublePoint&, ScrollBehavior = ScrollBehaviorInstant); |
virtual bool isRubberBandInProgress() const override; |
void setScrollPositionNonProgrammatically(const IntPoint&); |
@@ -201,16 +204,16 @@ public: |
void addWidgetToUpdate(RenderEmbeddedObject&); |
- virtual void paintContents(GraphicsContext*, const IntRect& damageRect) override; |
+ void paintContents(GraphicsContext*, const IntRect& damageRect); |
void setPaintBehavior(PaintBehavior); |
PaintBehavior paintBehavior() const; |
bool isPainting() const; |
bool hasEverPainted() const { return m_lastPaintTime; } |
void setNodeToDraw(Node*); |
- virtual void paintOverhangAreas(GraphicsContext*, const IntRect& horizontalOverhangArea, const IntRect& verticalOverhangArea, const IntRect& dirtyRect) override; |
- virtual void paintScrollCorner(GraphicsContext*, const IntRect& cornerRect) override; |
- virtual void paintScrollbar(GraphicsContext*, Scrollbar*, const IntRect&) override; |
+ void paintOverhangAreas(GraphicsContext*, const IntRect& horizontalOverhangArea, const IntRect& verticalOverhangArea, const IntRect& dirtyRect); |
+ void paintScrollCorner(GraphicsContext*, const IntRect& cornerRect); |
+ void paintScrollbar(GraphicsContext*, Scrollbar*, const IntRect&); |
Color documentBackgroundColor() const; |
@@ -284,7 +287,7 @@ public: |
const ResizerAreaSet* resizerAreas() const { return m_resizerAreas.get(); } |
virtual void setParent(Widget*) override; |
- virtual void removeChild(Widget*) override; |
+ void removeChild(Widget*); |
// This function exists for ports that need to handle wheel events manually. |
// On Mac WebKit1 the underlying NSScrollView just does the scrolling, but on most other platforms |
@@ -323,7 +326,7 @@ public: |
// ScrollableArea interface |
virtual void invalidateScrollbarRect(Scrollbar*, const IntRect&) override; |
virtual void getTickmarks(Vector<IntRect>&) const override; |
- virtual void scrollTo(const DoublePoint&) override; |
+ void scrollTo(const DoublePoint&); |
virtual IntRect scrollableAreaBoundingBox() const override; |
virtual bool scrollAnimatorEnabled() const override; |
virtual bool usesCompositedScrolling() const override; |
@@ -332,16 +335,274 @@ public: |
virtual GraphicsLayer* layerForVerticalScrollbar() const override; |
virtual GraphicsLayer* layerForScrollCorner() const override; |
+ // --- ScrollView --- |
+ virtual int scrollSize(ScrollbarOrientation) const override; |
+ virtual void setScrollOffset(const IntPoint&) override; |
+ virtual void setScrollOffset(const DoublePoint&) override; |
+ virtual bool isScrollCornerVisible() const override; |
+ void scrollbarStyleChangedInternal(); |
+ virtual bool userInputScrollable(ScrollbarOrientation) const override; |
+ virtual bool shouldPlaceVerticalScrollbarOnLeft() const override; |
+ |
+ void notifyPageThatContentAreaWillPaintInternal() const; |
+ |
+ // The window that hosts the ScrollView. The ScrollView will communicate scrolls and repaints to the |
+ // host window in the window's coordinate space. |
+ HostWindow* hostWindow() const; |
+ |
+ // Returns a clip rect in host window coordinates. Used to clip the blit on a scroll. |
+ IntRect windowClipRect(IncludeScrollbarsInRect = ExcludeScrollbars) const; |
+ |
+ // Functions for child manipulation and inspection. |
+ const HashSet<RefPtr<Widget> >* children() const { return &m_children; } |
+ void addChild(PassRefPtr<Widget>); |
+ void removeChildInternal(Widget*); |
+ |
+ // If the scroll view does not use a native widget, then it will have cross-platform Scrollbars. These functions |
+ // can be used to obtain those scrollbars. |
+ virtual Scrollbar* horizontalScrollbar() const override { return m_horizontalScrollbar.get(); } |
+ virtual Scrollbar* verticalScrollbar() const override { return m_verticalScrollbar.get(); } |
+ virtual bool isScrollViewScrollbar(const Widget* child) const override { return horizontalScrollbar() == child || verticalScrollbar() == child; } |
+ |
+ void positionScrollbarLayers(); |
+ |
+ // Functions for setting and retrieving the scrolling mode in each axis (horizontal/vertical). The mode has values of |
+ // AlwaysOff, AlwaysOn, and Auto. AlwaysOff means never show a scrollbar, AlwaysOn means always show a scrollbar. |
+ // Auto means show a scrollbar only when one is needed. |
+ // Note that for platforms with native widgets, these modes are considered advisory. In other words the underlying native |
+ // widget may choose not to honor the requested modes. |
+ void setScrollbarModes(ScrollbarMode horizontalMode, ScrollbarMode verticalMode, bool horizontalLock = false, bool verticalLock = false); |
+ void setHorizontalScrollbarMode(ScrollbarMode mode, bool lock = false) { setScrollbarModes(mode, verticalScrollbarMode(), lock, verticalScrollbarLock()); } |
+ void setVerticalScrollbarMode(ScrollbarMode mode, bool lock = false) { setScrollbarModes(horizontalScrollbarMode(), mode, horizontalScrollbarLock(), lock); }; |
+ void scrollbarModes(ScrollbarMode& horizontalMode, ScrollbarMode& verticalMode) const; |
+ ScrollbarMode horizontalScrollbarMode() const { ScrollbarMode horizontal, vertical; scrollbarModes(horizontal, vertical); return horizontal; } |
+ ScrollbarMode verticalScrollbarMode() const { ScrollbarMode horizontal, vertical; scrollbarModes(horizontal, vertical); return vertical; } |
+ |
+ void setHorizontalScrollbarLock(bool lock = true) { m_horizontalScrollbarLock = lock; } |
+ bool horizontalScrollbarLock() const { return m_horizontalScrollbarLock; } |
+ void setVerticalScrollbarLock(bool lock = true) { m_verticalScrollbarLock = lock; } |
+ bool verticalScrollbarLock() const { return m_verticalScrollbarLock; } |
+ |
+ void setScrollingModesLock(bool lock = true) { m_horizontalScrollbarLock = m_verticalScrollbarLock = lock; } |
+ |
+ void setCanHaveScrollbarsInternal(bool); |
+ bool canHaveScrollbars() const { return horizontalScrollbarMode() != ScrollbarAlwaysOff || verticalScrollbarMode() != ScrollbarAlwaysOff; } |
+ |
+ // By default, paint events are clipped to the visible area. If set to |
+ // false, paint events are no longer clipped. |
+ bool clipsPaintInvalidations() const { return m_clipsRepaints; } |
+ void setClipsRepaints(bool); |
+ |
+ // Overridden by FrameView to create custom CSS scrollbars if applicable. |
+ PassRefPtr<Scrollbar> createScrollbarInternal(ScrollbarOrientation); |
+ |
+ // The visible content rect has a location that is the scrolled offset of the document. The width and height are the viewport width |
+ // and height. By default the scrollbars themselves are excluded from this rectangle, but an optional boolean argument allows them to be |
+ // included. |
+ virtual IntRect visibleContentRect(IncludeScrollbarsInRect = ExcludeScrollbars) const override; |
+ IntSize visibleSize() const { return visibleContentRect().size(); } |
+ |
+ // visibleContentRect().size() is computed from unscaledVisibleContentSize() divided by the value of visibleContentScaleFactor. |
+ // For the main frame, visibleContentScaleFactor is equal to the page's pageScaleFactor; it's 1 otherwise. |
+ IntSize unscaledVisibleContentSize(IncludeScrollbarsInRect = ExcludeScrollbars) const; |
+ float visibleContentScaleFactorInternal() const { return 1; } |
+ |
+ // Offset used to convert incoming input events while emulating device metics. |
+ IntSize inputEventsOffsetForEmulationInternal() const { return IntSize(); } |
+ |
+ // Scale used to convert incoming input events. Usually the same as visibleContentScaleFactor(), unless specifically changed. |
+ float inputEventsScaleFactorInternal() const { return visibleContentScaleFactor(); } |
+ |
+ // Functions for getting/setting the size of the document contained inside the ScrollView (as an IntSize or as individual width and height |
+ // values). |
+ virtual IntSize contentsSize() const override; // Always at least as big as the visibleWidth()/visibleHeight(). |
+ int contentsWidth() const { return contentsSize().width(); } |
+ int contentsHeight() const { return contentsSize().height(); } |
+ void setContentsSizeInternal(const IntSize&); |
+ |
+ // Functions for querying the current scrolled position (both as a point, a size, or as individual X and Y values). |
+ // FIXME: Remove the IntPoint version. crbug.com/414283. |
+ virtual IntPoint scrollPosition() const override { return visibleContentRect().location(); } |
+ virtual DoublePoint scrollPositionDouble() const override { return m_scrollPosition; } |
+ // FIXME: Remove scrollOffset(). crbug.com/414283. |
+ IntSize scrollOffset() const { return toIntSize(visibleContentRect().location()); } // Gets the scrolled position as an IntSize. Convenient for adding to other sizes. |
+ DoubleSize scrollOffsetDouble() const { return DoubleSize(m_scrollPosition.x(), m_scrollPosition.y()); } |
+ DoubleSize pendingScrollDelta() const { return m_pendingScrollDelta; } |
+ virtual IntPoint minimumScrollPosition() const override; // The minimum position we can be scrolled to. |
+ // Adjust the passed in scroll position to keep it between the minimum and maximum positions. |
+ IntPoint adjustScrollPositionWithinRange(const IntPoint&) const; |
+ DoublePoint adjustScrollPositionWithinRange(const DoublePoint&) const; |
+ double scrollX() const { return scrollPositionDouble().x(); } |
+ double scrollY() const { return scrollPositionDouble().y(); } |
+ |
+ virtual IntSize overhangAmount() const override; |
+ |
+ void cacheCurrentScrollPosition() { m_cachedScrollPosition = scrollPositionDouble(); } |
+ DoublePoint cachedScrollPosition() const { return m_cachedScrollPosition; } |
+ |
+ // Functions for scrolling the view. |
+ void setScrollPositionInternal(const DoublePoint&, ScrollBehavior = ScrollBehaviorInstant); |
+ void scrollBy(const DoubleSize& s, ScrollBehavior behavior = ScrollBehaviorInstant) |
+ { |
+ return setScrollPosition(scrollPositionDouble() + s, behavior); |
+ } |
+ |
+ bool scroll(ScrollDirection, ScrollGranularity); |
+ |
+ // Scroll the actual contents of the view (either blitting or invalidating as needed). |
+ void scrollContents(const IntSize& scrollDelta); |
+ |
+ // This gives us a means of blocking painting on our scrollbars until the first layout has occurred. |
+ void setScrollbarsSuppressed(bool suppressed, bool repaintOnUnsuppress = false); |
+ bool scrollbarsSuppressed() const { return m_scrollbarsSuppressed; } |
+ |
+ IntPoint rootViewToContents(const IntPoint&) const; |
+ IntPoint contentsToRootView(const IntPoint&) const; |
+ IntRect rootViewToContents(const IntRect&) const; |
+ IntRect contentsToRootView(const IntRect&) const; |
+ |
+ // Event coordinates are assumed to be in the coordinate space of a window that contains |
+ // the entire widget hierarchy. It is up to the platform to decide what the precise definition |
+ // of containing window is. (For example on Mac it is the containing NSWindow.) |
+ IntPoint windowToContents(const IntPoint&) const; |
+ FloatPoint windowToContents(const FloatPoint&) const; |
+ IntPoint contentsToWindow(const IntPoint&) const; |
+ IntRect windowToContents(const IntRect&) const; |
+ IntRect contentsToWindow(const IntRect&) const; |
+ |
+ // Functions for converting to screen coordinates. |
+ IntRect contentsToScreen(const IntRect&) const; |
+ |
+ // These functions are used to enable scrollbars to avoid window resizer controls that overlap the scroll view. This happens on Mac |
+ // for example. |
+ IntRect windowResizerRectInternal() const { return IntRect(); } |
+ bool containsScrollbarsAvoidingResizer() const; |
+ void adjustScrollbarsAvoidingResizerCount(int overlapDelta); |
+ void windowResizerRectChanged(); |
+ |
+ void setParentInternal(Widget*); // Updates the overlapping scrollbar count. |
+ |
+ // Called when our frame rect changes (or the rect/scroll position of an ancestor changes). |
+ void frameRectsChangedInternal(); |
+ |
+ // Updates our scrollbars and notifies our contents of the resize. |
+ void setFrameRectInternal(const IntRect&); |
+ |
+ // For platforms that need to hit test scrollbars from within the engine's event handlers (like Win32). |
+ Scrollbar* scrollbarAtWindowPoint(const IntPoint& windowPoint); |
+ Scrollbar* scrollbarAtViewPoint(const IntPoint& viewPoint); |
+ |
+ virtual IntPoint convertChildToSelf(const Widget* child, const IntPoint& point) const override |
+ { |
+ IntPoint newPoint = point; |
+ if (!isScrollViewScrollbar(child)) |
+ newPoint = point - scrollOffset(); |
+ newPoint.moveBy(child->location()); |
+ return newPoint; |
+ } |
+ |
+ virtual IntPoint convertSelfToChild(const Widget* child, const IntPoint& point) const override |
+ { |
+ IntPoint newPoint = point; |
+ if (!isScrollViewScrollbar(child)) |
+ newPoint = point + scrollOffset(); |
+ newPoint.moveBy(-child->location()); |
+ return newPoint; |
+ } |
+ |
+ // Widget override. Handles painting of the contents of the view as well as the scrollbars. |
+ virtual void paint(GraphicsContext*, const IntRect&) override; |
+ void paintScrollbars(GraphicsContext*, const IntRect&); |
+ |
+ // Widget overrides to ensure that our children's visibility status is kept up to date when we get shown and hidden. |
+ virtual void show() override; |
+ virtual void hide() override; |
+ virtual void setParentVisible(bool) override; |
+ |
+ // Pan scrolling. |
+ static const int noPanScrollRadius = 15; |
+ void addPanScrollIcon(const IntPoint&); |
+ void removePanScrollIcon(); |
+ void paintPanScrollIcon(GraphicsContext*); |
+ |
+ bool isPointInScrollbarCorner(const IntPoint&); |
+ bool scrollbarCornerPresent() const; |
+ virtual IntRect scrollCornerRect() const override; |
+ void paintScrollCornerInternal(GraphicsContext*, const IntRect& cornerRect); |
+ void paintScrollbarInternal(GraphicsContext*, Scrollbar*, const IntRect&); |
+ |
+ virtual IntRect convertFromScrollbarToContainingView(const Scrollbar*, const IntRect&) const override; |
+ virtual IntRect convertFromContainingViewToScrollbar(const Scrollbar*, const IntRect&) const override; |
+ virtual IntPoint convertFromScrollbarToContainingView(const Scrollbar*, const IntPoint&) const override; |
+ virtual IntPoint convertFromContainingViewToScrollbar(const Scrollbar*, const IntPoint&) const override; |
+ |
+ void calculateAndPaintOverhangAreas(GraphicsContext*, const IntRect& dirtyRect); |
+ void calculateAndPaintOverhangBackground(GraphicsContext*, const IntRect& dirtyRect); |
+ |
+ virtual bool isScrollView() const override final { return true; } |
+ virtual bool isFrameView() const override { return true; } |
+ |
protected: |
- virtual bool scrollContentsFastPath(const IntSize& scrollDelta) override; |
- virtual void scrollContentsSlowPath(const IntRect& updateRect) override; |
+ bool scrollContentsFastPath(const IntSize& scrollDelta); |
+ void scrollContentsSlowPath(const IntRect& updateRect); |
- virtual bool isVerticalDocument() const override; |
- virtual bool isFlippedDocument() const override; |
+ bool isVerticalDocument() const; |
+ bool isFlippedDocument() const; |
// Prevents creation of scrollbars. Used to prevent drawing two sets of |
// overlay scrollbars in the case of the pinch viewport. |
- virtual bool scrollbarsDisabled() const override; |
+ bool scrollbarsDisabled() const; |
+ |
+ // --- ScrollView --- |
+ // NOTE: This should only be called by the overriden setScrollOffset from ScrollableArea. |
+ void scrollToInternal(const DoublePoint& newPosition); |
+ |
+ void contentRectangleForPaintInvalidationInternal(const IntRect&); |
+ |
+ void paintOverhangAreasInternal(GraphicsContext*, const IntRect& horizontalOverhangArea, const IntRect& verticalOverhangArea, const IntRect& dirtyRect); |
+ |
+ // These functions are used to create/destroy scrollbars. |
+ void setHasHorizontalScrollbar(bool); |
+ void setHasVerticalScrollbar(bool); |
+ |
+ void updateScrollCornerInternal(); |
+ virtual void invalidateScrollCornerRect(const IntRect&) override; |
+ |
+ void scrollContentsIfNeeded(); |
+ // Scroll the content by via the compositor. |
+ bool scrollContentsFastPathInternal(const IntSize& scrollDelta) { return true; } |
+ // Scroll the content by invalidating everything. |
+ void scrollContentsSlowPathInternal(const IntRect& updateRect); |
+ |
+ void setScrollOrigin(const IntPoint&, bool updatePositionAtAll, bool updatePositionSynchronously); |
+ |
+ // Subclassed by FrameView to check the writing-mode of the document. |
+ bool isVerticalDocumentInternal() const { return true; } |
+ bool isFlippedDocumentInternal() const { return false; } |
+ |
+ enum ComputeScrollbarExistenceOption { |
+ FirstPass, |
+ Incremental |
+ }; |
+ void computeScrollbarExistence(bool& newHasHorizontalScrollbar, bool& newHasVerticalScrollbar, const IntSize& docSize, ComputeScrollbarExistenceOption = FirstPass) const; |
+ void updateScrollbarGeometry(); |
+ IntRect adjustScrollbarRectForResizer(const IntRect&, Scrollbar*); |
+ |
+ // Called to update the scrollbars to accurately reflect the state of the view. |
+ void updateScrollbars(const DoubleSize& desiredOffset); |
+ |
+ IntSize excludeScrollbars(const IntSize&) const; |
+ |
+ class InUpdateScrollbarsScope { |
+ public: |
+ explicit InUpdateScrollbarsScope(FrameView* view) |
+ : m_scope(view->m_inUpdateScrollbars, true) |
+ { } |
+ private: |
+ TemporaryChange<bool> m_scope; |
+ }; |
+ |
+ bool scrollbarsDisabledInternal() const { return false; } |
private: |
explicit FrameView(LocalFrame*); |
@@ -350,7 +611,6 @@ private: |
void init(); |
virtual void frameRectsChanged() override; |
- virtual bool isFrameView() const override { return true; } |
friend class RenderWidget; |
@@ -372,11 +632,11 @@ private: |
DocumentLifecycle& lifecycle() const; |
- virtual void contentRectangleForPaintInvalidation(const IntRect&) override; |
+ void contentRectangleForPaintInvalidation(const IntRect&); |
virtual void contentsResized() override; |
- virtual void scrollbarExistenceDidChange() override; |
+ void scrollbarExistenceDidChange(); |
- // Override ScrollView methods to do point conversion via renderers, in order to |
+ // Override Widget methods to do point conversion via renderers, in order to |
// take transforms into account. |
virtual IntRect convertToContainingView(const IntRect&) const override; |
virtual IntRect convertFromContainingView(const IntRect&) const override; |
@@ -390,7 +650,7 @@ private: |
void updateScrollableAreaSet(); |
- virtual void notifyPageThatContentAreaWillPaint() const override; |
+ void notifyPageThatContentAreaWillPaint() const; |
void scheduleUpdateWidgetsIfNecessary(); |
void updateWidgetsTimerFired(Timer<FrameView>*); |
@@ -408,7 +668,7 @@ private: |
bool hasCustomScrollbars() const; |
bool shouldUseCustomScrollbars(Element*& customScrollbarElement, LocalFrame*& customScrollbarFrame); |
- virtual void updateScrollCorner() override; |
+ void updateScrollCorner(); |
FrameView* parentFrameView() const; |
@@ -514,6 +774,44 @@ private: |
bool m_needsUpdateWidgetPositions; |
float m_topControlsViewportAdjustment; |
+ |
+ // --- ScrollView --- |
+ bool adjustScrollbarExistence(ComputeScrollbarExistenceOption = FirstPass); |
+ void adjustScrollbarOpacity(); |
+ // FIXME(bokan): setScrollOffset, setScrollPosition, scrollTo, scrollToOffsetWithoutAnimation, |
+ // notifyScrollPositionChanged...there's too many ways to scroll this class. This needs |
+ // some cleanup. |
+ void setScrollOffsetFromUpdateScrollbars(const DoubleSize&); |
+ |
+ RefPtr<Scrollbar> m_horizontalScrollbar; |
+ RefPtr<Scrollbar> m_verticalScrollbar; |
+ ScrollbarMode m_horizontalScrollbarMode; |
+ ScrollbarMode m_verticalScrollbarMode; |
+ |
+ bool m_horizontalScrollbarLock; |
+ bool m_verticalScrollbarLock; |
+ |
+ HashSet<RefPtr<Widget> > m_children; |
+ |
+ DoubleSize m_pendingScrollDelta; |
+ DoublePoint m_scrollPosition; |
+ DoublePoint m_cachedScrollPosition; |
+ IntSize m_contentsSize; |
+ |
+ int m_scrollbarsAvoidingResizer; |
+ bool m_scrollbarsSuppressed; |
+ |
+ bool m_inUpdateScrollbars; |
+ |
+ IntPoint m_panScrollIconPoint; |
+ bool m_drawPanScrollIcon; |
+ |
+ bool m_clipsRepaints; |
+ |
+ IntRect rectToCopyOnScroll() const; |
+ |
+ void calculateOverhangAreasForPainting(IntRect& horizontalOverhangRect, IntRect& verticalOverhangRect); |
+ void updateOverhangAreas(); |
}; |
inline void FrameView::incrementVisuallyNonEmptyCharacterCount(unsigned count) |