| 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)
|
|
|