Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright (C) 2005, 2006 Apple Computer, Inc. All rights reserved. | 2 * Copyright (C) 2005, 2006 Apple Computer, 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 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 74 // For now, we return to avoid a crash. https://bugs.webkit.org/show_bug.cg i?id=40342 | 74 // For now, we return to avoid a crash. https://bugs.webkit.org/show_bug.cg i?id=40342 |
| 75 if (caret.isNull()) | 75 if (caret.isNull()) |
| 76 return; | 76 return; |
| 77 | 77 |
| 78 Position pos(caret.deepEquivalent()); | 78 Position pos(caret.deepEquivalent()); |
| 79 | 79 |
| 80 pos = positionAvoidingSpecialElementBoundary(pos); | 80 pos = positionAvoidingSpecialElementBoundary(pos); |
| 81 | 81 |
| 82 pos = positionOutsideTabSpan(pos); | 82 pos = positionOutsideTabSpan(pos); |
| 83 | 83 |
| 84 RefPtr<Node> nodeToInsert; | 84 RefPtrWillBeRawPtr<Node> nodeToInsert; |
|
haraken
2014/05/26 02:36:12
= nullptr;
sof
2014/05/28 08:31:35
Complied.
| |
| 85 if (shouldUseBreakElement(pos)) | 85 if (shouldUseBreakElement(pos)) |
| 86 nodeToInsert = createBreakElement(document()); | 86 nodeToInsert = createBreakElement(document()); |
| 87 else | 87 else |
| 88 nodeToInsert = document().createTextNode("\n"); | 88 nodeToInsert = document().createTextNode("\n"); |
| 89 | 89 |
| 90 // FIXME: Need to merge text nodes when inserting just after or before text. | 90 // FIXME: Need to merge text nodes when inserting just after or before text. |
| 91 | 91 |
| 92 if (isEndOfParagraph(caret) && !lineBreakExistsAtVisiblePosition(caret)) { | 92 if (isEndOfParagraph(caret) && !lineBreakExistsAtVisiblePosition(caret)) { |
| 93 bool needExtraLineBreak = !isHTMLHRElement(*pos.deprecatedNode()) && !is HTMLTableElement(*pos.deprecatedNode()); | 93 bool needExtraLineBreak = !isHTMLHRElement(*pos.deprecatedNode()) && !is HTMLTableElement(*pos.deprecatedNode()); |
| 94 | 94 |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 134 insertNodeAt(nbspNode.get(), positionBeforeTextNode); | 134 insertNodeAt(nbspNode.get(), positionBeforeTextNode); |
| 135 endingPosition = firstPositionInNode(nbspNode.get()); | 135 endingPosition = firstPositionInNode(nbspNode.get()); |
| 136 } | 136 } |
| 137 } | 137 } |
| 138 | 138 |
| 139 setEndingSelection(VisibleSelection(endingPosition, DOWNSTREAM, endingSe lection().isDirectional())); | 139 setEndingSelection(VisibleSelection(endingPosition, DOWNSTREAM, endingSe lection().isDirectional())); |
| 140 } | 140 } |
| 141 | 141 |
| 142 // Handle the case where there is a typing style. | 142 // Handle the case where there is a typing style. |
| 143 | 143 |
| 144 RefPtr<EditingStyle> typingStyle = document().frame()->selection().typingSty le(); | 144 RefPtrWillBeRawPtr<EditingStyle> typingStyle = document().frame()->selection ().typingStyle(); |
| 145 | 145 |
| 146 if (typingStyle && !typingStyle->isEmpty()) { | 146 if (typingStyle && !typingStyle->isEmpty()) { |
| 147 // Apply the typing style to the inserted line break, so that if the sel ection | 147 // Apply the typing style to the inserted line break, so that if the sel ection |
| 148 // leaves and then comes back, new input will have the right style. | 148 // leaves and then comes back, new input will have the right style. |
| 149 // FIXME: We shouldn't always apply the typing style to the line break h ere, | 149 // FIXME: We shouldn't always apply the typing style to the line break h ere, |
| 150 // see <rdar://problem/5794462>. | 150 // see <rdar://problem/5794462>. |
| 151 applyStyle(typingStyle.get(), firstPositionInOrBeforeNode(nodeToInsert.g et()), lastPositionInOrAfterNode(nodeToInsert.get())); | 151 applyStyle(typingStyle.get(), firstPositionInOrBeforeNode(nodeToInsert.g et()), lastPositionInOrAfterNode(nodeToInsert.get())); |
| 152 // Even though this applyStyle operates on a Range, it still sets an end ingSelection(). | 152 // Even though this applyStyle operates on a Range, it still sets an end ingSelection(). |
| 153 // It tries to set a VisibleSelection around the content it operated on. So, that VisibleSelection | 153 // It tries to set a VisibleSelection around the content it operated on. So, that VisibleSelection |
| 154 // will either (a) select the line break we inserted, or it will (b) be a caret just | 154 // will either (a) select the line break we inserted, or it will (b) be a caret just |
| 155 // before the line break (if the line break is at the end of a block it isn't selectable). | 155 // before the line break (if the line break is at the end of a block it isn't selectable). |
| 156 // So, this next call sets the endingSelection() to a caret just after t he line break | 156 // So, this next call sets the endingSelection() to a caret just after t he line break |
| 157 // that we inserted, or just before it if it's at the end of a block. | 157 // that we inserted, or just before it if it's at the end of a block. |
| 158 setEndingSelection(endingSelection().visibleEnd()); | 158 setEndingSelection(endingSelection().visibleEnd()); |
| 159 } | 159 } |
| 160 | 160 |
| 161 rebalanceWhitespace(); | 161 rebalanceWhitespace(); |
| 162 } | 162 } |
| 163 | 163 |
| 164 } | 164 } |
| OLD | NEW |