| OLD | NEW |
| 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 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 103 lastTypingCommand->deleteSelection(options & SmartDelete); | 103 lastTypingCommand->deleteSelection(options & SmartDelete); |
| 104 return; | 104 return; |
| 105 } | 105 } |
| 106 | 106 |
| 107 TypingCommand::create(document, DeleteSelection, "", options)->apply(); | 107 TypingCommand::create(document, DeleteSelection, "", options)->apply(); |
| 108 } | 108 } |
| 109 | 109 |
| 110 void TypingCommand::deleteKeyPressed(Document& document, Options options, TextGr
anularity granularity) | 110 void TypingCommand::deleteKeyPressed(Document& document, Options options, TextGr
anularity granularity) |
| 111 { | 111 { |
| 112 if (granularity == CharacterGranularity) { | 112 if (granularity == CharacterGranularity) { |
| 113 if (RefPtr<TypingCommand> lastTypingCommand = lastTypingCommandIfStillOp
enForTyping(document.frame())) { | 113 Frame* frame = document.frame(); |
| 114 updateSelectionIfDifferentFromCurrentSelection(lastTypingCommand.get
(), document.frame()); | 114 if (RefPtr<TypingCommand> lastTypingCommand = lastTypingCommandIfStillOp
enForTyping(frame)) { |
| 115 lastTypingCommand->setShouldPreventSpellChecking(options & PreventSp
ellChecking); | 115 // If the last typing command is not Delete, open a new typing comma
nd. |
| 116 lastTypingCommand->deleteKeyPressed(granularity, options & KillRing)
; | 116 // We need to group continuous delete commands alone in a single typ
ing command. |
| 117 return; | 117 if (lastTypingCommand->commandTypeOfOpenCommand() == DeleteKey) { |
| 118 updateSelectionIfDifferentFromCurrentSelection(lastTypingCommand
.get(), frame); |
| 119 lastTypingCommand->setShouldPreventSpellChecking(options & Preve
ntSpellChecking); |
| 120 lastTypingCommand->deleteKeyPressed(granularity, options & KillR
ing); |
| 121 return; |
| 122 } |
| 118 } | 123 } |
| 119 } | 124 } |
| 120 | 125 |
| 121 TypingCommand::create(document, DeleteKey, "", options, granularity)->apply(
); | 126 TypingCommand::create(document, DeleteKey, "", options, granularity)->apply(
); |
| 122 } | 127 } |
| 123 | 128 |
| 124 void TypingCommand::forwardDeleteKeyPressed(Document& document, Options options,
TextGranularity granularity) | 129 void TypingCommand::forwardDeleteKeyPressed(Document& document, Options options,
TextGranularity granularity) |
| 125 { | 130 { |
| 126 // FIXME: Forward delete in TextEdit appears to open and close a new typing
command. | 131 // FIXME: Forward delete in TextEdit appears to open and close a new typing
command. |
| 127 Frame* frame = document.frame(); | |
| 128 if (granularity == CharacterGranularity) { | 132 if (granularity == CharacterGranularity) { |
| 133 Frame* frame = document.frame(); |
| 129 if (RefPtr<TypingCommand> lastTypingCommand = lastTypingCommandIfStillOp
enForTyping(frame)) { | 134 if (RefPtr<TypingCommand> lastTypingCommand = lastTypingCommandIfStillOp
enForTyping(frame)) { |
| 130 updateSelectionIfDifferentFromCurrentSelection(lastTypingCommand.get
(), frame); | 135 updateSelectionIfDifferentFromCurrentSelection(lastTypingCommand.get
(), frame); |
| 131 lastTypingCommand->setShouldPreventSpellChecking(options & PreventSp
ellChecking); | 136 lastTypingCommand->setShouldPreventSpellChecking(options & PreventSp
ellChecking); |
| 132 lastTypingCommand->forwardDeleteKeyPressed(granularity, options & Ki
llRing); | 137 lastTypingCommand->forwardDeleteKeyPressed(granularity, options & Ki
llRing); |
| 133 return; | 138 return; |
| 134 } | 139 } |
| 135 } | 140 } |
| 136 | 141 |
| 137 TypingCommand::create(document, ForwardDeleteKey, "", options, granularity)-
>apply(); | 142 TypingCommand::create(document, ForwardDeleteKey, "", options, granularity)-
>apply(); |
| 138 } | 143 } |
| (...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 304 } | 309 } |
| 305 } | 310 } |
| 306 | 311 |
| 307 void TypingCommand::typingAddedToOpenCommand(ETypingCommand commandTypeForAddedT
yping) | 312 void TypingCommand::typingAddedToOpenCommand(ETypingCommand commandTypeForAddedT
yping) |
| 308 { | 313 { |
| 309 Frame* frame = document().frame(); | 314 Frame* frame = document().frame(); |
| 310 if (!frame) | 315 if (!frame) |
| 311 return; | 316 return; |
| 312 | 317 |
| 313 updatePreservesTypingStyle(commandTypeForAddedTyping); | 318 updatePreservesTypingStyle(commandTypeForAddedTyping); |
| 319 updateCommandTypeOfOpenCommand(commandTypeForAddedTyping); |
| 314 | 320 |
| 315 // The old spellchecking code requires that checking be done first, to preve
nt issues like that in 6864072, where <doesn't> is marked as misspelled. | 321 // The old spellchecking code requires that checking be done first, to preve
nt issues like that in 6864072, where <doesn't> is marked as misspelled. |
| 316 markMisspellingsAfterTyping(commandTypeForAddedTyping); | 322 markMisspellingsAfterTyping(commandTypeForAddedTyping); |
| 317 frame->editor().appliedEditing(this); | 323 frame->editor().appliedEditing(this); |
| 318 } | 324 } |
| 319 | 325 |
| 320 void TypingCommand::insertText(const String &text, bool selectInsertedText) | 326 void TypingCommand::insertText(const String &text, bool selectInsertedText) |
| 321 { | 327 { |
| 322 // FIXME: Need to implement selectInsertedText for cases where more than one
insert is involved. | 328 // FIXME: Need to implement selectInsertedText for cases where more than one
insert is involved. |
| 323 // This requires support from insertTextRunWithoutNewlines and insertParagra
phSeparator for extending | 329 // This requires support from insertTextRunWithoutNewlines and insertParagra
phSeparator for extending |
| (...skipping 285 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 609 ASSERT_NOT_REACHED(); | 615 ASSERT_NOT_REACHED(); |
| 610 m_preservesTypingStyle = false; | 616 m_preservesTypingStyle = false; |
| 611 } | 617 } |
| 612 | 618 |
| 613 bool TypingCommand::isTypingCommand() const | 619 bool TypingCommand::isTypingCommand() const |
| 614 { | 620 { |
| 615 return true; | 621 return true; |
| 616 } | 622 } |
| 617 | 623 |
| 618 } // namespace WebCore | 624 } // namespace WebCore |
| OLD | NEW |