IntSize newSize(w,h);
if (m_data->contentsSize != newSize) {
m_data->contentsSize = newSize;
- updateScrollBars();
+ updateScrollBars(m_data->scrollOffset);
}
}
if (newScrollOffset != scrollOffset) {
m_data->scrollOffset = newScrollOffset;
- updateScrollBars();
+ updateScrollBars(m_data->scrollOffset);
// ScrollBar updates can fail, so we check the final delta before scrolling
IntSize scrollDelta = m_data->scrollOffset - scrollOffset;
if (scrollDelta == IntSize())
{
m_data->suppressScrollBars = suppressed;
if (repaintOnSuppress)
- updateScrollBars();
+ updateScrollBars(m_data->scrollOffset);
}
void ScrollView::setHScrollBarMode(ScrollBarMode newMode)
{
if (m_data->hScrollBarMode != newMode) {
m_data->hScrollBarMode = newMode;
- updateScrollBars();
+ updateScrollBars(m_data->scrollOffset);
}
}
{
if (m_data->vScrollBarMode != newMode) {
m_data->vScrollBarMode = newMode;
- updateScrollBars();
+ updateScrollBars(m_data->scrollOffset);
}
}
void ScrollView::setScrollBarsMode(ScrollBarMode newMode)
{
m_data->hScrollBarMode = m_data->vScrollBarMode = newMode;
- updateScrollBars();
+ updateScrollBars(m_data->scrollOffset);
}
void ScrollView::setStaticBackground(bool flag)
m_data->hasStaticBackground = flag;
}
-int ScrollView::updateScrollInfo(short type, int current, int max, int pageSize)
+static int updateScrollInfo(ScrollView* view, short type, int current, int max, int pageSize)
{
SCROLLINFO si;
si.cbSize = sizeof(si);
si.nMax = max;
si.nPage = pageSize;
si.nPos = current;
- SetScrollInfo(containingWindow(), type, &si, TRUE);
- GetScrollInfo(containingWindow(), type, &si);
+ SetScrollInfo(view->containingWindow(), type, &si, TRUE);
+ GetScrollInfo(view->containingWindow(), type, &si);
return si.nPos;
}
-void ScrollView::updateScrollBars()
+void ScrollView::updateScrollBars(const IntPoint&)
{
IntSize maxScrollPosition(contentsWidth(), contentsHeight());
IntSize scroll = scrollOffset().shrunkTo(maxScrollPosition);
scroll.clampNegativeToZero();
m_data->scrollOffset =
- IntSize(updateScrollInfo(SB_HORZ, scroll.width(), contentsWidth() - 1, width()),
- updateScrollInfo(SB_VERT, scroll.height(), contentsHeight() - 1, height()));
+ IntSize(updateScrollInfo(this, SB_HORZ, scroll.width(), contentsWidth() - 1, width()),
+ updateScrollInfo(this, SB_VERT, scroll.height(), contentsHeight() - 1, height()));
if (m_data->hScrollBarMode != ScrollBarAuto || m_data->suppressScrollBars)
ShowScrollBar(containingWindow(), SB_HORZ, (m_data->hScrollBarMode != ScrollBarAlwaysOff) && !m_data->suppressScrollBars);