From bac2fdb53dd22a6b2f513841ddf2fe579937df2c Mon Sep 17 00:00:00 2001 From: "mjudge%netscape.com" Date: Wed, 7 Aug 2002 19:48:42 +0000 Subject: [PATCH] fix for 127321. r=brade sr=smfr. Fix for word jumping getting stuck on punctuation. git-svn-id: svn://10.0.0.236/trunk@126678 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/layout/generic/nsTextTransformer.cpp | 7 ++++++- mozilla/layout/html/base/src/nsTextTransformer.cpp | 7 ++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/mozilla/layout/generic/nsTextTransformer.cpp b/mozilla/layout/generic/nsTextTransformer.cpp index 6d4b2f7c164..23d9db35345 100644 --- a/mozilla/layout/generic/nsTextTransformer.cpp +++ b/mozilla/layout/generic/nsTextTransformer.cpp @@ -411,7 +411,12 @@ nsTextTransformer::ScanNormalAsciiText_F_ForWordBreak(PRInt32* aWordLen, } else { bp2 += mBufferPos; } + PRBool readingAlphaNumeric = PR_TRUE; //only used in sWordSelectStopAtPunctuation + //we must know if we are starting in alpha numerics. + if (sWordSelectStopAtPunctuation && offset < fragLen) + readingAlphaNumeric = isalnum((unsigned char)*cp); + for (; offset < fragLen && !breakAfterThis; offset++) { unsigned char ch = *cp++; if (CH_NBSP == ch) { @@ -425,7 +430,7 @@ nsTextTransformer::ScanNormalAsciiText_F_ForWordBreak(PRInt32* aWordLen, else if (XP_IS_SPACE(ch)) { break; } - else if (sWordSelectStopAtPunctuation && !isalnum(ch)) { + else if (sWordSelectStopAtPunctuation && ((readingAlphaNumeric && !isalnum(ch)) || (!readingAlphaNumeric && isalnum(ch)) )) { // on some platforms, punctuation breaks words too. break; } diff --git a/mozilla/layout/html/base/src/nsTextTransformer.cpp b/mozilla/layout/html/base/src/nsTextTransformer.cpp index 6d4b2f7c164..23d9db35345 100644 --- a/mozilla/layout/html/base/src/nsTextTransformer.cpp +++ b/mozilla/layout/html/base/src/nsTextTransformer.cpp @@ -411,7 +411,12 @@ nsTextTransformer::ScanNormalAsciiText_F_ForWordBreak(PRInt32* aWordLen, } else { bp2 += mBufferPos; } + PRBool readingAlphaNumeric = PR_TRUE; //only used in sWordSelectStopAtPunctuation + //we must know if we are starting in alpha numerics. + if (sWordSelectStopAtPunctuation && offset < fragLen) + readingAlphaNumeric = isalnum((unsigned char)*cp); + for (; offset < fragLen && !breakAfterThis; offset++) { unsigned char ch = *cp++; if (CH_NBSP == ch) { @@ -425,7 +430,7 @@ nsTextTransformer::ScanNormalAsciiText_F_ForWordBreak(PRInt32* aWordLen, else if (XP_IS_SPACE(ch)) { break; } - else if (sWordSelectStopAtPunctuation && !isalnum(ch)) { + else if (sWordSelectStopAtPunctuation && ((readingAlphaNumeric && !isalnum(ch)) || (!readingAlphaNumeric && isalnum(ch)) )) { // on some platforms, punctuation breaks words too. break; }