+2006-09-24 Dave Hyatt <hyatt@apple.com>
+
+ Cleanup of Scrollbar APIs. Rename setKnobProportion to setProportion. Rename setScrollbarValue to updateThumbPosition.
+ Give setProportion a base class implementation and implement it using the same pattern as setValue/updateThumbPosition (so that
+ the base calls a protected virtual function, updateThumbProportion, implemented by the derived class to update the actual scrollbar itself).
+
+ * platform/ScrollBar.cpp:
+ (WebCore::ScrollBar::setValue):
+ (WebCore::ScrollBar::setProportion):
+ * platform/ScrollBar.h:
+ (WebCore::ScrollBar::value):
+ * platform/mac/PlatformScrollBar.h:
+ * platform/mac/PlatformScrollBarMac.mm:
+ (WebCore::PlatformScrollBar::updateThumbPosition):
+ (WebCore::PlatformScrollBar::updateThumbProportion):
+ * platform/win/PlatformScrollBar.h:
+ * platform/win/TemporaryLinkStubs.cpp:
+ (PlatformScrollBar::updateThumbPosition):
+ (PlatformScrollBar::updateThumbProportion):
+ * rendering/RenderLayer.cpp:
+ (WebCore::RenderLayer::updateScrollInfoAfterLayout):
+
2006-09-23 Alexey Proskuryakov <ap@nypop.com>
Reviewed by Eric.
return false; // Our value stayed the same.
m_currentPos = v;
- setScrollBarValue(v);
+ updateThumbPosition();
if (client())
client()->valueChanged(this);
return true;
}
+void ScrollBar::setProportion(int visibleSize, int totalSize)
+{
+ m_visibleSize = visibleSize;
+ m_totalSize = totalSize;
+
+ updateThumbProportion();
+}
+
void ScrollBar::setSteps(int lineStep, int pageStep)
{
m_lineStep = lineStep;
ScrollBarOrientation orientation() const { return m_orientation; }
int value() const { return m_currentPos; }
-
- virtual void setScrollBarValue(int) = 0;
- virtual void setKnobProportion(int visibleSize, int totalSize) = 0;
void setSteps(int lineStep, int pageStep);
bool setValue(int);
-
+ void setProportion(int visibleSize, int totalSize);
+
bool scroll(ScrollDirection, ScrollGranularity, float multiplier = 1.0);
virtual int width() const = 0;
}
protected:
+ virtual void updateThumbPosition() = 0;
+ virtual void updateThumbProportion() = 0;
+
ScrollBarClient* client() const { return m_client; }
ScrollBarClient* m_client;
virtual bool isWidget() const { return true; }
- virtual void setScrollBarValue(int v);
- virtual void setKnobProportion(int visibleSize, int totalSize);
-
virtual int width() const;
virtual int height() const;
virtual void setRect(const IntRect&);
virtual void paint(GraphicsContext*, const IntRect& damageRect);
bool scrollbarHit(NSScrollerPart);
+
+protected:
+ virtual void updateThumbPosition();
+ virtual void updateThumbProportion();
};
}
removeFromSuperview();
}
-void PlatformScrollBar::setScrollBarValue(int v)
+void PlatformScrollBar::updateThumbPosition()
{
BEGIN_BLOCK_OBJC_EXCEPTIONS;
WebCoreScrollBar *bar = (WebCoreScrollBar *)getView();
END_BLOCK_OBJC_EXCEPTIONS;
}
-void PlatformScrollBar::setKnobProportion(int visibleArea, int totalArea)
+void PlatformScrollBar::updateThumbProportion()
{
- m_visibleSize = visibleArea;
- m_totalSize = totalArea;
float val = (float)m_visibleSize/m_totalSize;
BEGIN_BLOCK_OBJC_EXCEPTIONS;
virtual bool isWidget() const { return true; }
- virtual void setScrollBarValue(int v);
- virtual void setKnobProportion(int visibleSize, int totalSize);
-
virtual int width() const;
virtual int height() const;
virtual void setRect(const IntRect&);
virtual void setEnabled(bool);
virtual void paint(GraphicsContext*, const IntRect& damageRect);
+
+protected:
+ virtual void updateThumbPosition();
+ virtual void updateThumbProportion();
};
}
int PlatformScrollBar::height() const { return 0; }
void PlatformScrollBar::setEnabled(bool) { }
void PlatformScrollBar::paint(GraphicsContext*, const IntRect& damageRect) { }
-void PlatformScrollBar::setScrollBarValue(int v) { }
-void PlatformScrollBar::setKnobProportion(int visibleSize, int totalSize) { }
+void PlatformScrollBar::updateThumbPosition() { }
+void PlatformScrollBar::updateThumbProportion() { }
void PlatformScrollBar::setRect(const IntRect&) { }
ScrollBar::ScrollBar(ScrollBarClient*, ScrollBarOrientation) { }
int pageStep = (clientWidth-PAGE_KEEP);
if (pageStep < 0) pageStep = clientWidth;
m_hBar->setSteps(LINE_STEP, pageStep);
- m_hBar->setKnobProportion(clientWidth, m_scrollWidth);
+ m_hBar->setProportion(clientWidth, m_scrollWidth);
m_hBar->setValue(scrollXOffset());
}
if (m_vBar) {
int pageStep = (clientHeight-PAGE_KEEP);
if (pageStep < 0) pageStep = clientHeight;
m_vBar->setSteps(LINE_STEP, pageStep);
- m_vBar->setKnobProportion(clientHeight, m_scrollHeight);
+ m_vBar->setProportion(clientHeight, m_scrollHeight);
m_object->repaintRectangle(IntRect(m_object->borderLeft() + m_object->clientWidth(),
m_object->borderTop(), verticalScrollbarWidth(),
m_object->height() - m_object->borderTop() - m_object->borderBottom()));