Ejemplo n.º 1
0
void FrameCaret::paintCaret(GraphicsContext& context,
                            const LayoutPoint& paintOffset) {
  if (m_caretVisibility == CaretVisibility::Hidden)
    return;

  if (!(isActive() && m_shouldPaintCaret))
    return;

  updateCaretRect(caretPosition());
  CaretBase::paintCaret(caretPosition().anchorNode(), context, paintOffset,
                        DisplayItem::kCaret);
}
Ejemplo n.º 2
0
IntRect FrameCaret::absoluteCaretBounds() {
  DCHECK_NE(m_frame->document()->lifecycle().state(),
            DocumentLifecycle::InPaintInvalidation);
  DCHECK(!m_frame->document()->needsLayoutTreeUpdate());
  DocumentLifecycle::DisallowTransitionScope disallowTransition(
      m_frame->document()->lifecycle());

  if (!isActive()) {
    clearCaretRect();
  } else {
    if (enclosingTextFormControl(caretPosition().position())) {
      if (isVisuallyEquivalentCandidate(caretPosition().position()))
        updateCaretRect(caretPosition());
      else
        updateCaretRect(createVisiblePosition(caretPosition()));
    } else {
      updateCaretRect(createVisiblePosition(caretPosition()));
    }
  }
  return absoluteBoundsForLocalRect(caretPosition().anchorNode(),
                                    localCaretRectWithoutUpdate());
}
Ejemplo n.º 3
0
void DragCaretController::setCaretPosition(const VisiblePosition& position)
{
    m_position = position;
    setCaretRectNeedsUpdate();
    Document* document = 0;
    if (Node* node = m_position.deepEquivalent().deprecatedNode()) {
        document = &node->document();
    }
    if (m_position.isNull() || m_position.isOrphan()) {
        clearCaretRect();
    } else {
        document->updateRenderTreeIfNeeded();
        updateCaretRect(document, m_position);
    }
}
Ejemplo n.º 4
0
void CaretBase::updateCaretRect(const VisiblePosition& caretPosition) {
    updateCaretRect(caretPosition.toPositionWithAffinity());
}
Ejemplo n.º 5
0
bool CaretBase::updateCaretRect(Document* document, const VisiblePosition& caretPosition)
{
    return updateCaretRect(document, PositionWithAffinity(caretPosition.deepEquivalent(), caretPosition.affinity()));
}