bool Editor::deleteWithDirection(SelectionDirection direction, TextGranularity granularity, bool isTypingAction) { if (!canEdit()) return false; if (m_frame.selection().isRange()) { if (isTypingAction) { ASSERT(m_frame.document()); TypingCommand::deleteKeyPressed(*m_frame.document(), canSmartCopyOrDelete() ? TypingCommand::SmartDelete : 0, granularity); revealSelectionAfterEditingOperation(); } else { deleteSelectionWithSmartDelete(canSmartCopyOrDelete()); // Implicitly calls revealSelectionAfterEditingOperation(). } } else { TypingCommand::Options options = 0; if (canSmartCopyOrDelete()) options |= TypingCommand::SmartDelete; switch (direction) { case DirectionForward: case DirectionRight: ASSERT(m_frame.document()); TypingCommand::forwardDeleteKeyPressed(*m_frame.document(), options, granularity); break; case DirectionBackward: case DirectionLeft: ASSERT(m_frame.document()); TypingCommand::deleteKeyPressed(*m_frame.document(), options, granularity); break; } revealSelectionAfterEditingOperation(); } return true; }
void Editor::writeSelectionToPasteboard(Pasteboard& pasteboard) { PasteboardWebContent pasteboardContent; pasteboardContent.canSmartCopyOrDelete = canSmartCopyOrDelete(); pasteboardContent.text = selectedTextForDataTransfer(); pasteboardContent.markup = createMarkup(*selectedRange(), nullptr, AnnotateForInterchange, false, ResolveNonLocalURLs); pasteboardContent.callback = nullptr; pasteboard.write(pasteboardContent); }
void Editor::performDelete() { if (!canDelete()) return; deleteSelectionWithSmartDelete(canSmartCopyOrDelete()); }