void PlatformScrollbar::setRect(const IntRect& rect) { // Get our window resizer rect and see if we overlap. Adjust to avoid the overlap // if necessary. IntRect adjustedRect(rect); if (parent() && parent()->isFrameView()) { bool overlapsResizer = false; FrameView* view = static_cast<FrameView*>(parent()); IntRect resizerRect = view->windowResizerRect(); resizerRect.setLocation(view->convertFromContainingWindow(resizerRect.location())); if (rect.intersects(resizerRect)) { if (orientation() == HorizontalScrollbar) { int overlap = rect.right() - resizerRect.x(); if (overlap > 0 && resizerRect.right() >= rect.right()) { adjustedRect.setWidth(rect.width() - overlap); overlapsResizer = true; } } else { int overlap = rect.bottom() - resizerRect.y(); if (overlap > 0 && resizerRect.bottom() >= rect.bottom()) { adjustedRect.setHeight(rect.height() - overlap); overlapsResizer = true; } } } if (overlapsResizer != m_overlapsResizer) { m_overlapsResizer = overlapsResizer; view->adjustOverlappingScrollbarCount(m_overlapsResizer ? 1 : -1); } } setFrameGeometry(adjustedRect); }