OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2005 Apple Computer, Inc. All rights reserved. | 2 * Copyright (C) 2005 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 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
105 { | 105 { |
106 Node* startSpecialContainer = 0; | 106 Node* startSpecialContainer = 0; |
107 Node* endSpecialContainer = 0; | 107 Node* endSpecialContainer = 0; |
108 | 108 |
109 start = m_selectionToDelete.start(); | 109 start = m_selectionToDelete.start(); |
110 end = m_selectionToDelete.end(); | 110 end = m_selectionToDelete.end(); |
111 | 111 |
112 // For HRs, we'll get a position at (HR,1) when hitting delete from the begi
nning of the previous line, or (HR,0) when forward deleting, | 112 // For HRs, we'll get a position at (HR,1) when hitting delete from the begi
nning of the previous line, or (HR,0) when forward deleting, |
113 // but in these cases, we want to delete it, so manually expand the selectio
n | 113 // but in these cases, we want to delete it, so manually expand the selectio
n |
114 if (start.deprecatedNode()->hasTagName(hrTag)) | 114 if (start.deprecatedNode()->hasTagName(hrTag)) |
115 start = positionBeforeNode(start.deprecatedNode()); | 115 start = positionBeforeNode(*start.deprecatedNode()); |
116 else if (end.deprecatedNode()->hasTagName(hrTag)) | 116 else if (end.deprecatedNode()->hasTagName(hrTag)) |
117 end = positionAfterNode(end.deprecatedNode()); | 117 end = positionAfterNode(*end.deprecatedNode()); |
118 | 118 |
119 // FIXME: This is only used so that moveParagraphs can avoid the bugs in spe
cial element expansion. | 119 // FIXME: This is only used so that moveParagraphs can avoid the bugs in spe
cial element expansion. |
120 if (!m_expandForSpecialElements) | 120 if (!m_expandForSpecialElements) |
121 return; | 121 return; |
122 | 122 |
123 while (1) { | 123 while (1) { |
124 startSpecialContainer = 0; | 124 startSpecialContainer = 0; |
125 endSpecialContainer = 0; | 125 endSpecialContainer = 0; |
126 | 126 |
127 Position s = positionBeforeContainingSpecialElement(start, &startSpecial
Container); | 127 Position s = positionBeforeContainingSpecialElement(start, &startSpecial
Container); |
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
308 bool upstreamStartIsBR = nodeAfterUpstreamStart->hasTagName(brTag); | 308 bool upstreamStartIsBR = nodeAfterUpstreamStart->hasTagName(brTag); |
309 bool downstreamStartIsBR = nodeAfterDownstreamStart->hasTagName(brTag); | 309 bool downstreamStartIsBR = nodeAfterDownstreamStart->hasTagName(brTag); |
310 bool isBROnLineByItself = upstreamStartIsBR && downstreamStartIsBR && nodeAf
terDownstreamStart == nodeAfterUpstreamEnd; | 310 bool isBROnLineByItself = upstreamStartIsBR && downstreamStartIsBR && nodeAf
terDownstreamStart == nodeAfterUpstreamEnd; |
311 if (isBROnLineByItself) { | 311 if (isBROnLineByItself) { |
312 removeNode(nodeAfterDownstreamStart); | 312 removeNode(nodeAfterDownstreamStart); |
313 return true; | 313 return true; |
314 } | 314 } |
315 | 315 |
316 // FIXME: This code doesn't belong in here. | 316 // FIXME: This code doesn't belong in here. |
317 // We detect the case where the start is an empty line consisting of BR not
wrapped in a block element. | 317 // We detect the case where the start is an empty line consisting of BR not
wrapped in a block element. |
318 if (upstreamStartIsBR && downstreamStartIsBR && !(isStartOfBlock(VisiblePosi
tion(positionBeforeNode(nodeAfterUpstreamStart))) && isEndOfBlock(VisiblePositio
n(positionAfterNode(nodeAfterUpstreamStart))))) { | 318 if (upstreamStartIsBR && downstreamStartIsBR && !(isStartOfBlock(VisiblePosi
tion(positionBeforeNode(*nodeAfterUpstreamStart))) && isEndOfBlock(VisiblePositi
on(positionAfterNode(*nodeAfterUpstreamStart))))) { |
319 m_startsAtEmptyLine = true; | 319 m_startsAtEmptyLine = true; |
320 m_endingPosition = m_downstreamEnd; | 320 m_endingPosition = m_downstreamEnd; |
321 } | 321 } |
322 | 322 |
323 return false; | 323 return false; |
324 } | 324 } |
325 | 325 |
326 static Position firstEditablePositionInNode(Node* node) | 326 static Position firstEditablePositionInNode(Node* node) |
327 { | 327 { |
328 ASSERT(node); | 328 ASSERT(node); |
(...skipping 527 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
856 | 856 |
857 // Normally deletion doesn't preserve the typing style that was present before i
t. For example, | 857 // Normally deletion doesn't preserve the typing style that was present before i
t. For example, |
858 // type a character, Bold, then delete the character and start typing. The Bold
typing style shouldn't | 858 // type a character, Bold, then delete the character and start typing. The Bold
typing style shouldn't |
859 // stick around. Deletion should preserve a typing style that *it* sets, howeve
r. | 859 // stick around. Deletion should preserve a typing style that *it* sets, howeve
r. |
860 bool DeleteSelectionCommand::preservesTypingStyle() const | 860 bool DeleteSelectionCommand::preservesTypingStyle() const |
861 { | 861 { |
862 return m_typingStyle; | 862 return m_typingStyle; |
863 } | 863 } |
864 | 864 |
865 } // namespace WebCore | 865 } // namespace WebCore |
OLD | NEW |