Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright (C) 2006, 2007, 2008, 2011 Apple Inc. All rights reserved. | 2 * Copyright (C) 2006, 2007, 2008, 2011 Apple Inc. All rights reserved. |
| 3 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) | 3 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) |
| 4 * | 4 * |
| 5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
| 6 * modification, are permitted provided that the following conditions | 6 * modification, are permitted provided that the following conditions |
| 7 * are met: | 7 * are met: |
| 8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
| (...skipping 330 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 341 | 341 |
| 342 // FIXME: We should to move this down into deleteKeyPressed. | 342 // FIXME: We should to move this down into deleteKeyPressed. |
| 343 // clear the "start new kill ring sequence" setting, because it was set to t rue | 343 // clear the "start new kill ring sequence" setting, because it was set to t rue |
| 344 // when the selection was updated by deleting the range | 344 // when the selection was updated by deleting the range |
| 345 if (killRing) | 345 if (killRing) |
| 346 setStartNewKillRingSequence(false); | 346 setStartNewKillRingSequence(false); |
| 347 | 347 |
| 348 return true; | 348 return true; |
| 349 } | 349 } |
| 350 | 350 |
| 351 void Editor::deleteSelectionWithSmartDelete(bool smartDelete, InputEvent::InputT ype inputType) | 351 void Editor::deleteSelectionWithSmartDelete(bool smartDelete, InputEvent::InputT ype inputType, const Position& referenceMovePosition) |
| 352 { | 352 { |
| 353 if (frame().selection().isNone()) | 353 if (frame().selection().isNone()) |
| 354 return; | 354 return; |
| 355 | 355 |
| 356 const bool kMergeBlocksAfterDelete = true; | 356 const bool kMergeBlocksAfterDelete = true; |
| 357 const bool kExpandForSpecialElements = false; | 357 const bool kExpandForSpecialElements = false; |
| 358 const bool kSanitizeMarkup = true; | 358 const bool kSanitizeMarkup = true; |
| 359 DCHECK(frame().document()); | 359 DCHECK(frame().document()); |
| 360 DeleteSelectionCommand::create(*frame().document(), smartDelete, kMergeBlock sAfterDelete, kExpandForSpecialElements, kSanitizeMarkup, inputType)->apply(); | 360 DeleteSelectionCommand::create(*frame().document(), smartDelete, kMergeBlock sAfterDelete, kExpandForSpecialElements, kSanitizeMarkup, inputType, referenceMo vePosition)->apply(); |
| 361 } | 361 } |
| 362 | 362 |
| 363 void Editor::pasteAsPlainText(const String& pastingText, bool smartReplace) | 363 void Editor::pasteAsPlainText(const String& pastingText, bool smartReplace) |
| 364 { | 364 { |
| 365 Element* target = findEventTargetFromSelection(); | 365 Element* target = findEventTargetFromSelection(); |
| 366 if (!target) | 366 if (!target) |
| 367 return; | 367 return; |
| 368 target->dispatchEvent(TextEvent::createForPlainTextPaste(frame().domWindow() , pastingText, smartReplace)); | 368 target->dispatchEvent(TextEvent::createForPlainTextPaste(frame().domWindow() , pastingText, smartReplace)); |
| 369 } | 369 } |
| 370 | 370 |
| (...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 544 | 544 |
| 545 // TODO(xiaochengh): Merge it with |replaceSelectionWithFragment()|. | 545 // TODO(xiaochengh): Merge it with |replaceSelectionWithFragment()|. |
| 546 void Editor::replaceSelectionAfterDragging(DocumentFragment* fragment, bool smar tReplace, bool plainText) | 546 void Editor::replaceSelectionAfterDragging(DocumentFragment* fragment, bool smar tReplace, bool plainText) |
| 547 { | 547 { |
| 548 ReplaceSelectionCommand::CommandOptions options = ReplaceSelectionCommand::S electReplacement | ReplaceSelectionCommand::PreventNesting; | 548 ReplaceSelectionCommand::CommandOptions options = ReplaceSelectionCommand::S electReplacement | ReplaceSelectionCommand::PreventNesting; |
| 549 if (smartReplace) | 549 if (smartReplace) |
| 550 options |= ReplaceSelectionCommand::SmartReplace; | 550 options |= ReplaceSelectionCommand::SmartReplace; |
| 551 if (plainText) | 551 if (plainText) |
| 552 options |= ReplaceSelectionCommand::MatchStyle; | 552 options |= ReplaceSelectionCommand::MatchStyle; |
| 553 DCHECK(frame().document()); | 553 DCHECK(frame().document()); |
| 554 ReplaceSelectionCommand::create(*frame().document(), fragment, options, Inpu tEvent::InputType::Drag)->apply(); | 554 ReplaceSelectionCommand::create(*frame().document(), fragment, options, Inpu tEvent::InputType::InsertFromDrop)->apply(); |
| 555 } | 555 } |
| 556 | 556 |
| 557 void Editor::moveSelectionAfterDragging(DocumentFragment* fragment, const Positi on& pos, bool smartInsert, bool smartDelete) | 557 void Editor::moveSelectionAfterDragging(DocumentFragment* fragment, const Positi on& pos, bool smartInsert, bool smartDelete) |
| 558 { | 558 { |
| 559 MoveSelectionCommand::create(fragment, pos, smartInsert, smartDelete)->apply (); | 559 MoveSelectionCommand::create(fragment, pos, smartInsert, smartDelete)->apply (); |
| 560 } | 560 } |
| 561 | 561 |
| 562 EphemeralRange Editor::selectedRange() | 562 EphemeralRange Editor::selectedRange() |
| 563 { | 563 { |
| 564 return frame().selection().selection().toNormalizedEphemeralRange(); | 564 return frame().selection().selection().toNormalizedEphemeralRange(); |
| (...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 712 | 712 |
| 713 // Don't clear the typing style with this selection change. We do those thin gs elsewhere if necessary. | 713 // Don't clear the typing style with this selection change. We do those thin gs elsewhere if necessary. |
| 714 changeSelectionAfterCommand(newSelection, 0); | 714 changeSelectionAfterCommand(newSelection, 0); |
| 715 | 715 |
| 716 if (!cmd->preservesTypingStyle()) | 716 if (!cmd->preservesTypingStyle()) |
| 717 frame().selection().clearTypingStyle(); | 717 frame().selection().clearTypingStyle(); |
| 718 | 718 |
| 719 // Command will be equal to last edit command only in the case of typing | 719 // Command will be equal to last edit command only in the case of typing |
| 720 if (m_lastEditCommand.get() == cmd) { | 720 if (m_lastEditCommand.get() == cmd) { |
| 721 DCHECK(cmd->isTypingCommand()); | 721 DCHECK(cmd->isTypingCommand()); |
| 722 } else if (m_lastEditCommand && m_lastEditCommand->inputType() == InputEvent ::InputType::DeleteByDrag && cmd->inputType() == InputEvent::InputType::InsertFr omDrop) { | |
| 723 m_lastEditCommand->appendCommandToComposite(cmd); | |
| 724 m_lastEditCommand = cmd; | |
|
chongz
2016/09/28 02:19:26
Has potential issue. These 2 commands might be cre
yosin_UTC9
2016/09/28 04:19:03
How about having DragAndDropCommand, derived from
chongz
2016/09/29 02:36:22
Added command group wrapper |DragAndDropCommand|,
| |
| 722 } else { | 725 } else { |
| 723 // Only register a new undo command if the command passed in is | 726 // Only register a new undo command if the command passed in is |
| 724 // different from the last command | 727 // different from the last command |
| 725 m_lastEditCommand = cmd; | 728 m_lastEditCommand = cmd; |
| 726 m_undoStack->registerUndoStep(m_lastEditCommand->ensureComposition()); | 729 m_undoStack->registerUndoStep(m_lastEditCommand->ensureComposition()); |
| 727 } | 730 } |
| 728 | 731 |
| 729 respondToChangedContents(newSelection); | 732 respondToChangedContents(newSelection); |
| 730 } | 733 } |
| 731 | 734 |
| (...skipping 685 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1417 | 1420 |
| 1418 DEFINE_TRACE(Editor) | 1421 DEFINE_TRACE(Editor) |
| 1419 { | 1422 { |
| 1420 visitor->trace(m_frame); | 1423 visitor->trace(m_frame); |
| 1421 visitor->trace(m_lastEditCommand); | 1424 visitor->trace(m_lastEditCommand); |
| 1422 visitor->trace(m_undoStack); | 1425 visitor->trace(m_undoStack); |
| 1423 visitor->trace(m_mark); | 1426 visitor->trace(m_mark); |
| 1424 } | 1427 } |
| 1425 | 1428 |
| 1426 } // namespace blink | 1429 } // namespace blink |
| OLD | NEW |