Ejemplo n.º 1
0
void DataTransfer::writeSelection(const FrameSelection& selection) {
  if (!m_dataObject)
    return;

  if (!enclosingTextControl(selection.start())) {
    m_dataObject->setHTMLAndBaseURL(selection.selectedHTMLForClipboard(),
                                    selection.frame()->document()->url());
  }

  String str = selection.selectedTextForClipboard();
#if OS(WIN)
  replaceNewlinesWithWindowsStyleNewlines(str);
#endif
  replaceNBSPWithSpace(str);
  m_dataObject->setData(mimeTypeTextPlain, str);
}
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 (enclosingTextControl(caretPosition().position())) {
      if (isVisuallyEquivalentCandidate(caretPosition().position()))
        updateCaretRect(caretPosition());
      else
        updateCaretRect(createVisiblePosition(caretPosition()));
    } else {
      updateCaretRect(createVisiblePosition(caretPosition()));
    }
  }
  return absoluteBoundsForLocalRect(caretPosition().anchorNode(),
                                    localCaretRectWithoutUpdate());
}