From fb5047f80ecec586e7bc16b138802b9c5a282a4a Mon Sep 17 00:00:00 2001 From: "leon.zhang%sun.com" Date: Wed, 11 Jun 2003 03:29:59 +0000 Subject: [PATCH] Bug 207936:[trunk] JA IME: cursor position is off before and after text is committed r=sfraser sr=kin git-svn-id: svn://10.0.0.236/trunk@143568 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/content/base/src/nsSelection.cpp | 9 ++++++++- mozilla/layout/generic/nsSelection.cpp | 9 ++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/mozilla/content/base/src/nsSelection.cpp b/mozilla/content/base/src/nsSelection.cpp index e7f3b2f256c..d3a6435b17d 100644 --- a/mozilla/content/base/src/nsSelection.cpp +++ b/mozilla/content/base/src/nsSelection.cpp @@ -5366,6 +5366,12 @@ nsTypedSelection::SetCanCacheFrameOffset(PRBool aCanCacheFrameOffset) mCachedOffsetForFrame->mCanCacheFrameOffset = aCanCacheFrameOffset; + // clean up cached frame when turn off cache + // fix bug 207936 + if (!aCanCacheFrameOffset) { + mCachedOffsetForFrame->mLastCaretFrame = nsnull; + } + return NS_OK; } @@ -5376,7 +5382,8 @@ nsTypedSelection::GetCachedFrameOffset(nsIFrame *aFrame, PRInt32 inOffset, nsPoi mCachedOffsetForFrame = new CachedOffsetForFrame; } - if (mCachedOffsetForFrame->mCanCacheFrameOffset && + if (mCachedOffsetForFrame->mCanCacheFrameOffset && + mCachedOffsetForFrame->mLastCaretFrame && (aFrame == mCachedOffsetForFrame->mLastCaretFrame) && (inOffset == mCachedOffsetForFrame->mLastContentOffset)) { diff --git a/mozilla/layout/generic/nsSelection.cpp b/mozilla/layout/generic/nsSelection.cpp index e7f3b2f256c..d3a6435b17d 100644 --- a/mozilla/layout/generic/nsSelection.cpp +++ b/mozilla/layout/generic/nsSelection.cpp @@ -5366,6 +5366,12 @@ nsTypedSelection::SetCanCacheFrameOffset(PRBool aCanCacheFrameOffset) mCachedOffsetForFrame->mCanCacheFrameOffset = aCanCacheFrameOffset; + // clean up cached frame when turn off cache + // fix bug 207936 + if (!aCanCacheFrameOffset) { + mCachedOffsetForFrame->mLastCaretFrame = nsnull; + } + return NS_OK; } @@ -5376,7 +5382,8 @@ nsTypedSelection::GetCachedFrameOffset(nsIFrame *aFrame, PRInt32 inOffset, nsPoi mCachedOffsetForFrame = new CachedOffsetForFrame; } - if (mCachedOffsetForFrame->mCanCacheFrameOffset && + if (mCachedOffsetForFrame->mCanCacheFrameOffset && + mCachedOffsetForFrame->mLastCaretFrame && (aFrame == mCachedOffsetForFrame->mLastCaretFrame) && (inOffset == mCachedOffsetForFrame->mLastContentOffset)) {