IntRect RenderReplaced::localSelectionRect(bool checkWhetherSelected) const { if (checkWhetherSelected && !isSelected()) return IntRect(); if (!m_inlineBoxWrapper) // We're a block-level replaced element. Just return our own dimensions. return IntRect(0, 0, width(), height()); RootInlineBox* root = m_inlineBoxWrapper->root(); int newLogicalTop = root->block()->style()->isFlippedBlocksWritingMode() ? m_inlineBoxWrapper->logicalBottom() - root->selectionBottom() : root->selectionTop() - m_inlineBoxWrapper->logicalTop(); if (root->block()->style()->isHorizontalWritingMode()) return IntRect(0, newLogicalTop, width(), root->selectionHeight()); return IntRect(newLogicalTop, 0, root->selectionHeight(), height()); }
void InitialColumnHeightFinder::examineLine(const RootInlineBox& line) { LayoutUnit lineTop = line.lineTopWithLeading(); LayoutUnit lineTopInFlowThread = flowThreadOffset() + lineTop; LayoutUnit minimumLogialHeight = columnLogicalHeightRequirementForLine(line.block().styleRef(), line); m_tallestUnbreakableLogicalHeight = std::max(m_tallestUnbreakableLogicalHeight, minimumLogialHeight); ASSERT(isFirstAfterBreak(lineTopInFlowThread) || !line.paginationStrut()); if (isFirstAfterBreak(lineTopInFlowThread)) recordStrutBeforeOffset(lineTopInFlowThread, line.paginationStrut()); }