void MouseRelatedEventImpl::computeLayerPos() { m_layerX = m_clientX; m_layerY = m_clientY; DocumentImpl *doc = view()->document(); if (!doc || !doc->renderer()) { return; } khtml::RenderObject::NodeInfo renderInfo(true, false); doc->renderer()->layer()->hitTest(renderInfo, m_clientX, m_clientY); NodeImpl *node = renderInfo.innerNonSharedNode(); while (node && !node->renderer()) { node = node->parent(); } if (!node) { return; } node->renderer()->enclosingLayer()->updateLayerPosition(); for (khtml::RenderLayer *layer = node->renderer()->enclosingLayer(); layer != NULL; layer = layer->parent()) { m_layerX -= layer->xPos(); m_layerY -= layer->yPos(); } }
void MouseEventImpl::computeLayerPos() { m_layerX = m_pageX; m_layerY = m_pageY; DocumentImpl *doc = view() ? view()->document() : 0; if(doc) { khtml::RenderObject::NodeInfo renderInfo(true, false); doc->renderer()->layer()->nodeAtPoint(renderInfo, m_pageX, m_pageY); NodeImpl *node = renderInfo.innerNonSharedNode(); while(node && !node->renderer()) node = node->parent(); if(node) { node->renderer()->enclosingLayer()->updateLayerPosition(); for(RenderLayer *layer = node->renderer()->enclosingLayer(); layer; layer = layer->parent()) { m_layerX -= layer->xPos(); m_layerY -= layer->yPos(); } } } }