+2005-02-19 Chris Blumenberg <cblu@apple.com>
+
+ Fixed: <rdar://problem/3978461> smart paste is broken
+
+ Reviewed by kevin.
+
+ * khtml/editing/htmlediting.cpp:
+ (khtml::ReplaceSelectionCommand::doApply): properly check for leading and trailing whitespace. These checks were incorrectly reversed. Also check if we're pasting at the beginning or end of a line. We should not insert spaces in either case.
+
2005-02-18 Adele Amchan <adele@apple.com>
Reviewed by Darin.
// FIXME: We need the affinity for startPos and endPos, but Position::downstream
// and Position::upstream do not give it
if (m_smartReplace) {
- addLeadingSpace = startPos.leadingWhitespacePosition(VP_DEFAULT_AFFINITY).isNotNull();
+ VisiblePosition visiblePos = VisiblePosition(startPos, VP_DEFAULT_AFFINITY);
+ assert(visiblePos.isNotNull());
+ addLeadingSpace = startPos.leadingWhitespacePosition(VP_DEFAULT_AFFINITY).isNull() && !isFirstVisiblePositionOnLine(visiblePos);
if (addLeadingSpace) {
- QChar previousChar = VisiblePosition(startPos, VP_DEFAULT_AFFINITY).previous().character();
+ QChar previousChar = visiblePos.previous().character();
if (!previousChar.isNull()) {
addLeadingSpace = !part->isCharacterSmartReplaceExempt(previousChar, true);
}
}
- addTrailingSpace = endPos.trailingWhitespacePosition(VP_DEFAULT_AFFINITY).isNotNull();
+ addTrailingSpace = startPos.trailingWhitespacePosition(VP_DEFAULT_AFFINITY).isNull() && !isLastVisiblePositionOnLine(visiblePos);
if (addTrailingSpace) {
- QChar thisChar = VisiblePosition(endPos, VP_DEFAULT_AFFINITY).character();
+ QChar thisChar = visiblePos.character();
if (!thisChar.isNull()) {
addTrailingSpace = !part->isCharacterSmartReplaceExempt(thisChar, false);
}