Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(37)

Unified Diff: third_party/WebKit/Source/core/editing/Editor.cpp

Issue 2374743002: [InputEvent] Support |deleteByDrag|, |insertFromDrop| and fire in sequential order (Closed)
Patch Set: Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/core/editing/Editor.cpp
diff --git a/third_party/WebKit/Source/core/editing/Editor.cpp b/third_party/WebKit/Source/core/editing/Editor.cpp
index fb4d38efb0921a32a6cbb6442e0da96eb1549ef5..b20ac81d7503f3b13a401cfe667672dd3adbe6a0 100644
--- a/third_party/WebKit/Source/core/editing/Editor.cpp
+++ b/third_party/WebKit/Source/core/editing/Editor.cpp
@@ -348,7 +348,7 @@ bool Editor::deleteWithDirection(DeleteDirection direction, TextGranularity gran
return true;
}
-void Editor::deleteSelectionWithSmartDelete(bool smartDelete, InputEvent::InputType inputType)
+void Editor::deleteSelectionWithSmartDelete(bool smartDelete, InputEvent::InputType inputType, const Position& referenceMovePosition)
{
if (frame().selection().isNone())
return;
@@ -357,7 +357,7 @@ void Editor::deleteSelectionWithSmartDelete(bool smartDelete, InputEvent::InputT
const bool kExpandForSpecialElements = false;
const bool kSanitizeMarkup = true;
DCHECK(frame().document());
- DeleteSelectionCommand::create(*frame().document(), smartDelete, kMergeBlocksAfterDelete, kExpandForSpecialElements, kSanitizeMarkup, inputType)->apply();
+ DeleteSelectionCommand::create(*frame().document(), smartDelete, kMergeBlocksAfterDelete, kExpandForSpecialElements, kSanitizeMarkup, inputType, referenceMovePosition)->apply();
}
void Editor::pasteAsPlainText(const String& pastingText, bool smartReplace)
@@ -551,7 +551,7 @@ void Editor::replaceSelectionAfterDragging(DocumentFragment* fragment, bool smar
if (plainText)
options |= ReplaceSelectionCommand::MatchStyle;
DCHECK(frame().document());
- ReplaceSelectionCommand::create(*frame().document(), fragment, options, InputEvent::InputType::Drag)->apply();
+ ReplaceSelectionCommand::create(*frame().document(), fragment, options, InputEvent::InputType::InsertFromDrop)->apply();
}
void Editor::moveSelectionAfterDragging(DocumentFragment* fragment, const Position& pos, bool smartInsert, bool smartDelete)
@@ -719,6 +719,9 @@ void Editor::appliedEditing(CompositeEditCommand* cmd)
// Command will be equal to last edit command only in the case of typing
if (m_lastEditCommand.get() == cmd) {
DCHECK(cmd->isTypingCommand());
+ } else if (m_lastEditCommand && m_lastEditCommand->inputType() == InputEvent::InputType::DeleteByDrag && cmd->inputType() == InputEvent::InputType::InsertFromDrop) {
+ m_lastEditCommand->appendCommandToComposite(cmd);
+ 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|,
} else {
// Only register a new undo command if the command passed in is
// different from the last command

Powered by Google App Engine
This is Rietveld 408576698