static void localToPageQuad(const RenderObject& renderer, const LayoutRect& rect, FloatQuad* quad) { LocalFrame* frame = renderer.frame(); FrameView* view = frame->view(); FloatQuad absolute = renderer.localToAbsoluteQuad(FloatQuad(rect)); quad->setP1(view->contentsToRootView(roundedIntPoint(absolute.p1()))); quad->setP2(view->contentsToRootView(roundedIntPoint(absolute.p2()))); quad->setP3(view->contentsToRootView(roundedIntPoint(absolute.p3()))); quad->setP4(view->contentsToRootView(roundedIntPoint(absolute.p4()))); }
bool RenderTheme::isDefault(const RenderObject& o) const { // A button should only have the default appearance if the page is active if (!isActive(o)) return false; if (!o.frame().settings().applicationChromeMode()) return false; return o.style().appearance() == DefaultButtonPart; }
void AutoscrollController::updateAutoscrollRenderer() { if (!m_autoscrollRenderer) return; RenderObject* renderer = m_autoscrollRenderer; #if OS(WIN) HitTestResult hitTest = renderer->frame()->eventHandler().hitTestResultAtPoint(m_panScrollStartPos, HitTestRequest::ReadOnly | HitTestRequest::Active | HitTestRequest::ConfusingAndOftenMisusedDisallowShadowContent); if (Node* nodeAtPoint = hitTest.innerNode()) renderer = nodeAtPoint->renderer(); #endif while (renderer && !(renderer->isBox() && toRenderBox(renderer)->canAutoscroll())) renderer = renderer->parent(); m_autoscrollRenderer = renderer && renderer->isBox() ? toRenderBox(renderer) : 0; }
RenderLayer* LinkHighlight::computeEnclosingCompositingLayer() { if (!m_node || !m_node->renderer()) return 0; // Find the nearest enclosing composited layer and attach to it. We may need to cross frame boundaries // to find a suitable layer. RenderObject* renderer = m_node->renderer(); RenderLayerModelObject* repaintContainer; do { repaintContainer = renderer->containerForRepaint(); if (!repaintContainer) { renderer = renderer->frame()->ownerRenderer(); if (!renderer) return 0; } } while (!repaintContainer); RenderLayer* renderLayer = repaintContainer->layer(); if (!renderLayer || renderLayer->compositingState() == NotComposited) return 0; GraphicsLayer* newGraphicsLayer = renderLayer->compositedLayerMapping()->mainGraphicsLayer(); m_clipLayer->setSublayerTransform(SkMatrix44()); if (!newGraphicsLayer->drawsContent()) { if (renderLayer->scrollableArea()->usesCompositedScrolling()) { ASSERT(renderLayer->hasCompositedLayerMapping() && renderLayer->compositedLayerMapping()->scrollingContentsLayer()); newGraphicsLayer = renderLayer->compositedLayerMapping()->scrollingContentsLayer(); } else ASSERT_NOT_REACHED(); } if (m_currentGraphicsLayer != newGraphicsLayer) { if (m_currentGraphicsLayer) clearGraphicsLayerLinkHighlightPointer(); m_currentGraphicsLayer = newGraphicsLayer; m_currentGraphicsLayer->addLinkHighlight(this); } return renderLayer; }
RenderLayer* LinkHighlight::computeEnclosingCompositingLayer() { if (!m_node || !m_node->renderer()) return 0; // Find the nearest enclosing composited layer and attach to it. We may need to cross frame boundaries // to find a suitable layer. RenderObject* renderer = m_node->renderer(); RenderLayer* renderLayer; do { renderLayer = renderer->enclosingLayer()->enclosingCompositingLayerForRepaint(); if (!renderLayer) { renderer = renderer->frame()->ownerRenderer(); if (!renderer) return 0; } } while (!renderLayer); CompositedLayerMappingPtr compositedLayerMapping = renderLayer->compositingState() == PaintsIntoGroupedBacking ? renderLayer->groupedMapping() : renderLayer->compositedLayerMapping(); GraphicsLayer* newGraphicsLayer = renderLayer->compositingState() == PaintsIntoGroupedBacking ? compositedLayerMapping->squashingLayer() : compositedLayerMapping->mainGraphicsLayer(); m_clipLayer->setTransform(SkMatrix44(SkMatrix44::kIdentity_Constructor)); if (!newGraphicsLayer->drawsContent()) { if (renderLayer->scrollableArea() && renderLayer->scrollableArea()->usesCompositedScrolling()) { ASSERT(renderLayer->hasCompositedLayerMapping() && renderLayer->compositedLayerMapping()->scrollingContentsLayer()); newGraphicsLayer = compositedLayerMapping->scrollingContentsLayer(); } } if (m_currentGraphicsLayer != newGraphicsLayer) { if (m_currentGraphicsLayer) clearGraphicsLayerLinkHighlightPointer(); m_currentGraphicsLayer = newGraphicsLayer; m_currentGraphicsLayer->addLinkHighlight(this); } return renderLayer; }