#pragma once
#if PLATFORM(MAC)
#include "ScrollerMac.h"
#include <WebCore/FloatRect.h>
#include <WebCore/FloatSize.h>
OBJC_CLASS NSScrollerImpPair;
OBJC_CLASS WKScrollerImpPairDelegate;
namespace WebCore {
class PlatformMouseEvent;
class PlatformWheelEvent;
class ScrollingTreeScrollingNode;
}
namespace WebKit {
class ScrollerPairMac {
WTF_MAKE_FAST_ALLOCATED;
public:
ScrollerPairMac(WebCore::ScrollingTreeScrollingNode&);
~ScrollerPairMac();
ScrollerMac& verticalScroller() { return m_verticalScroller; }
ScrollerMac& horizontalScroller() { return m_horizontalScroller; }
bool handleWheelEvent(const WebCore::PlatformWheelEvent&);
bool handleMouseEvent(const WebCore::PlatformMouseEvent&);
void updateValues();
WebCore::FloatSize visibleSize() const;
WebCore::IntPoint lastKnownMousePosition() const { return m_lastKnownMousePosition; }
bool useDarkAppearance() const;
struct Values {
float value;
float proportion;
};
Values valuesForOrientation(ScrollerMac::Orientation);
NSScrollerImpPair *scrollerImpPair() { return m_scrollerImpPair.get(); }
private:
WebCore::ScrollingTreeScrollingNode& m_scrollingNode;
ScrollerMac m_verticalScroller;
ScrollerMac m_horizontalScroller;
WebCore::FloatSize m_contentSize;
WebCore::FloatRect m_visibleContentRect;
WebCore::IntPoint m_lastKnownMousePosition;
Optional<WebCore::FloatPoint> m_lastScrollPosition;
RetainPtr<NSScrollerImpPair> m_scrollerImpPair;
RetainPtr<WKScrollerImpPairDelegate> m_scrollerImpPairDelegate;
};
}
#endif