bool layoutObjectContainsPosition(LayoutObject* target, const Position& position) { for (LayoutObject* layoutObject = layoutObjectFromPosition(position); layoutObject && layoutObject->node(); layoutObject = layoutObject->parent()) { if (layoutObject == target) return true; } return false; }
RenderedPosition::RenderedPosition(const VisiblePosition& position) : m_layoutObject(nullptr) , m_inlineBox(nullptr) , m_offset(0) , m_prevLeafChild(uncachedInlineBox()) , m_nextLeafChild(uncachedInlineBox()) { if (position.isNull()) return; position.getInlineBoxAndOffset(m_inlineBox, m_offset); if (m_inlineBox) m_layoutObject = &m_inlineBox->layoutObject(); else m_layoutObject = layoutObjectFromPosition(position.deepEquivalent()); }
RenderedPosition::RenderedPosition(const Position& position, EAffinity affinity) : m_layoutObject(nullptr) , m_inlineBox(nullptr) , m_offset(0) , m_prevLeafChild(uncachedInlineBox()) , m_nextLeafChild(uncachedInlineBox()) { if (position.isNull()) return; position.getInlineBoxAndOffset(affinity, m_inlineBox, m_offset); if (m_inlineBox) m_layoutObject = &m_inlineBox->layoutObject(); else m_layoutObject = layoutObjectFromPosition(position); }
RenderedPosition::RenderedPosition(const Position& position, TextAffinity affinity) : m_layoutObject(nullptr) , m_inlineBox(nullptr) , m_offset(0) , m_prevLeafChild(uncachedInlineBox()) , m_nextLeafChild(uncachedInlineBox()) { if (position.isNull()) return; InlineBoxPosition boxPosition = computeInlineBoxPosition(position, affinity); m_inlineBox = boxPosition.inlineBox; m_offset = boxPosition.offsetInBox; if (m_inlineBox) m_layoutObject = &m_inlineBox->layoutObject(); else m_layoutObject = layoutObjectFromPosition(position); }
RenderedPosition::RenderedPosition(const VisiblePosition& position) : m_layoutObject(nullptr) , m_inlineBox(nullptr) , m_offset(0) , m_prevLeafChild(uncachedInlineBox()) , m_nextLeafChild(uncachedInlineBox()) { if (position.isNull()) return; InlineBoxPosition boxPosition = position.computeInlineBoxPosition(); m_inlineBox = boxPosition.inlineBox; m_offset = boxPosition.offsetInBox; if (m_inlineBox) m_layoutObject = &m_inlineBox->layoutObject(); else m_layoutObject = layoutObjectFromPosition(position.deepEquivalent()); }