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

Side by Side Diff: third_party/WebKit/Source/core/editing/commands/CompositeEditCommand.cpp

Issue 2374743002: [InputEvent] Support |deleteByDrag|, |insertFromDrop| and fire in sequential order (Closed)
Patch Set: Created 4 years, 2 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 unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2005, 2006, 2007, 2008 Apple Inc. All rights reserved. 2 * Copyright (C) 2005, 2006, 2007, 2008 Apple Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
143 InputEvent::InputType EditCommandComposition::inputType() const 143 InputEvent::InputType EditCommandComposition::inputType() const
144 { 144 {
145 return m_inputType; 145 return m_inputType;
146 } 146 }
147 147
148 void EditCommandComposition::append(SimpleEditCommand* command) 148 void EditCommandComposition::append(SimpleEditCommand* command)
149 { 149 {
150 m_commands.append(command); 150 m_commands.append(command);
151 } 151 }
152 152
153 void EditCommandComposition::append(EditCommandComposition* composition)
154 {
155 m_commands.appendVector(composition->m_commands);
156 }
157
153 void EditCommandComposition::setStartingSelection(const VisibleSelection& select ion) 158 void EditCommandComposition::setStartingSelection(const VisibleSelection& select ion)
154 { 159 {
155 m_startingSelection = selection; 160 m_startingSelection = selection;
156 m_startingRootEditableElement = selection.rootEditableElement(); 161 m_startingRootEditableElement = selection.rootEditableElement();
157 } 162 }
158 163
159 void EditCommandComposition::setEndingSelection(const VisibleSelection& selectio n) 164 void EditCommandComposition::setEndingSelection(const VisibleSelection& selectio n)
160 { 165 {
161 m_endingSelection = selection; 166 m_endingSelection = selection;
162 m_endingRootEditableElement = selection.rootEditableElement(); 167 m_endingRootEditableElement = selection.rootEditableElement();
(...skipping 21 matching lines...) Expand all
184 } 189 }
185 190
186 bool CompositeEditCommand::apply() 191 bool CompositeEditCommand::apply()
187 { 192 {
188 if (!endingSelection().isContentRichlyEditable()) { 193 if (!endingSelection().isContentRichlyEditable()) {
189 switch (inputType()) { 194 switch (inputType()) {
190 case InputEvent::InputType::InsertText: 195 case InputEvent::InputType::InsertText:
191 case InputEvent::InputType::InsertLineBreak: 196 case InputEvent::InputType::InsertLineBreak:
192 case InputEvent::InputType::InsertParagraph: 197 case InputEvent::InputType::InsertParagraph:
193 case InputEvent::InputType::InsertFromPaste: 198 case InputEvent::InputType::InsertFromPaste:
199 case InputEvent::InputType::InsertFromDrop:
194 case InputEvent::InputType::DeleteComposedCharacterForward: 200 case InputEvent::InputType::DeleteComposedCharacterForward:
195 case InputEvent::InputType::DeleteComposedCharacterBackward: 201 case InputEvent::InputType::DeleteComposedCharacterBackward:
196 case InputEvent::InputType::DeleteWordBackward: 202 case InputEvent::InputType::DeleteWordBackward:
197 case InputEvent::InputType::DeleteWordForward: 203 case InputEvent::InputType::DeleteWordForward:
198 case InputEvent::InputType::DeleteLineBackward: 204 case InputEvent::InputType::DeleteLineBackward:
199 case InputEvent::InputType::DeleteLineForward: 205 case InputEvent::InputType::DeleteLineForward:
200 case InputEvent::InputType::DeleteContentBackward: 206 case InputEvent::InputType::DeleteContentBackward:
201 case InputEvent::InputType::DeleteContentForward: 207 case InputEvent::InputType::DeleteContentForward:
202 case InputEvent::InputType::DeleteByCut: 208 case InputEvent::InputType::DeleteByCut:
203 case InputEvent::InputType::Drag: 209 case InputEvent::InputType::DeleteByDrag:
204 case InputEvent::InputType::SetWritingDirection: 210 case InputEvent::InputType::SetWritingDirection:
205 case InputEvent::InputType::None: 211 case InputEvent::InputType::None:
206 break; 212 break;
207 default: 213 default:
208 NOTREACHED(); 214 NOTREACHED();
209 return false; 215 return false;
210 } 216 }
211 } 217 }
212 ensureComposition(); 218 ensureComposition();
213 219
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
284 command->setParent(this); 290 command->setParent(this);
285 if (selection != command->endingSelection()) { 291 if (selection != command->endingSelection()) {
286 command->setStartingSelection(selection); 292 command->setStartingSelection(selection);
287 command->setEndingSelection(selection); 293 command->setEndingSelection(selection);
288 } 294 }
289 command->doApply(editingState); 295 command->doApply(editingState);
290 if (!editingState->isAborted()) 296 if (!editingState->isAborted())
291 m_commands.append(command); 297 m_commands.append(command);
292 } 298 }
293 299
300 void CompositeEditCommand::appendCommandToComposite(CompositeEditCommand* comman d)
yosin_UTC9 2016/09/28 04:19:03 Good invention! We can implement Undo/Redo for dra
chongz 2016/09/29 02:36:22 Thanks! :>
301 {
302 ensureComposition()->append(command->ensureComposition());
303 command->setParent(this);
304 m_commands.append(command);
305 }
306
294 void CompositeEditCommand::applyStyle(const EditingStyle* style, EditingState* e ditingState) 307 void CompositeEditCommand::applyStyle(const EditingStyle* style, EditingState* e ditingState)
295 { 308 {
296 applyCommandToComposite(ApplyStyleCommand::create(document(), style, InputEv ent::InputType::ChangeAttributes), editingState); 309 applyCommandToComposite(ApplyStyleCommand::create(document(), style, InputEv ent::InputType::ChangeAttributes), editingState);
297 } 310 }
298 311
299 void CompositeEditCommand::applyStyle(const EditingStyle* style, const Position& start, const Position& end, EditingState* editingState) 312 void CompositeEditCommand::applyStyle(const EditingStyle* style, const Position& start, const Position& end, EditingState* editingState)
300 { 313 {
301 applyCommandToComposite(ApplyStyleCommand::create(document(), style, start, end), editingState); 314 applyCommandToComposite(ApplyStyleCommand::create(document(), style, start, end), editingState);
302 } 315 }
303 316
(...skipping 1353 matching lines...) Expand 10 before | Expand all | Expand 10 after
1657 } 1670 }
1658 1671
1659 DEFINE_TRACE(CompositeEditCommand) 1672 DEFINE_TRACE(CompositeEditCommand)
1660 { 1673 {
1661 visitor->trace(m_commands); 1674 visitor->trace(m_commands);
1662 visitor->trace(m_composition); 1675 visitor->trace(m_composition);
1663 EditCommand::trace(visitor); 1676 EditCommand::trace(visitor);
1664 } 1677 }
1665 1678
1666 } // namespace blink 1679 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698