WebCore::IntRect CachedNode::cursorRingBounds(const CachedFrame* frame) const { int partMax = mNavableRects; ASSERT(partMax > 0); WebCore::IntRect bounds = mCursorRing[0]; for (int partIndex = 1; partIndex < partMax; partIndex++) bounds.unite(mCursorRing[partIndex]); bounds.inflate(CURSOR_RING_HIT_TEST_RADIUS); return mIsInLayer ? frame->adjustBounds(this, bounds) : bounds; }
void WebPageCompositorPrivate::findFixedElementRect(LayerCompositingThread* layer, WebCore::IntRect& fixedElementRect) { if ((layer->hasFixedContainer() || layer->isFixedPosition() || layer->hasFixedAncestorInDOMTree()) && layer->layerRenderer()) { IntRect fixedRect = layer->layerRenderer()->toPixelViewportCoordinates(layer->boundingBox()); // FIXME: It's possible that the rects don't intersect now, but will be connected by a fixed rect found later. // We need to handle it as well. if (fixedElementRect.isEmpty() || fixedElementRect.intersects(fixedRect)) // Unite rects if they intersect each other. fixedElementRect.unite(fixedRect); else if (fixedRect.y() < fixedElementRect.y()) // Replace the fixedElementRect with fixedRect if fixedRect is above it (closer to top). fixedElementRect = fixedRect; } const Vector<RefPtr<LayerCompositingThread> >& sublayers = layer->sublayers(); for (size_t i = 0; i < sublayers.size(); i++) findFixedElementRect(sublayers[i].get(), fixedElementRect); }