Index: third_party/WebKit/WebCore/editing/TypingCommand.cpp |
=================================================================== |
--- third_party/WebKit/WebCore/editing/TypingCommand.cpp (revision 9310) |
+++ third_party/WebKit/WebCore/editing/TypingCommand.cpp (working copy) |
@@ -417,15 +417,9 @@ |
selectionToDelete = selection.selection(); |
- if (granularity == CharacterGranularity && selectionToDelete.end().offset() - selectionToDelete.start().offset() > 1) { |
- // When we delete a ligature consisting of multiple Unicode characters with a backspace key, |
- // we should not delete the ligature but delete only its last characeter. To check we are deleting |
- // a ligature, we retrieve the previous position of the caret and count the number of |
- // characters to be deleted. |
- // To prevent from calculating the previous position every time when pressing a backspace key, |
- // we retrieve the previous position only when the given selection consists of two or more characters. |
- if (selectionToDelete.end().offset() - selectionToDelete.end().previous(UsingComposedCharacters).offset() > 1) |
- selectionToDelete.setWithoutValidation(selectionToDelete.end(), selectionToDelete.end().previous(NotUsingComposedCharacters)); |
+ if (granularity == CharacterGranularity && selectionToDelete.end().node() == selectionToDelete.start().node() && selectionToDelete.end().offset() - selectionToDelete.start().offset() > 1) { |
+ // If there are multiple Unicode code points to be deleted, adjust the range to match platform conventions. |
+ selectionToDelete.setWithoutValidation(selectionToDelete.end(), selectionToDelete.end().previous(BackwardDeletion)); |
} |
if (!startingSelection().isRange() || selectionToDelete.base() != startingSelection().start()) |