//----------------------------------------------------------------------------- // WebPointerEventHandler::highlitableElement //----------------------------------------------------------------------------- TBrCtlDefs::TBrCtlElementType WebPointerEventHandler::highlitableElement() { TRect elRect; TBrCtlDefs::TBrCtlElementType elType = TBrCtlDefs::EElementNone; Frame* coreFrame = core(m_webview->mainFrame()); WebCursor* cursor = StaticObjectsContainer::instance()->webCursor(); TPointerEvent event; TPoint pos = cursor->position(); WebFrame* wfrm = cursor->getFrameAtPoint(pos); Frame* frm = core(wfrm); TPoint pt(wfrm->frameView()->viewCoordsInFrameCoords(pos)); TPoint nodePoint; Element* eventNode = frm->document()->elementFromPoint(pos.iX, pos.iY); m_highlightedNode = NULL; Node* retNode = 0; frm->bridge()->getTypeFromElement(eventNode, elType, elRect, retNode); if (elType == TBrCtlDefs::EElementNone) { Node* n = wfrm->getClosestAnchorElement(cursor->position(), pos); if (n) { wfrm = cursor->getFrameAtPoint(pos); frm = core(wfrm); eventNode = frm->document()->elementFromPoint(pos.iX, pos.iY); frm->bridge()->getTypeFromElement(eventNode, elType, elRect, retNode); TPoint nodePoint = n->getRect().Rect().Center(); m_offset = (pt.iX- nodePoint.iX)*(pt.iX- nodePoint.iX) + (pt.iY- nodePoint.iY)*(pt.iY- nodePoint.iY); } } m_highlightedNode = eventNode; if (m_highlightedNode) { m_highlightPos = pos; m_buttonDownEvent.iPosition = m_highlightPos; } m_webview->setFocusedElementType(elType); return elType; }