| 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 704 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 715 void Editor::unappliedEditing(PassRefPtr<EditCommandComposition> cmd) | 715 void Editor::unappliedEditing(PassRefPtr<EditCommandComposition> cmd) |
| 716 { | 716 { |
| 717 EventQueueScope scope; | 717 EventQueueScope scope; |
| 718 m_frame.document()->updateLayout(); | 718 m_frame.document()->updateLayout(); |
| 719 | 719 |
| 720 dispatchEditableContentChangedEvents(cmd->startingRootEditableElement(), cmd
->endingRootEditableElement()); | 720 dispatchEditableContentChangedEvents(cmd->startingRootEditableElement(), cmd
->endingRootEditableElement()); |
| 721 | 721 |
| 722 VisibleSelection newSelection(cmd->startingSelection()); | 722 VisibleSelection newSelection(cmd->startingSelection()); |
| 723 changeSelectionAfterCommand(newSelection, FrameSelection::CloseTyping | Fram
eSelection::ClearTypingStyle); | 723 changeSelectionAfterCommand(newSelection, FrameSelection::CloseTyping | Fram
eSelection::ClearTypingStyle); |
| 724 | 724 |
| 725 m_lastEditCommand = 0; | 725 m_lastEditCommand = nullptr; |
| 726 if (UndoStack* undoStack = this->undoStack()) | 726 if (UndoStack* undoStack = this->undoStack()) |
| 727 undoStack->registerRedoStep(cmd); | 727 undoStack->registerRedoStep(cmd); |
| 728 respondToChangedContents(newSelection); | 728 respondToChangedContents(newSelection); |
| 729 } | 729 } |
| 730 | 730 |
| 731 void Editor::reappliedEditing(PassRefPtr<EditCommandComposition> cmd) | 731 void Editor::reappliedEditing(PassRefPtr<EditCommandComposition> cmd) |
| 732 { | 732 { |
| 733 EventQueueScope scope; | 733 EventQueueScope scope; |
| 734 m_frame.document()->updateLayout(); | 734 m_frame.document()->updateLayout(); |
| 735 | 735 |
| 736 dispatchEditableContentChangedEvents(cmd->startingRootEditableElement(), cmd
->endingRootEditableElement()); | 736 dispatchEditableContentChangedEvents(cmd->startingRootEditableElement(), cmd
->endingRootEditableElement()); |
| 737 | 737 |
| 738 VisibleSelection newSelection(cmd->endingSelection()); | 738 VisibleSelection newSelection(cmd->endingSelection()); |
| 739 changeSelectionAfterCommand(newSelection, FrameSelection::CloseTyping | Fram
eSelection::ClearTypingStyle); | 739 changeSelectionAfterCommand(newSelection, FrameSelection::CloseTyping | Fram
eSelection::ClearTypingStyle); |
| 740 | 740 |
| 741 m_lastEditCommand = 0; | 741 m_lastEditCommand = nullptr; |
| 742 if (UndoStack* undoStack = this->undoStack()) | 742 if (UndoStack* undoStack = this->undoStack()) |
| 743 undoStack->registerUndoStep(cmd); | 743 undoStack->registerUndoStep(cmd); |
| 744 respondToChangedContents(newSelection); | 744 respondToChangedContents(newSelection); |
| 745 } | 745 } |
| 746 | 746 |
| 747 PassOwnPtr<Editor> Editor::create(Frame& frame) | 747 PassOwnPtr<Editor> Editor::create(Frame& frame) |
| 748 { | 748 { |
| 749 return adoptPtr(new Editor(frame)); | 749 return adoptPtr(new Editor(frame)); |
| 750 } | 750 } |
| 751 | 751 |
| (...skipping 372 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1124 | 1124 |
| 1125 m_frame.selection().setSelection(VisibleSelection(resultRange.get(), DOWNSTR
EAM)); | 1125 m_frame.selection().setSelection(VisibleSelection(resultRange.get(), DOWNSTR
EAM)); |
| 1126 m_frame.selection().revealSelection(); | 1126 m_frame.selection().revealSelection(); |
| 1127 return true; | 1127 return true; |
| 1128 } | 1128 } |
| 1129 | 1129 |
| 1130 PassRefPtr<Range> Editor::findStringAndScrollToVisible(const String& target, Ran
ge* previousMatch, FindOptions options) | 1130 PassRefPtr<Range> Editor::findStringAndScrollToVisible(const String& target, Ran
ge* previousMatch, FindOptions options) |
| 1131 { | 1131 { |
| 1132 RefPtr<Range> nextMatch = rangeOfString(target, previousMatch, options); | 1132 RefPtr<Range> nextMatch = rangeOfString(target, previousMatch, options); |
| 1133 if (!nextMatch) | 1133 if (!nextMatch) |
| 1134 return 0; | 1134 return nullptr; |
| 1135 | 1135 |
| 1136 nextMatch->firstNode()->renderer()->scrollRectToVisible(nextMatch->boundingB
ox(), | 1136 nextMatch->firstNode()->renderer()->scrollRectToVisible(nextMatch->boundingB
ox(), |
| 1137 ScrollAlignment::alignCenterIfNeeded, ScrollAlignment::alignCenterIfNeed
ed); | 1137 ScrollAlignment::alignCenterIfNeeded, ScrollAlignment::alignCenterIfNeed
ed); |
| 1138 | 1138 |
| 1139 return nextMatch.release(); | 1139 return nextMatch.release(); |
| 1140 } | 1140 } |
| 1141 | 1141 |
| 1142 PassRefPtr<Range> Editor::rangeOfString(const String& target, Range* referenceRa
nge, FindOptions options) | 1142 PassRefPtr<Range> Editor::rangeOfString(const String& target, Range* referenceRa
nge, FindOptions options) |
| 1143 { | 1143 { |
| 1144 if (target.isEmpty()) | 1144 if (target.isEmpty()) |
| 1145 return 0; | 1145 return nullptr; |
| 1146 | 1146 |
| 1147 // Start from an edge of the reference range, if there's a reference range t
hat's not in shadow content. Which edge | 1147 // Start from an edge of the reference range, if there's a reference range t
hat's not in shadow content. Which edge |
| 1148 // is used depends on whether we're searching forward or backward, and wheth
er startInSelection is set. | 1148 // is used depends on whether we're searching forward or backward, and wheth
er startInSelection is set. |
| 1149 RefPtr<Range> searchRange(rangeOfContents(m_frame.document())); | 1149 RefPtr<Range> searchRange(rangeOfContents(m_frame.document())); |
| 1150 | 1150 |
| 1151 bool forward = !(options & Backwards); | 1151 bool forward = !(options & Backwards); |
| 1152 bool startInReferenceRange = referenceRange && (options & StartInSelection); | 1152 bool startInReferenceRange = referenceRange && (options & StartInSelection); |
| 1153 if (referenceRange) { | 1153 if (referenceRange) { |
| 1154 if (forward) | 1154 if (forward) |
| 1155 searchRange->setStart(startInReferenceRange ? referenceRange->startP
osition() : referenceRange->endPosition()); | 1155 searchRange->setStart(startInReferenceRange ? referenceRange->startP
osition() : referenceRange->endPosition()); |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1200 // If we didn't find anything and we're wrapping, search again in the entire
document (this will | 1200 // If we didn't find anything and we're wrapping, search again in the entire
document (this will |
| 1201 // redundantly re-search the area already searched in some cases). | 1201 // redundantly re-search the area already searched in some cases). |
| 1202 if (resultRange->collapsed(ASSERT_NO_EXCEPTION) && options & WrapAround) { | 1202 if (resultRange->collapsed(ASSERT_NO_EXCEPTION) && options & WrapAround) { |
| 1203 searchRange = rangeOfContents(m_frame.document()); | 1203 searchRange = rangeOfContents(m_frame.document()); |
| 1204 resultRange = findPlainText(searchRange.get(), target, options); | 1204 resultRange = findPlainText(searchRange.get(), target, options); |
| 1205 // We used to return false here if we ended up with the same range that
we started with | 1205 // We used to return false here if we ended up with the same range that
we started with |
| 1206 // (e.g., the reference range was already the only instance of this text
). But we decided that | 1206 // (e.g., the reference range was already the only instance of this text
). But we decided that |
| 1207 // this should be a success case instead, so we'll just fall through in
that case. | 1207 // this should be a success case instead, so we'll just fall through in
that case. |
| 1208 } | 1208 } |
| 1209 | 1209 |
| 1210 return resultRange->collapsed(ASSERT_NO_EXCEPTION) ? 0 : resultRange.release
(); | 1210 return resultRange->collapsed(ASSERT_NO_EXCEPTION) ? nullptr : resultRange.r
elease(); |
| 1211 } | 1211 } |
| 1212 | 1212 |
| 1213 void Editor::setMarkedTextMatchesAreHighlighted(bool flag) | 1213 void Editor::setMarkedTextMatchesAreHighlighted(bool flag) |
| 1214 { | 1214 { |
| 1215 if (flag == m_areMarkedTextMatchesHighlighted) | 1215 if (flag == m_areMarkedTextMatchesHighlighted) |
| 1216 return; | 1216 return; |
| 1217 | 1217 |
| 1218 m_areMarkedTextMatchesHighlighted = flag; | 1218 m_areMarkedTextMatchesHighlighted = flag; |
| 1219 m_frame.document()->markers()->repaintMarkers(DocumentMarker::TextMatch); | 1219 m_frame.document()->markers()->repaintMarkers(DocumentMarker::TextMatch); |
| 1220 } | 1220 } |
| (...skipping 10 matching lines...) Expand all Loading... |
| 1231 return m_frame.spellChecker(); | 1231 return m_frame.spellChecker(); |
| 1232 } | 1232 } |
| 1233 | 1233 |
| 1234 void Editor::toggleOverwriteModeEnabled() | 1234 void Editor::toggleOverwriteModeEnabled() |
| 1235 { | 1235 { |
| 1236 m_overwriteModeEnabled = !m_overwriteModeEnabled; | 1236 m_overwriteModeEnabled = !m_overwriteModeEnabled; |
| 1237 frame().selection().setShouldShowBlockCursor(m_overwriteModeEnabled); | 1237 frame().selection().setShouldShowBlockCursor(m_overwriteModeEnabled); |
| 1238 } | 1238 } |
| 1239 | 1239 |
| 1240 } // namespace WebCore | 1240 } // namespace WebCore |
| OLD | NEW |