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

Unified Diff: Source/core/frame/FrameView.h

Issue 641733004: Merge FrameView and ScrollView. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Rebaseline. Created 6 years, 2 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/core/accessibility/AXScrollbar.cpp ('k') | Source/core/frame/FrameView.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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)
« no previous file with comments | « Source/core/accessibility/AXScrollbar.cpp ('k') | Source/core/frame/FrameView.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698